Source development
Source mode keeps PostgreSQL in Docker while Go and Vite run on the host.
make setup installs the locked pnpm dependencies, starts PostgreSQL, applies migrations, and writes the core seed data.
Create the administrator interactively
For a first operator-led initialization, use the interactive command:
The email, tenant, display name, and locale come from AK_BOOTSTRAP_EMAIL, AK_BOOTSTRAP_TENANT_CODE, AK_BOOTSTRAP_TENANT_NAME, AK_BOOTSTRAP_DISPLAY_NAME, and AK_BOOTSTRAP_LOCALE in .env. The password must contain at least 12 characters and is read only from the current terminal, so it does not appear in command arguments or shell history.
Initialize through Core Seed with a password file (development only)
For repeatable local database rebuilds, seed core can read the initial password from a protected local file. The following flow does not put the password itself in an environment variable, command argument, or terminal output:
The default email is admin@appkernia.local; set AK_SEED_ADMIN_EMAIL on the same command to override it. development_admin=true in the successful output confirms that the administrator branch ran. Without AK_SEED_ADMIN_PASSWORD_FILE, Core Seed still writes permissions, menus, dictionaries, and configuration, but reports development_admin=false and does not create an administrator.
Observe these requirements:
- This path is accepted only when
AK_ENV=development. Other environments reject it; initialize production interactively from a controlled operator terminal. .secrets/is excluded from Git and the Docker build context, but the directory must remain0700and the file0600. Never copy the value into.env, issues, logs, screenshots, or chat messages.- The file is used only when the account is missing. Re-running Seed reconciles roles, permissions, and menus, but does not change an existing password.
- An existing account must be active, have a usable credential, and be an active member of the target tenant. Otherwise Seed fails instead of granting cross-tenant access.
- Remove the local password file after initialization when repeatable provisioning is no longer needed. If retained, continue to treat it as a secret and restrict backups, synchronization, and read access.
- Do not copy the password file into a Docker image. Use
make docker-bootstrap-adminfor Docker mode.
Start the backend in terminal 1:
Start Admin in terminal 2:
Open http://localhost:4173. Vite proxies /admin-api to 127.0.0.1:8080.
Run the repository gates:
This checks blueprints, i18n contracts, backend, Admin, and Mobile static rules. It is not Android, iOS, or HarmonyOS compilation or physical-device acceptance.
Scoped checks: