Offline: the whole site works with no connection (v0.10.3)
Honeymoon portal v0.10.1: Files tab, offline documents, touch-locked trip calendar, phone calendar
Honeymoon portal v0.10.0: one place panel, nine tabs, travel on the timeline, the phone layout
The hero animates on touch at any width, not just below the breakpoint
Budget lines drag to reorder and to move between sections
Under 21: the flag on the guest list, the drinkers count on the budget
A Kids Meal filter on the guest list
Documents the whole filter row while passing, and the one thing that makes
this filter different: dietary answers live on the RSVP, so it matches the
household, and Not Eating overrides a kids' meal.
Kids' meal and Not eating: a plate is no longer a chair
Two answers that decide the plate rather than modify it. A kids' meal is a
different plate; not eating is a seat with no plate against it, so the
kitchen total and the headcount stop being the same number.
- Seating and the Export: the seven answers, plates-not-chairs in the
kitchen tiles, what is and is not counted as chicken, the CSV columns
- Guests and RSVPs: both new options on the RSVP card, and why ticking
Not Eating clears the rest
- Features: the RSVP bullet now lists the dietary answers
- Architecture: the DietaryEntry shape on rsvps
Seating and the Export: a page of its own, plus the couple and vendors
The export has been undocumented since v0.9.87. New Seating-and-the-Export
page covers both chart views, who can be seated, the couple, vendors, every
export option, what prints, the chicken, the one-page fit and the CSV.
- Features: the seating bullet described only the canvas; guest list gains
the couple and the vendors tab
- Guests and RSVPs: step-by-step for adding the couple and vendors, plus
the admin-side dietary editor
- Architecture: the vendors table and guest_list.kind
- Development: check:seating was missing entirely; honeymoon count was
stale at 257 (now 659)
- Home and _Sidebar: link the new page
Journeys, the geocoder pair, the flight-lookup states, and the env-var trap
Installation carried a compose snippet passing only three environment
variables through, which is the reason a correctly-set FLIGHT_API_KEY
never reached the container. Features and Architecture describe travel as
journeys; the portal page documents which geocoder answers and what the
flight lookup's three replies mean.
The honeymoon portal, as of v0.9.50
Seven waves of work from docs/honeymoon-improvements-2026-08-25.md:
trip mode and the offline Today view, share links, the booking vault and
budget, road times, weather, daylight, opening hours, time zones, the
conflicts panel, the place library's import/export and detail drawer,
per-person ratings and comments, the calendar feed, snapshots, documents
and post-trip mode. Features and Architecture updated to match.
Document nine releases: stays areas and the Removed bucket, the finance pass, and how images actually reach the servers
- Honeymoon: an area per stay, filtering by it, and removing a stay without
deleting it — including why the map does not follow the area filter and why
delete is only offered inside the bucket
- Finances: full width, two columns for the forms, money cells that read as
money, and the Escape that used to save the edit it was discarding
- Deployment: both hosts pull their own images; the Portainer webhook is not
used, and the evidence for why — including that two other stacks on the same
Portainer do have working ones, so it is not a product limitation
- Architecture, Troubleshooting, Development, Features, Home
Link the live demo at weddingwebsitedemo.com
It is up on the OVH box behind Nginx Proxy Manager, so every page that
described the demo as something you bring up yourself now leads with the one
you can just click.
Catch the wiki up: CI/CD, demo mode, and everything the honeymoon portal grew
The wiki was written at v0.9.5 and the app is at v0.9.30. Deployment still
described building the image on a laptop, Installation pointed at paths that
moved into docker/, Development named CLAUDE.md, and the demo page described
a stack you filled by hand rather than one that is read-only and seeds itself.
- The demo instance: rewritten around DEMO_MODE — no login, writes answered
but never stored, the flag refused unless the database really is the demo's,
and a seeder that runs on every start so the demo carries new features' data
- Deployment: pushing to main is the deploy; what publishes what, and why a
v* tag must never move :latest. Plus redeploying the demo
- Installation: docker/ paths, the three compose files, no obsolete version key
- Development: AGENTS.md and the symlink trap, running locally in demo mode
- Architecture: how demo mode is put together, and the three honeymoon columns
that encode a decision (rank, arrive_day_offset, leg coordinates)
- Honeymoon portal: split view, minimised overlay, flying to a day, travel arcs,
the Travel tab, overnight legs, stays map/ranking/sort/mid tier, and dates
that no longer delete days
- Troubleshooting: six new rows, mostly demo- and pipeline-shaped
Move the technical documentation out of the README
Fifteen pages, split from a README that had grown to 1,083 lines. The
content is moved verbatim — only heading levels shifted — apart from the
Development page, which was a single line pointing at CLAUDE.md and is now
a real page, and Home and _Sidebar, which are new.
Every substantive line of the old README was checked to still exist in
either the trimmed README or one of these pages.
The README keeps what a front page is for: what the thing is, the
screenshots, a quick start, and an index of these pages.