Prerequisites
What you need before creating a kreogen project.
Required
Bun 1.3.14 or later. The template is developed against bun; pnpm and npm are supported, and the CLI rewrites the project for whichever you pick.
Node.js 22 or later. Some tooling in the chain is not bun-native.
Docker. Postgres, Redis, object
storage and a mail catcher all run in docker compose locally, so there is
nothing to install natively and nothing to sign up for.
Git. The CLI clones the template at a version tag.
Optional
Stripe CLI — forwards webhooks to
localhost:3002 while developing payments. bun dev --filter api starts the
listener automatically when it is installed.
Accounts
None are required to run the project. Every integration is optional and
disables cleanly when its key is absent, so you can start with bun run dev
and add services as you need them.
When you do want them:
| Service | Enables |
|---|---|
| PostHog | Product analytics and flags |
| Google Analytics | Web analytics |
| Resend | Outbound email in production |
| Stripe | Payments |
| BaseHub | Blog and legal content |
| Knock | In-app notifications |
Locally, MinIO stands in for object storage, so S3 is not needed during development.
Resend is the exception worth knowing about early, and the one you can skip.
Outbound mail goes through its HTTPS API in production; with no token,
@kreogen/auth delivers over SMTP to the Mailpit container in
docker-compose.yml instead, and you read the verification link at
localhost:8025. What you cannot skip is having one or
the other: email verification is required to sign in, so a sign-up with no
Resend token and no sink running fails outright. See
transactional email.
What you do need to decide
A domain layout. Authentication is simplest when the app and marketing site
share a registrable domain — app.example.com and example.com. Cookies stay
host-only, and there is no CORS to configure.
Splitting them across unrelated domains forces SameSite=None and full CORS,
which is a materially weaker posture and one that browser changes keep
eroding. Decide this before buying domains.