commit 6a139597aded6fd9327d2a7c26c1526fcb297d5d Author: josh Date: Fri Apr 3 22:05:47 2026 -0400 docs: initialize project diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md new file mode 100644 index 0000000..b698236 --- /dev/null +++ b/.planning/PROJECT.md @@ -0,0 +1,73 @@ +# SixFlagsSuperCalendar + +## What This Is + +A personal website that consolidates theme park operating calendars into a single full-month grid view. Starting with all Six Flags parks scraped from their website, expanding to any theme park via configurable scraper adapters, and eventually becoming a trip planning engine that suggests nearby parks and estimates travel costs. + +## Core Value + +One place to see every park's open days — so planning a trip takes seconds, not a dozen browser tabs. + +## Requirements + +### Validated + +(None yet — ship to validate) + +### Active + +- [ ] Full month grid calendar showing open/closed days across all Six Flags parks +- [ ] Web scraper pulls park hours from sixflags.com (URL pattern: `/{park}/park-hours?date=YYYY-MM-DD`) +- [ ] Scraper adapter architecture so other park chains can be added with minimal new code +- [ ] Any theme park can be added via manual configuration (URL pattern + scraper adapter) +- [ ] Trip planner suggests nearby open parks given a target park and date range +- [ ] Drive time shown between parks +- [ ] Rough flight cost estimate via Google Flights for farther destinations + +### Out of Scope + +- Booking / ticketing — just planning and discovery, not purchasing +- User accounts — personal use, no auth needed +- Real-time wait times or crowd levels — calendar/hours only +- Mobile app — web-first + +## Context + +- Six Flags park hours follow a consistent URL pattern: `https://www.sixflags.com/{park-slug}/park-hours?date=YYYY-MM-DD` +- Other major theme park chains (Cedar Fair, Universal, Disney, Busch Gardens) have similar site structures — a reusable scraper base should cover most cases +- Trip planning example: planning King's Dominion → surface Busch Gardens Williamsburg as a nearby park that's also open +- Google Flights rough estimates (not bookable) are sufficient for V2 flight cost + +## Constraints + +- **Data**: Web scraping — no official API, fragile to site redesigns; mitigate with adapter isolation so fixes are localized +- **Audience**: Personal use only — no need for scalability, auth, or uptime SLAs +- **Tech**: Website (browser-based); stack TBD during planning + +## Key Decisions + +| Decision | Rationale | Outcome | +|----------|-----------|---------| +| Scrape over API | No public Six Flags API exists | — Pending | +| Adapter pattern for scrapers | Different parks have different HTML; reuse parsing logic where possible | — Pending | +| Personal use (no auth) | Just for the owner; no user management complexity | — Pending | + +## Evolution + +This document evolves at phase transitions and milestone boundaries. + +**After each phase transition** (via `/gsd:transition`): +1. Requirements invalidated? → Move to Out of Scope with reason +2. Requirements validated? → Move to Validated with phase reference +3. New requirements emerged? → Add to Active +4. Decisions to log? → Add to Key Decisions +5. "What This Is" still accurate? → Update if drifted + +**After each milestone** (via `/gsd:complete-milestone`): +1. Full review of all sections +2. Core Value check — still the right priority? +3. Audit Out of Scope — reasons still valid? +4. Update Context with current state + +--- +*Last updated: 2026-04-03 after initialization*