Skip to main content

Prerequisites

Use Bun 1.3.10 and Node 24. Keep secrets in local/deployment environment configuration; never commit credentials, prospect outputs or private workspace data.
The normal local app is http://127.0.0.1:3083/app/; the landing page is /. Development uses a Vite frontend and watched API process on the next port. PORT / ION_APP_PORT and ION_APP_API_PORT support isolated worktrees. Keep ION_APP_URL aligned with the local frontend origin and use a separate data directory. Manual previews do not require model credentials. Generative setup uses authoring credentials; automatic decisions need a configured decision provider; authoring memory requires its own integration. Leave email/notification credentials unset during local work unless that behavior is explicitly being exercised.

Required validation

The repository prefers lint/type checking and manual smoke checks and explicitly does not run automated tests. check:fix builds shared clients, formats the configured integration source and runs workspace typechecks. Packaging builds the application, marketing, extension and required runtime artifacts.

Documentation workflow

Edit MDX pages in apps/docs. The docs build regenerates references, validates content and links, and prepares a source package for Mintlify. Mintlify provides hosted search and Markdown exports.

Production package

apps/personalization/dist/standalone contains the portable service, static assets, runtime installer/snapshot bundles and generated migrations. Start it with bun start.mjs in a configured environment. The root Dockerfile builds the same package; Vite is a build tool, not a production server. Mintlify hosts documentation separately; the application’s /docs route redirects to it. The shared browser script can be released independently through bun run build:cdn; its API origin remains the application service.

Shared clients

Export adaptive contracts, shared UI and the client together. Keep version, source commit and SHA-256 provenance with the artifacts. Ion consumes them as a client; do not copy the server/database implementation into Ion.

Database changes

Run bun run db:generate from packages/personalization-server, inspect the generated migration and plan backward-compatible deployment. Retain the recovery volume and production backups. A local package success does not validate a production database migration or an external billing/identity integration. Source: root README, build scripts, Dockerfile.