Documentation / Start building
Start a product
Use the complete starter when you want authentication, data, account controls, components, and development guidance already connected. Your new repository becomes an independent product with its own services and deployment.
1. Create your repository
Install Bun and the Node version recorded in .nvmrc. Open the Creator Core template, create a repository for your product, and clone that new repository. Its origin must point to your repository.
Use the latest published template release. Initialization checks the exact matching runtime before changing your project. The release history is the source of published versions.
2. Initialize the clean copy
Run these commands from the new repository root before installing dependencies or editing product files:
bun run init:product --name my-product --dry-run
bun run init:product --name my-product
Choose a lowercase product slug with single hyphens. The dry run explains the conversion. The real command verifies the release, pins and installs its public runtime, removes maintainer-only files, names the Worker and its self-reference binding, activates dependency updates, and switches product.config.json to your product.
Existing environment files are preserved. If installation is interrupted, fix connectivity and rerun the same command with the same name before making further edits. A completed second invocation makes no changes. Commit the initialized product, including bun.lock and .creator-core.json.
3. Create your service projects
Create your own Hexclave project and Convex development deployment. Configure your application's local and deployed origins as trusted domains in Hexclave. Select the sign-in providers your product needs and configure their provider credentials.
Supply these four values through secure preview settings or an ignored .env.local:
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_HEXCLAVE_PROJECT_ID | The single Hexclave project ID used by the frontend and backend |
HEXCLAVE_SECRET_SERVER_KEY | Server operations for that same Hexclave project |
NEXT_PUBLIC_CONVEX_URL | Your Convex development deployment URL |
CONVEX_DEPLOY_KEY | A development deploy key for that same deployment |
Use .env.example as the checklist. Never overwrite an existing environment file with the example. Your agent should ask for missing values through secure input; it should not invent credentials or substitute anonymous services. Service setup explains the complete contract.
4. Start the connected application
bun run dev:mode
Keep this command running. It securely configures the Convex auth environment, pushes backend functions, then starts Next after the first successful push. Backend edits keep syncing throughout development. The default frontend address is http://localhost:3000.
After initialization, ordinary dependency installs use:
bun install --frozen-lockfile
5. Verify a real flow
Open the application, sign in through hosted authentication, and confirm that you reach /app. Open account settings. Save a personal note, reload the page, confirm it returns from Convex, then remove it. An empty team list or unconfigured billing catalog is a valid starting state.
bun run check
bun run build:cloudflare
Automated checks validate the code; the signed-in browser flow validates your service configuration. Both matter.
6. Make it your product
Set your name and description in product.config.json or the existing NEXT_PUBLIC_PRODUCT_NAME and NEXT_PUBLIC_PRODUCT_DESCRIPTION overrides. The initialized product uses its own simple homepage; it does not advertise Creator Core as your business.
Build your routes and application data locally. Reuse the catalog's actual components, keep authorization inside Convex functions, and update previews alongside reusable UI. Start with agent guidance, architecture, and the design system.
7. Deploy when configured
Create your own Cloudflare Worker and configure the repository secrets and variables in deployment. The development setup is not a production backend launch: provision and configure the intended production services before serving real customers.
For an existing application, use component bundles or the runtime instead of running product initialization.