36 lines
1.7 KiB
Markdown
36 lines
1.7 KiB
Markdown
# WalkUp Implementation Plan
|
|
|
|
## Scope
|
|
- React PWA frontend.
|
|
- FastAPI backend.
|
|
- TeamSnap JavaScript SDK on the client.
|
|
- Server-side TeamSnap OAuth code exchange and refresh.
|
|
- Backend stores only app-owned data and TeamSnap external IDs.
|
|
|
|
## Initial Deliverables
|
|
- Thin TeamSnap auth/session backend.
|
|
- Media upload and clip registration flow.
|
|
- Game assignment and gameday APIs.
|
|
- Installable React PWA shell with offline-ready game prep scaffolding.
|
|
- Docker-based local development stack.
|
|
|
|
## Completed UI Cleanup
|
|
- Home page now acts as a lightweight landing page with direct links to Library and Gameday.
|
|
- Removed the old game-list-heavy dashboard content that was not useful as a landing surface.
|
|
- Game titles in the UI now include a day parenthetical such as `(sun 5/3)` wherever the shared formatter is used.
|
|
- TeamSnap gameday lineup reads now prefer the SDK `bulkLoad` path for `eventLineup` and `eventLineupEntry`, with rel-based fallback for accounts where bulk results are incomplete.
|
|
|
|
## Completed Offline Cache Work
|
|
- Client-side clip and assignment reads now persist locally and revalidate against server ETags.
|
|
- Normalized playback media is cacheable for offline clip playback.
|
|
- Auth and session responses remain `no-store` so cached data is limited to app-owned clip state.
|
|
- TeamSnap read queries now use cached-first stale-while-revalidate behavior on the client.
|
|
|
|
## Storage Status
|
|
- Backend media persists in the `backend-media` named Docker volume.
|
|
|
|
## Known Constraints
|
|
- TeamSnap entities should not be durably mirrored on the backend.
|
|
- Gameday lineup changes are local state in v1.
|
|
- Browser clip editing is first-class; backend finalizes playback assets.
|