iFarted/memory-bank/progress.md

44 lines
3.9 KiB
Markdown

# Progress — iFarted
## Current Status: Design locked, zero app code — repo live
No application code exists yet. All major product/architecture decisions resolved. **Repo initialized & pushed** (session 3). Ready to scaffold.
## What Works
- **Git repo live** at `https://git.2re.top/2re/iFarted` (public/open, owner `2re`). Initial commit `8fec909` (`README.md`, `.gitignore`, `.clinerules/`, full `memory-bank/`). Local `main` tracks `origin/main`; push over SSH key (`torrey@nommesen.com`), no password.
- Nothing application-wise yet.
- Full requirements + architecture captured in Memory Bank (6 core files + `research/yo-app.md`).
## Decisions Made (all user-confirmed)
- Target platforms: iOS + Android.
- Core action: send another user an individual push notification containing **"I farted."** (fixed phrase, zero typing); optional per-message location.
- **Identity & discovery: all three** — unique @username + search · phone/contacts (opt-in) · invite code/deep link.
- **Backend: Bun** (Node-compatible) **+ Expo Push API**; SQLite storage; no Firebase Functions/Firestore. (Bun feasibility confirmed — plain HTTPS/JSON; install still pending on dev box.)
- **Product design: Yo! (2014) pattern** — researched (Wikipedia + CNET); adopted context-based messaging, text+audio notification, contact-list home with tap-to-send + one-tap fart back, **ephemeral (no inbox/history)**. See `memory-bank/research/yo-app.md`.
- Monetization: ads (AdMob) + **one-time non-consumable Remove Ads IAP**.
- Mobile stack: React Native + Expo + TypeScript; EAS Build for iOS from this Linux box.
## What's Left to Build (MVP roadmap)
1. ~~Repo setup: git init, README, `.gitignore`, commit memory-bank~~**done** — initial commit pushed to `git.2re.top/2re/iFarted` (session 3).
2. Scaffold monorepo: `apps/mobile` (Expo TS), `apps/server` (Bun + Hono + bun:sqlite), `packages/contracts` (shared types).
3. Install Bun; implement relay server per systemPatterns REST API (register/tokens/farts/search/contacts/invites/block + rate limiting).
4. Device-to-device fart end-to-end: two dev builds, Expo Push API, custom sound, location payload.
5. Client screens per productContext (onboarding incl. 3 add-friend paths, home list, fart detail + map, settings).
6. Ads (AdMob banner) + Remove Ads IAP + gating + restore.
7. Permissions/privacy polish (purpose strings, privacy labels).
8. Alpha on real devices (both platforms).
9. Store assets + compliance review → TestFlight + Play internal testing.
## Remaining Minor Open Items
Audio asset · Remove Ads price/lib · ad placement confirmation · final branding · deploy target (see activeContext.md).
## Known Issues / Risks
- **iOS review:** Yo was initially rejected for being "too simple" → have the context-based messaging explanation ready; keep copy clean.
- **Harassment/spam:** Yo was hacked + spammed in 2014 → strict auth, no unauthenticated PII, rate limits + block (baked into API design).
- **No business model killed Yo** → monetization is in from day one (ads + IAP).
- iOS builds can't run on this Linux box → EAS cloud build (or a Mac) required.
- Android push requires a Firebase project for FCM client credentials even with Expo Push API (secret `google-services.json`, injected at build).
## Evolution Log
- **2026-09-09 (s3)** — Git repo initialized & pushed: `git init -b main`, `README.md` + `.gitignore` added, memory-bank + .clinerules committed (`8fec909`), remote `2re/iFarted` on git.2re.top (public) populated via SSH key. Memory-bank updated to match.
- **2026-09-09 (s1)** — Memory Bank initialized; requirements captured; stack recommendation (RN + Expo + TS) accepted.
- **2026-09-09 (s2)** — Yo! app researched (`memory-bank/research/yo-app.md`); Bun feasibility answered (yes); decisions locked: identity = all three mechanisms, backend = Bun + Expo Push API, product = Yo-style context-based messaging with ephemeral farts. Memory-bank core files updated.