Itinerary Planner
Real Estate & Travel · React + Node (Express) · 18 @molecule/* packages
TripIt-like trip planner with itineraries, activities, maps, collaboration, and sharing — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (15)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Trips
/trips(signed in) - TripPlanner
/trips/new(signed in) - TripDetail
/trips/:id(signed in) - Destinations
/destinations(signed in) - Bookings
/bookings(signed in) - Expenses
/expenses(signed in) - Settings
/settings(signed in) - Notifications
/notifications(signed in) - Calendar
/calendar(signed in)
Data model (11 tables)
- activities — id, user_id, trip_id, day_index, position, sort_order, title, kind, …
- bookmarks — id, userId, resourceType, resourceId, folder, createdAt, updatedAt
- destinations — id, name, region, blurb, thumbnail, pill_label, trip_count, created_at
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- expenses — id, user_id, trip_id, category, amount_cents, currency, occurred_at, vendor, …
- notifications — id, user_id, trip_id, kind, title, body, occurred_at, read, …
- trip_bookings — id, user_id, trip_id, kind, title, detail, start_at, end_at, …
- trip_collaborators — id, trip_id, user_id, invited_by, role, invited_at, accepted_at, created_at, …
- trip_invites — id, trip_id, user_id, email, token, role, sent_at, accepted_user_id, …
- trips — id, user_id, name, destination, country, cover_url, start_date, end_date, …
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (8 handlers)
- \_authz
api/src/handlers/_authz.ts - activities
api/src/handlers/activities.ts - bookings
api/src/handlers/bookings.ts - collaborators
api/src/handlers/collaborators.ts - destinations
api/src/handlers/destinations.ts - expenses
api/src/handlers/expenses.ts - notifications
api/src/handlers/notifications.ts - trips
api/src/handlers/trips.ts
Subscription tiers
free / pro / team — gated by: maxActivities, maxCollaborators, maxTrips, advancedFeatures, canExport, retentionDays
Built from 18 @molecule/* packages
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-geolocation-mapbox@molecule/api-payments-stripe@molecule/api-permissions-custom@molecule/api-realtime-socketio@molecule/api-resource-bookmark@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-calendar@molecule/app-drag-drop@molecule/app-gallery@molecule/app-maps@molecule/app-realtime-socketio
Required secrets
DATABASE_URLPostgreSQL connection stringMAPBOX_ACCESS_TOKENMapbox API access tokenS3_BUCKETS3 bucket for trip photosMAILGUN_API_KEYMailgun API key for sharing invites
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing