Members onlyStub
You need the code.
Every other route redirects here until you are in. There is no public view, no signup, no password reset. One shared code, one display name.
How this is protected
- The code is stored hashed with argon2id. It is never logged, and never placed in a URL or query string.
- A successful join issues a signed, httpOnly, SameSite=Lax cookie carrying the trip and member.
- Joins are rate-limited to ten attempts per IP per fifteen minutes, then backed off.
- Anyone holding the code has full read and write access to the trip. Share it privately.
- The app stores no card numbers and no bank details. Cost tracking is arithmetic only.
None of that is wired up yet. This build accepts any non-empty code and drops you on the map. Hashing, the session cookie and the rate limiter arrive in phase 4.