# Ona demo setup — Ghostfolio fork This fork is the target codebase for the **Apr 23 BlackRock deep-dive** demo. ## What this folder contains - [`automations.yaml`](automations.yaml) — Ona services for Postgres, Redis, the NestJS API, and the Angular client, plus manual `seed` and `dry-run-demo` tasks. ## What changed vs upstream 1. **`.devcontainer/devcontainer.json`** — new. Node 22 base image, Docker-in-Docker feature enabled (needed so `docker compose -f docker/docker-compose.dev.yml up` works for Postgres + Redis), ports forwarded, `postCreateCommand` wires up `.env` and npm install. 2. **`.devcontainer/post-create.sh`** — new. Seeds `.env` from `.env.dev`, replaces the `` placeholders with safe dev defaults, prepulls `postgres:15` / `redis:7` images, runs `npm ci`. Idempotent. 3. **`.ona/automations.yaml`** — new. Starts the stack on `postDevcontainerStart` / `postEnvironmentStart`. First boot runs `npm run database:setup` (schema + seed), marks it with `.ona/.db-initialized` so subsequent restarts skip re-seeding. ## How to bring it up 1. Open this repo in Ona. 2. Wait for the devcontainer build (DinD is heavy first time; subsequent opens use the prebuild cache). 3. `gitpod automations service list` — all three services should go `ready`. 4. Open the forwarded port `4200` → Ghostfolio UI. First user created gets `ADMIN`. ## Reset before a demo ``` gitpod automations task start seed ``` ## Notes for the demo day - Keep `5432` + `6379` forwarded but unadvertised. Port `4200` is the only UI. - The `.env` generated by post-create uses throwaway dev passwords. DO NOT commit a real `.env`. - If DinD is slow to come up on first boot, `gitpod automations service logs postgres-redis` tails the compose output.