Project Notes
A permanent record of how this demo dashboard was built, what decisions shaped it, and what still needs to happen before deployment.
How we got here
This app was split out from a local-only portfolio dashboard at /Users/whittingtonwork/coding-projectsjw/portfolio-dashboard. The original project can read real local data and demo data. This project uses only the demo data and is safe for teaching.
The demo Numbers files were converted into a JSON seed artifact and loaded into Supabase. The local app can still fall back to that bundled seed data before Supabase is configured.
Current status
- Local app runs on port 3005.
- Supabase schema has been run.
- Demo data has been seeded into Supabase.
- Supabase, Finnhub, and admin token values are set locally.
- Vercel deployment is the next major setup step.
Data seed
- Equities
- 25
- Bond funds
- 3
- Individual bonds
- 1
- Crypto positions
- 2
- Cash positions
- 3
- Options positions
- 4
- Watchlist items
- 5
- Demo NAV
- $807,010
Important decisions
- Separate codebase from the original local dashboard.
- Supabase is the deployed source of truth.
- Public read access is acceptable because the data is demo-only.
- No Supabase Auth in this version.
- A shared admin token protects note saves and price updates.
- Price updates are manual through Finnhub, not scheduled.
- Notes are intentionally simple: one public note per stock symbol.
- No generative assistant integrations or generated summaries.
Friction log
- Supabase asks about GitHub during setup, but this project only uses Supabase for the database.
- The newer publishable/secret key UI differs from older anon/service-role examples.
- The project URL is based on the project ref and is less prominent than the keys.
- The app looked empty before Supabase env vars and seed data were ready, so a bundled local fallback was added.
- Next.js needs a restart after .env.local changes.
Useful commands
npm run devnpm run lintnpm run typechecknpm run buildnpm run verify:no-ainpm run seed:supabase