Packages
33 packages, all at one version, under the Apache-2.0 licence. An app made with haatlabs create already depends on the ones it uses; each can also be used on its own.
Foundations
- @haatlabs-core/config-core: The environment variables every app reads, as zod shapes an app composes with its own.
- @haatlabs-core/errors: AppError, shared error codes and typed per-app codes with defineErrors.
- @haatlabs-core/logger: Pino logging with secrets scrubbed from every record.
- @haatlabs-core/observability: OpenTelemetry tracing with allowed attributes only, and trace context across processes.
Data and infrastructure
- @haatlabs-core/db-core: PostgreSQL and drizzle building blocks: shared columns, organizations, row-level security, audit logs.
- @haatlabs-core/queue: BullMQ work queues on Redis: publisher, retrying consumer and outbox relay.
- @haatlabs-core/rate-limit: A Redis token bucket shared by every process.
- @haatlabs-core/storage: S3-compatible object storage with every key scoped to its organization.
- @haatlabs-core/mailer: Send an app's email through a pluggable transport (SMTP and others).
NestJS
- @haatlabs-core/nest-common: What every NestJS API shares below authentication: errors, validation, health checks and the Fastify app setup.
- @haatlabs-core/nest-auth: NestJS sign-in by emailed code, sessions, API keys, roles and the guard every route goes through.
- @haatlabs-core/nest-billing: NestJS billing: plans, periods, metered usage, plan assignment and payment events applied once.
Billing and Shopify
- @haatlabs-core/billing: Payment gateways (Stripe, Razorpay, manual) and Shopify plan billing behind one interface.
- @haatlabs-core/shopify: Shopify for Node apps: OAuth, session tokens, the Admin GraphQL client, products, webhooks and billing.
AI and providers
- @haatlabs-core/ai: Text from an OpenAI-compatible chat endpoint, with retries, a rate limit and zod-checked answers.
- @haatlabs-core/providers: Retry, circuit breaker, rate and concurrency limits for calling outside services.
- @haatlabs-core/provider-amazon: Amazon search, products and suggestions as a ProductSource.
- @haatlabs-core/provider-shopify: Any Shopify store's public products as a ProductSource.
- @haatlabs-core/provider-image-search: Image and web search through SearXNG, Brave or SerpApi behind one SearchProvider.
- @haatlabs-core/provider-background: Background removal through a rembg service.
- @haatlabs-core/provider-vision: Vision checks and product descriptions on top of @haatlabs-core/ai.
- @haatlabs-core/services: The client for the Haatlabs API on RapidAPI: Amazon lookups, image search, background removal, AI and jobs.
Browser
- @haatlabs-core/ui: React components for an app's dashboard, styled by the app.
- @haatlabs-core/extension-ui: A browser extension's side panel: the app's brand, theme, header, notices and sign-in card.
- @haatlabs-core/extension-kit: The browser side of an extension's panel: the active tab, page reads, downloads, sign-in keys.
- @haatlabs-core/auth-contracts: Sign-in and API-key request and response schemas shared by an app's API and web pages.
- @haatlabs-core/admin-contracts: Request shapes and Ed25519 request signing for an app's admin API.
Tooling
- @haatlabs-core/cli: haatlabs: create a new app (Shopify, web or browser extension) and keep its shared files in step.
- @haatlabs-core/templates: The starter files and shared project files that @haatlabs-core/cli writes.
- @haatlabs-core/tsconfig: The TypeScript compiler settings Haatlabs projects build with.
- @haatlabs-core/eslint-config: typescript-eslint strict rules with any refused, as a flat config.
- @haatlabs-core/prettier-config: Prettier settings: single quotes, trailing commas, 100 columns.
- @haatlabs-core/vitest-config: Vitest settings for unit and integration tests.