How ywcharles/itinerary works
Tripcident is a collaborative trip-itinerary planner. Travelers create or join trips, then build and share a schedule of activities; the itinerary view adds maps, travel times, weather, place suggestions, and AI-assisted schedule reviews. The central state is the itinerary’s stops, synchronized through Supabase. Review discovery checks free-time gaps, nearby places, opening hours, and travel legs before asking Gemini for proposals; users can preview and accept changes. The README documents the Google Maps view, while the sampled excerpts do not establish every page-to-component or suggestion-search connection.
Main entry points: ItineraryView.tsx Itinerary view · ReviewPanel.tsx Review panel · page.tsx Landing page · reviewContext.ts Review context
Components 27
Trip entry
- Landing page
app/page.tsx - Create trip
app/components/start/CreateTripForm.tsx - Join trip
app/components/start/JoinTripForm.tsx - Recent trips
app/components/start/RecentTrips.tsx
Itinerary planning
- Itinerary page
app/itinerary/[slug]/page.tsx - Itinerary view
app/itinerary/ItineraryView.tsx - Stop state
app/itinerary/hooks/useStops.ts - Schedule and edits
app/itinerary/components/Schedule.tsx - Calendar
app/itinerary/components/Calendar/Calendar.tsx - Map display
app/itinerary/components/Maps.tsx - Travel legs
app/itinerary/hooks/useTravelLegs.ts - Day weather
app/itinerary/components/DayWeather.tsx
Ideas and review
- Review panel
app/itinerary/components/ReviewPanel.tsx - Review context
lib/reviewContext.ts - Gap discovery
lib/reviewDiscovery.ts - Place suggestions
lib/suggestions.ts - Review endpoint
app/api/itinerary-review/route.ts - Proposal validation
lib/aiReview.ts
Data and integrations
- Weather endpoint
app/api/weather/route.ts - Maps link resolver
app/api/resolve-maps-link/route.ts - Supabase client
lib/supabase.ts - Supabase
- Route calculation
lib/routes.ts - Google Maps APIs
lib/googleMaps.ts
Other components
- Traveler
- Gemini
- Open-Meteo
Connections 30
- Traveler → Landing page: opens
- Landing page → Create trip: offers
- Landing page → Join trip: offers
- Landing page → Recent trips: shows
- Traveler → Create trip: submits trip
- Traveler → Join trip: joins trip
- Itinerary page → Itinerary view: renders
- Itinerary view → Stop state: loads stops
- Itinerary view → Schedule and edits: displays schedule
- Itinerary view → Calendar: displays calendar
- Itinerary view → Map display: displays map
- Stop state → Supabase client: reads and writes
- Supabase client → Supabase: accesses
- Itinerary view → Travel legs: derives legs
- Travel legs → Route calculation: requests routes
- Route calculation → Google Maps APIs: computes routes
- Itinerary view → Day weather: shows forecast
- Day weather → Weather endpoint: requests weather
- Weather endpoint → Open-Meteo: fetches forecast
- Review panel → Review context: collects context
- Review context → Gap discovery: finds gaps
- Review context → Place suggestions: searches places
- Review context → Route calculation: checks travel
- Review panel → Review endpoint: sends review request
- Review endpoint → Supabase: reads stops
- Review endpoint → Gemini: requests proposals
- Review endpoint → Proposal validation: parses and validates
- Review panel → Proposal validation: validates proposals
- Review panel → Supabase client: saves accepted changes
- Maps link resolver → Traveler: returns resolved link