This post is a sanitized build log showing how I went from idea → working prototype, including the prompts used and the concrete actions taken.
Note: This is a draft. It intentionally uses placeholders like hpde.example.com, LAN_IP, and ADMIN_EMAIL.
The goal
A modern, sleek web portal where HPDE drivers can:
- Track driving sessions (manual entry for v1)
- See event info for events they’re registered for
- View an event’s published schedule (often multi-day)
Constraints for the first prototype:
- Host it on a Linux server (Docker Compose)
- Put it behind an existing reverse proxy (Nginx Proxy Manager)
- Stub out auth + external integrations
Prompt 1 — Create a web-dev agent and build a working prototype
Prompt (sanitized):
- Create a portal for HPDE drivers to track track-day driving and show event info.
- Host it on Linux via Docker Compose.
- Stub auth/integrations; make the UI modern.
Actions taken:
- Built a Next.js + TypeScript app with Tailwind styling.
- Added Postgres + Prisma (migrations + seed data).
- Implemented pages: Login (demo), Dashboard, Sessions (manual entry), Events (register/cancel), Integrations (stub).
- Added an entrypoint that runs DB migrations + seed at startup.
Prompt 2 — Expose it via reverse proxy and pick a domain
Prompt (sanitized):
- Add it to the reverse proxy so it’s accessible.
- Use
hpde.example.com.
Actions taken:
- Checked for port conflicts on the host.
- Chose an available host port for the app.
Prompt 3 — Set up Nginx Proxy Manager (NPM)
Prompt (sanitized):
- Use a specific host port.
- Set up NPM for me.
Actions taken:
- Used the NPM API to create:
- a Proxy Host for
hpde.example.com
- a Let’s Encrypt certificate
- websocket support + forced SSL
The 502 gotcha (and fix)
Issue: 502 Bad Gateway after creating the proxy.
Causes & fixes:
1) App port mismatch → publish the chosen host port to container port 3000.
2) NPM runs in a container, so 127.0.0.1 refers to the NPM container, not the host.
- Fix: point upstream to
LAN_IP:PORT (or wire Docker networks appropriately).
Prompt 4 — Add per-event schedules (multi-day)
Prompt (sanitized):
- Add a schedule to each event (multi-day supported).
Actions taken:
- Added an
EventScheduleItem model tied to Event.
- Seeded example schedules (including multi-day).
- Updated event detail UI to display a schedule grouped by day.
Next upgrades
- Real auth (magic link/OAuth)
- Real event ingestion integrations
- Telemetry imports + charts