iFarted/memory-bank/progress.md

3.9 KiB

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.