What is tripplan.ing?
tripplan.ing is an open source platform for creating private event websites — family reunions, group trips, retreats, weddings, and similar gatherings. A single deployment serves multiple events, each with its own subdomain, branding, and attendee list.
What you get
Each event website includes:
- Homepage with event details, schedule, and custom content sections
- RSVP system with attendee types, pricing tiers, custom fields, and dietary collection
- Payments via Stripe or PayPal with per-attendee pricing and optional add-ons
- Schedule with multi-day agendas, locations, maps, and access controls
- Photos — authenticated gallery with upload and moderation
- Documents — permission-controlled file sharing (itineraries, maps, guides)
- Polls — single/multiple choice and availability polls
- Announcements — email blasts and site banners
- Admin dashboard — full management UI for organizers
After the event ends, the site transitions to a post-event mode where attendees can still access photos, documents, and polls.
How it works
tripplan.ing is a SvelteKit application deployed as a single worker/container. Multiple events share one deployment:
- Each event is assigned a subdomain (e.g.,
reunion.tripplan.ing) - The server resolves the hostname to an event at request time
- All data is isolated by
event_idin a shared database - Organizers manage events through the admin UI at
/admin - Platform operators manage events and users through the platform UI at
/platform
The app runs on two runtimes:
- Cloudflare Workers (production): D1 database, KV sessions, R2 storage
- Node.js (local dev / Docker): SQLite database, in-memory sessions, filesystem storage
Who this is for
| Role | What to read |
|---|---|
| Event organizer — setting up and running an event | Organizer Guide |
| Platform operator — deploying and managing the platform | Deployment |
| Developer — contributing code or extending features | Developer Guide |
| Anyone — getting started quickly | Quickstart |
Key design decisions
- No per-event deploys: Events are created instantly via the platform UI. One worker serves all events.
- No auth library: Custom email OTP authentication (~130 lines) using Web Crypto APIs for Cloudflare compatibility.
- No external SDKs: Mailgun emails via raw
fetch(), Stripe with fetch-based HTTP client. Everything runs on V8. - Database-driven config: Event settings live in the database, not config files. Changes take effect immediately.
Next steps
- Quickstart — clone, install, and run a dev server in 5 minutes
- Core Concepts — understand multi-tenancy, lifecycle, and auth before diving deeper