mission brief (the objective)
Planning a trip with other people is two problems at once: where do we even start? and how do we agree on the route without a dozen messages crossing each other? Trip Planner — TravelApp — answers both. It drafts a first itinerary with AI, then hands the route over to the whole crew to edit together in real time.
The system splits cleanly into layers — API controllers, application services, domain models, and infrastructure persistence — so the interesting parts (AI generation and live collaboration) stay decoupled from the plumbing. The multi-destination route is the canonical model: every client edits the same shared document, and the server keeps it the single source of truth.
features (what's onboard)
- AI
Itinerary generation
Google Gemini drafts a starting itinerary from the trip's parameters — a first route the crew can refine rather than a blank page.
- realtime
Collaborative editing
SignalR over WebSockets broadcasts route changes to every connected client, so co-editing the macro route stays in sync without refreshes.
- places
Destination enrichment
Google Places resolves destinations and pulls photos; Google Maps renders the route so the plan reads as a map, not a list.
- auth
Google OAuth
Sign-in through Google OAuth, with a dev-mode test auth path for local work — no full login dance needed while building.
trajectory (the architecture)
A layered ASP.NET Core backend serves a SvelteKit client. In development the Vite dev server proxies API requests through a single origin, which sidesteps CORS, and the whole stack spins up under Docker Compose with optional ngrok tunnelling to expose it publicly.
- backend
ASP.NET Core 10
Web API with EF Core over SQL Server for persistence, application services for trip logic, and a SignalR hub for the realtime channel.
ScalarUI gives an interactive API explorer in dev. - frontend
SvelteKit · Svelte 5
TypeScript +
TailwindCSS v4, built on Vite. The client consumes the API and subscribes to the SignalR hub for live route updates. - infra
Docker Compose
One command brings up API, database, and frontend together; optional
ngroktunnelling exposes the dev stack for sharing or mobile testing.
notes (the shape of it)
The idea. Most trip planners are either a smart-but-solitary AI generator or a shared doc with no intelligence. Trip Planner puts the two together: AI gets you a credible draft in seconds, and realtime collaboration turns refining it into something a group actually does together instead of arguing over.
Treating the multi-destination route as the canonical, server-owned model is what makes the collaboration honest — there's one route, everyone edits it, and SignalR keeps the screens agreeing.