Context
I have an existing React Native app called Delust that helps users quit porn addiction. I need to fork it into a new app called DeSmoke for quitting weed/cannabis.
The challenge: The codebase was AI-generated ("vibe coded") and has messy patterns, over-engineered solutions, and 96+ hardcoded colors scattered throughout. This needs human expertise to clean up and simplify.
Tech Stack: React Native 0.76.9, Expo SDK 52, TypeScript, NativeWind (Tailwind), Zustand, MMKV, Supabase, RevenueCat
Requirements
Deliverable 1: Clean & Refactor Codebase (Most Important)
- Simplify Zustand stores — remove unused stores, merge redundant ones
- Consolidate 96+ hardcoded hex colors into
tailwind.config.js - Delete
src/components/ui/colors.jsafter migration - Create
src/lib/constants/design-tokens.tsfor animation colors only pnpm type-checkpasses with zero errorspnpm lintpasses with zero errors
Deliverable 2: Working Auth & Payments
- Supabase auth works (email + Google sign-in tested)
- RevenueCat paywall displays and SDK initializes
- Create
docs/AUTH-SETUP-GUIDE.md— step-by-step for client to configure production Supabase + Google OAuth - Create
docs/REVENUECAT-SETUP-GUIDE.md— step-by-step for client to configure production RevenueCat - Create
.env.examplewith all required environment variables
Note: Use YOUR OWN Supabase/Google/RevenueCat accounts for development. The guides are for the client to set up their own production accounts.
Deliverable 3: Content Rebrand + Timer Feature
- Add weed-free timer to home screen showing
XX days, HH:MM:SS - Timer persists across app restarts (MMKV)
- Timer has reset button with confirmation dialog
- Update app identity in
env.js:const BUNDLE_ID = 'co.desmoke.app'; const PACKAGE = 'com.desmoke.development'; const NAME = 'DeSmoke'; const SCHEME = 'co.desmoke.app'; - Rewrite all 42 onboarding screens (porn → weed/cannabis context)
- Update all content constant files with weed-specific content
grep -ri "porn" src/returns no resultsgrep -ri "fapulous" src/returns no resultsgrep -ri "delust" src/returns no results
Technical Details
Stack: React Native 0.76.9, Expo SDK 52, TypeScript, NativeWind v4, Zustand, MMKV, Supabase, RevenueCat
Files to create:
src/lib/stores/weed-free-timer-store.ts— Zustand store with MMKV persistencesrc/components/timer/weed-free-timer.tsx— Timer display componentsrc/lib/constants/design-tokens.ts— Animation colors onlydocs/AUTH-SETUP-GUIDE.mddocs/REVENUECAT-SETUP-GUIDE.md.env.example
Files to delete:
src/components/ui/colors.js
Files to modify:
env.js,app.config.ts,package.json,tailwind.config.jssrc/app/(app)/(tabs)/index.tsx— Add timer component- All 42 files in
src/components/onboarding/steps/ src/lib/constants/prayer-content.ts— "lust/temptation" → "cravings/urges"src/lib/constants/urge-control-constants.ts— Add weed-specific tipssrc/lib/constants/quit-reasons-presets.ts— Add weed quit reasonssrc/translations/en.json— Update all strings
Stores to audit: src/lib/stores/ — Delete unused, simplify the rest
Pattern to follow for colors: Move all hex codes to tailwind.config.js, use Tailwind classes in components
Out of Scope
- App Store / Play Store submission
- Production Supabase/RevenueCat account setup (you provide guides, client sets up)
- Custom app icon and splash screen design (placeholder is fine)
- New features beyond the timer
Resources
Weed-specific content to include:
Quiz questions:
- How often do you use weed? (daily, weekly, etc.)
- How much do you spend on weed per week/month?
- What triggers your usage? (stress, boredom, social, sleep)
- Have you tried quitting before?
- What withdrawal symptoms have you experienced?
Recovery timeline:
- 24-72 hours: THC withdrawal begins, irritability, anxiety
- 1 week: Sleep improves, appetite normalizes
- 2 weeks: Most physical symptoms subside
- 1 month: Mental clarity improves significantly
- 3 months: Lung function improves, cravings reduce
- 6 months: Brain fog clears, motivation returns
Quit reasons: Mental clarity, save money, better sleep, more motivation, pass drug test, remember dreams, reduce anxiety, be present for family, improve lungs, break the habit
Use AI (ChatGPT/Claude) to help generate draft content.
Acceptance Criteria
The PR is ready when:
- App runs on iOS Simulator + Android Emulator without crashes
pnpm type-check— zero errorspnpm lint— zero errorspnpm build:development:iossucceeds- All grep checks pass (no porn/fapulous/delust references)
- No hardcoded hex colors in
src/components/(run:grep -rn "#[0-9A-Fa-f]\{6\}" src/components/) - Auth flow works (email + Google sign-in)
- Paywall displays correctly
- Timer shows and persists across app restart
- Setup guides are clear and complete