Setup

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:

ServiceEnables
PostHogProduct analytics and flags
Google AnalyticsWeb analytics
ResendOutbound email in production
StripePayments
BaseHubBlog and legal content
KnockIn-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.