Files
fete/spec/implementation-phases.md
nitrix 91e566efea Remove honeypot fields from US-1 and US-3
Honeypot spam protection is overengineered for this project's scope.
Removed the acceptance criteria from both stories and added addenda
documenting the decision. Updated implementation order and review
findings accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 22:24:23 +01:00

5.8 KiB

Implementation Order

Sequential implementation order for all user stories. No parallelization — one story at a time.

Progress Tracker

  • US-1 Create event
  • US-2 View event page
  • US-3 RSVP
  • US-5 Edit event
  • US-4 Manage guest list
  • US-18 Cancel event
  • US-19 Delete event
  • US-12 Auto-cleanup after expiry
  • US-13 Limit active events
  • US-6 Bookmark event
  • US-7 Local event overview
  • US-17 Dark/light mode
  • US-8 Calendar integration
  • US-11 QR code
  • US-9 Change highlights
  • US-10a Update messages
  • US-10b New-update indicator
  • US-15 Color themes
  • US-16 Unsplash header images
  • US-14 PWA install

Prerequisites

All setup tasks (T-1 through T-5) are complete.

Order Rationale

Increment 1: Minimal Viable Event — US-1, US-2, US-3

The vertical slice. After these three stories, the app is usable: an organizer creates an event, shares the link, guests view it and RSVP.

# Story Depends on Delivers
1 US-1: Create event T-4 Event creation with tokens, localStorage
2 US-2: View event page US-1 Public event page with attendee list, expired state
3 US-3: RSVP US-2 Attend/decline flow, localStorage dedup

Increment 2: Organizer Toolset — US-5, US-4

The organizer needs to correct mistakes and moderate spam before the app goes to real users.

# Story Depends on Delivers
4 US-5: Edit event US-1 Edit all fields, expiry-must-be-future constraint
5 US-4: Manage guest list US-1 View RSVPs, delete spam entries

US-5 before US-4: US-9 (change highlights) depends on US-5, so getting it done early unblocks Phase 3 work.

Increment 3: Event Lifecycle — US-18, US-19, US-12, US-13

Complete lifecycle management. After this increment, the privacy guarantee is enforced and abuse prevention is in place.

# Story Depends on Delivers Activates deferred ACs
6 US-18: Cancel event US-1 One-way cancellation with optional message, expiry adjustment US-2 AC5, US-3 AC11
7 US-19: Delete event US-1 Immediate permanent deletion, localStorage cleanup US-2 AC6 (partial)
8 US-12: Auto-cleanup US-1 Scheduled deletion after expiry, silent logging US-2 AC6 (complete)
9 US-13: Event limit US-1 MAX_ACTIVE_EVENTS env var, server-side enforcement

When implementing US-18, US-19, and US-12: immediately activate their deferred ACs in US-2 and US-3 (cancelled state display, RSVP blocking, event-not-found handling). These stories exist at this point — no reason to defer further.

Increment 4: App Shell — US-6, US-7, US-17

The app gets a home screen. Users can find their events without the original link.

# Story Depends on Delivers
10 US-6: Bookmark event US-2 Client-only bookmark, no server contact
11 US-7: Local event overview Root page / with all tracked events from localStorage
12 US-17: Dark/light mode System preference detection, manual toggle, localStorage persistence

US-6 before US-7: bookmarking populates localStorage entries that the overview displays. Without US-6, the overview only shows created and RSVPed events.

US-17 here (not in a late phase): event color themes (US-15) must account for dark/light mode. Having it in place before US-15 avoids rework.

Increment 5: Rich Event Page — US-8, US-11, US-9, US-10a, US-10b

Features that enrich the event page for guests and organizers.

# Story Depends on Delivers
13 US-8: Calendar .ics + webcal US-2 RFC 5545 download, webcal subscription, STATUS:CANCELLED support
14 US-11: QR code US-2 Server-generated QR, SVG/PNG download
15 US-9: Change highlights US-2, US-5 Field-level change indicators, localStorage-based read tracking
16 US-10a: Update messages US-1, US-2 Organizer posts, reverse-chronological display, delete capability
17 US-10b: New-update indicator US-10a localStorage-based unread badge

US-8 benefits from US-18 being complete: STATUS:CANCELLED in .ics can be implemented directly instead of deferred.

US-9 benefits from US-5 being complete (increment 2): no dependency waiting.

Increment 6: Visual Polish & PWA — US-15, US-16, US-14

Final layer: visual customization and native app feel.

# Story Depends on Delivers
18 US-15: Color themes US-1, US-2 Predefined theme picker, event-scoped styling
19 US-16: Unsplash images US-1, US-2 Server-proxied search, local storage, attribution
20 US-14: PWA T-4 Manifest, service worker, installability

US-15 before US-16: themes are self-contained, Unsplash adds external API complexity.

US-14 last: PWA caching is most effective when the app has all its pages and assets. Service worker strategy can cover everything in one pass.

Note: US-12 AC2 (delete stored header images on expiry) remains deferred until US-16 is implemented. When implementing US-16, activate this AC in US-12.

Deferred AC Activation Schedule

When implementing Activate deferred AC in AC description
US-18 (#6) US-2 AC5 Cancelled state display
US-18 (#6) US-3 AC11 RSVP blocked on cancelled event
US-18 (#6) US-8 AC9 STATUS:CANCELLED in .ics (if US-8 not yet done — in this order, US-8 comes later, so implement directly)
US-19 (#7) US-2 AC6 Event not found (organizer deletion)
US-12 (#8) US-2 AC6 Event not found (expiry deletion)
US-16 (#19) US-12 AC2 Delete stored header images on expiry