Description
A planner for a trip taken by several people: a timeline that crosses time zones, expenses split between participants in two currencies, and invites that carry the role.
Features
- Timeline of flights, lodging and activities, each with the local label of its own time zone
- Expenses split between participants in BRL and EUR, showing what each person still owes
- Participants without an account, so a group can start planning before everyone signs up
- Invites by link that already carry the role: owner, editor or viewer
- Row Level Security per trip: a participant only reads the trips they belong to
Challenges
- Splitting an expense when part of the group has no account yet, and moving those records over when the person finally signs up
- Keeping the timeline readable when the trip crosses time zones, without storing local time
- Putting the access rules in the database instead of only in the interface
Learnings
- That a role check belongs in a database function, so every query inherits it
- That a placeholder participant is worth the extra rules it costs
- How to seed a demo account so a visitor sees a working product on the first screen