trip-group is a shared trip workspace for small groups of friends and families. One person creates a trip group and adds the members who are travelling together; from that point every member of the group maintains the same shared record of the trip in one place — the expenses, the photos, the itinerary, the stay locations, and any other information related to the trip. When the group wants it, the application helps split the total expense between the members of the group.
The product intent is to keep a trip's money and its memories together, in a warm, collaborative space that feels like a well-made holiday album and a tidy shared ledger rather than a fintech dashboard. The audience is the ordinary traveller who plans and pays alongside other people: the person who organises the group, and the people who join it.
This document is the System Requirements Document for trip-group, written for Umang Suthar.
trip-group is a web application with an application-owned identity layer and a custom user interface. A visitor arrives at a public Landing page that explains the shared trip-group product and its expense, photo, itinerary, stay, and information features. From there the visitor reaches Login, where a person enrolls for the first time or verifies themselves on return. Once signed in, the person lands on Trips, the revisitable overview of every trip group they belong to.
A signed-in person can open New Trip to create a trip group and add its members. Opening a trip group gives access to its shared workspace, which is organised as five modular panels — Expenses, Itinerary, Stays, Photos, and Trip Info — plus the on-request Expense Split. Every member of the group can record and maintain expenses, add photos, add itinerary entries, add stay locations, and add other trip information to the same shared record. Any member can ask the application to split the group's total expense between the members, and the resulting per-member amounts are shown on Expense Split.
Two human personas act in the product: the Trip group creator, who sets up the group and its members, and the Trip group member, who joins a group created by someone else and contributes to the shared record. Both personas share the same contribution capabilities once the group exists; they differ in who establishes the group and its membership.
The application owns identity and durable shared state: trip groups, their members, expenses, photos, itinerary entries, stay locations, trip information, and computed expense splits persist and are revisited across sessions.
Removed from scope
trip-group is delivered as a first-party web application with its own identity layer and its own custom interface. Nothing in the accepted requirements delegates trip-group's work to a provider surface or an external destination: creating groups, adding members, maintaining expenses, photos, itineraries, stays, and trip information, and splitting expenses are all first-party responsibilities.
Access is split into two boundaries. Landing and Login are anonymously reachable: a visitor can read what the product is and can enroll or verify without already being signed in. Every other destination — Trips, New Trip, Expenses, Expense Split, Photos, Itinerary, Stays, and Trip Info — requires a signed-in identity, because each one reads or writes durable state that must remain bound to the correct person and the correct group. A protected destination never owns the interaction that establishes access to itself; that interaction lives on Login.
The current delivery horizon covers everything described in this document. No future-horizon capabilities are defined for trip-group at this time.
FR-1 — Create a trip group (explicit) As a Trip group creator, I should create a trip group so that my travelling companions and I have one shared place for the trip.
FR-2 — Add members to a trip group (explicit) As a Trip group creator, I should add members to a trip group I created so that those people can share the trip's record.
FR-3 — Maintain the trip's expenses in one shared place (explicit) As a Trip group member, I should record, edit, and remove the trip's expenses in the group's shared expense list so that the group's spending is maintained in one place.
FR-4 — Add photos to the trip (explicit) As a Trip group member, I should add photos to the group's shared photo collection so that the trip's pictures live with the rest of the trip record.
FR-5 — Add itineraries to the trip (explicit) As a Trip group member, I should add itinerary entries to the group's shared itinerary so that the group's plan is visible to everyone.
FR-6 — Add stay locations to the trip (explicit) As a Trip group member, I should add stay locations to the group's shared stays list so that everyone knows where the group is staying.
FR-7 — Add other trip information (explicit) As a Trip group member, I should add other information related to the trip to the group's shared trip-info place so that anything else the group needs is kept with the trip.
FR-8 — Split the total expense between group members on request (explicit) As a Trip group member, I should ask the application to split the group's total expense between the members so that each member can see their share.
FR-9 — Self-service enrollment and returning verification (required_inference) As a visitor, I should enroll on first use or verify myself on return through Login so that my trip groups and shared trip records remain mine across sessions.
FR-10 — Group prerequisite for shared trip records (required_inference) As a Trip group member, I should only reach a group's shared expenses, photos, itinerary, stays, and trip information through a trip group I belong to so that shared records stay bound to the correct group and its members.
FR-11 — Split prerequisite (required_inference) As a Trip group member, I should see the split only when the group has recorded expenses and members to allocate to so that the per-member amounts are meaningful.
The Trip group creator is the person who gathers the group. Their product context begins before the trip has a shared record: they know who is travelling and they need one place where everyone's spending, pictures, plans, stays, and notes will live. Their primary goal is to stand up the trip group and its membership so the shared workspace exists for everyone else.
Their distinct accepted responsibilities are creating the trip group on New Trip and adding its members by email address with optional display names. They decide the group's name and who belongs to it. They interact with the Trip group member by adding them to the group; the observable result of that handoff is that each added member sees the group on their own Trips overview and can begin contributing. Once the group exists, the creator is also a member and shares every contribution capability — maintaining expenses, adding photos, itineraries, stays, and trip information, and asking for the expense split.
Their observable success is a created group with the intended members, visible on Trips, and a shared workspace that the whole group can use. Their work differs from a member's because they own the act of establishing the group and its membership; nothing in the accepted requirements gives them different rights over the shared content afterwards.
The Trip group member is a person who has been added to a trip group created by someone else. Their product context is the shared trip record itself: they arrive on Trips, find the group they were added to, and open its workspace. Their primary goal is to keep the group's shared record accurate and complete alongside everyone else.
Their distinct accepted responsibilities are maintaining the trip's expenses in the shared expense list, adding photos to the shared album, adding itinerary entries, adding stay locations, adding other trip information, and asking the application to split the group's total expense between the members. Their inputs are expense descriptions and amounts, photos, itinerary dates, titles and details, stay locations and dates, and free-form notes. Their decisions include what to record, what to correct, and when to request a split.
They interact with the Trip group creator by receiving membership in the group, and with every other member through the same shared record: a change one member makes is what the others see. Their observable success is a shared record that reflects the trip and a split view that shows each member's share of the total.
The visual language is warm modernism for shared journeys, after Charles & Ray Eames: honest materials, joyful colour inside order, curiosity and craft. The headline is "The whole trip, in one warm place".
Colour tokens (light mode)
| Role | Hex | Use |
|---|---|---|
| Background | #F4EDE1 | Cream paper ground for every page |
| Surface | #FBF6EC | Lighter card and panel surface |
| Text | #2B2620 | Ink-brown for all reading |
| Primary | #1F6F6B | Teal — primary actions and navigation |
| Accent | #D9482B | Tomato red — the single hot accent for amounts owed, split moments, and active states |
| Muted | #8A7D6B | Taupe — secondary labels and metadata |
| Mustard | #E3A72F | Small categorising chips, rules, illustration fills only — never behind body text |
| Walnut | #6B4A2F | Small categorising chips, thin rules, illustration fills only — never behind body text |
Typography
clamp(40px, 7vw, 96px); h1 32→56; h2 24→36; h3 20→24; body 16→18; caption 13→14; ledger numerals 18→28 tabular.Shape language
Layout
Imagery
Spacing rhythm
Accessibility of text and controls
clamp(...) and its mobile size. Imagery and decoration may be cropped, bled, rotated, or overlapped as the direction asks, but never over readable text or controls.The public entry is a full-bleed cream ground split asymmetrically. On the left, a stacked display headline in Jost — "The whole trip, in one warm place" — at clamp(40px, 7vw, 96px) with slightly negative tracking, a small Fraunces serif subline beneath it, and a teal capsule call to action that leads to Login. On the right, a large arch-topped sunlit trip photograph with a thin walnut frame overlaps a solid teal panel and a mustard strip. Three floating ledger chips are pinned across the photo edge: a tomato-red amount owed, a member avatar cluster, and an itinerary date tag — each a small surface panel with tabular Jost numerals or Fraunces labels, never covering the headline, subline, or CTA.
A thin walnut rule runs the full width beneath the hero. Below it, a horizontal row of modular trip-panel labels — Ledger · Itinerary · Stays · Photos · Info — set in small Jost caps acts as the transition into the page, each label a distinct exhibition-case module rather than a repeated identical card. The composition recomposes only accepted content: the product's shared panels, its members, its amounts, and its dates. No centred headline, no gradient blob, no generic SaaS button row.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
Landing Hero Motion Brief
prefers-reduced-motion, all fades, rises, and count-ups are removed; the hero renders in its composed final arrangement as a static layered composition, and every label, chip, and control remains fully readable.prefers-reduced-motion removes fades and count-ups entirely and provides a usable static arrangement.
trip-group
Plan it together, pay it together, keep it together.
Create a trip group and add the people travelling with you. Everyone adds to the same record — expenses, photos, itineraries, stays and trip notes all live in one shared place. When you want it, the app splits the total expense between the members of your group.
Split · amount owed
$248.50across 4 membersItinerary
Saturday, day 3Money, days, keys, pictures and notes, kept side by side until everyone is home.
Swipe to see all five

trip-group
Plan it together, pay it together, keep it together.
Create a trip group and add the people travelling with you. Everyone adds to the same record — expenses, photos, itineraries, stays and trip notes all live in one shared place. When you want it, the app splits the total expense between the members of your group.
Split · amount owed
$248.50across 4 membersItinerary
Saturday, day 3Money, days, keys, pictures and notes, kept side by side until everyone is home.
Swipe to see all five
No comments yet. Be the first!