diff --git a/plans/mobile-app-architecture.md b/plans/mobile-app-architecture.md new file mode 100644 index 0000000..82b722d --- /dev/null +++ b/plans/mobile-app-architecture.md @@ -0,0 +1,391 @@ +# Brackt Mobile — Framework Decision & Architecture Design + +**Status:** Design document. Not an implementation plan yet — this is the input to one. +**Date:** 2026-08-20 + +--- + +## 1. Context + +Brackt.com is a multi-sport fantasy drafting platform. Its centerpiece is a **live, real-time snake draft** with a running clock, a per-team draft queue, autodraft, and commissioner controls. That experience is the strongest possible argument for a native app: drafts are time-boxed, turn-based, and happen while people are away from a desk. The website already tries to compensate — `app/hooks/useDraftNotifications.ts` fires Web Notifications only when `document.hidden`, and `server/socket.ts` emits a full `draft-state-sync` snapshot on reconnect with an inline comment explaining it exists *because mobile backgrounding breaks the HTTP revalidate path*. The codebase has been reaching for an app for a while. + +**The goal:** ship iOS and Android from one codebase, with as much code shared with the website as possible, so the two never drift apart on the rules that matter. + +**The constraint that shapes everything:** divergence risk is not evenly distributed. Two `