Getting started

Needs Node 24, pnpm 11, Docker and GNU Make.

Make the app

A web app, with email sign-in, organizations and Stripe or Razorpay plans:

npx @haatlabs-core/cli create my-app --domain my-app.example --kind web

A Shopify app, which adds the embedded app in the Shopify admin and Shopify billing:

npx @haatlabs-core/cli create my-app --domain my-app.example --kind shopify

The name is lowercase letters and digits with single hyphens, 2 to 31 characters. The domain is where the app will live: its dashboard at app., its API at api. and its administrators' dashboard at admin. that domain. --no-install and --no-git leave out the install and the first commit.

Run it on your machine

cd my-app
make env Env=local          # writes .env.local from .env.example
make local-up Env=local     # Postgres, Redis and a mail catcher in Docker
make migrate Env=local
make seed-plans Env=local
make dev Env=local          # the api, the worker and the dashboards

Every make target that reads settings takes Env=<name> and reads .env.<name>; local is your machine. make help lists them all.

The example page

The dashboard's example page, "Find images", calls the haatlabs API. Put your RapidAPI key in .env.local as HAATLABS_API_KEY (the Basic plan is free).

Checks

make ci     # types, lint, formatting, unit tests, the deploy files and the integration tests

Next: kinds of app, then deploying.