100% Free. 100% Private. Recovery Made Simple.
A privacy-first mobile app designed to help adults overcome pornography addiction through compassionate, evidence-based recovery tools.
- 🔢 Sobriety Counter - Real-time tracking with milestone celebrations
- 🆘 Panic Button - Multi-step intervention during urges
- 📊 Urge Tracking - Log triggers, intensity, and patterns
- 📓 Daily Journal - Mood tracking, prompts, and reflection
- 🏆 Achievements - Gamified motivation with XP and badges
- 🔒 Privacy First - No account required, all data stored locally
- Node.js 18+
- npm or yarn
- Expo CLI
- For Android: Android Studio with SDK 23+
- For iOS: Xcode 14+ (macOS only)
# Clone the repository
git clone https://github.com/yourusername/quittr.git
cd quittr
# Install dependencies
npm install
# Start development server
npx expo start# Start Expo development server with options
npx expo start
# Run in web browser
npx expo start --web
# Run on Android (requires Android Studio/emulator or connected device)
npx expo start --android
# Run on iOS (macOS with Xcode only)
npx expo start --ios# Install EAS CLI globally
npm install -g eas-cli
# Login to Expo account (create free account at expo.dev)
eas login
# Configure your project for EAS Build
eas build:configure
# Build Android APK (for testing/sideloading)
eas build --platform android --profile preview
# Build Android AAB (for Google Play Store)
eas build --platform android --profile production# Generate native Android project
npx expo prebuild --platform android
# Navigate to android folder
cd android
# Build debug APK
./gradlew assembleDebug
# Build release APK (requires signing configuration)
./gradlew assembleRelease
# The APK will be at: android/app/build/outputs/apk/# EAS Cloud Build (Recommended)
eas build --platform ios --profile production
# Local Build
npx expo prebuild --platform ios
cd ios
pod install
# Open in Xcode and build
open quittr.xcworkspaceCreate a .env file based on .env.example:
APP_ENV=development
ENABLE_ANALYTICS=false
DEBUG_MODE=trueEdit app.json for app-specific settings:
{
"expo": {
"name": "Quittr",
"slug": "quittr",
"version": "1.0.0",
"android": {
"package": "app.quittr.recovery"
},
"ios": {
"bundleIdentifier": "app.quittr.recovery"
}
}
}The eas.json file configures build profiles. The appVersionSource: "local" field uses version from app.json:
{
"cli": {
"version": ">= 5.0.0",
"appVersionSource": "local"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"android": {
"buildType": "apk"
},
"distribution": "internal"
},
"production": {
"android": {
"buildType": "app-bundle"
},
"ios": {
"resourceClass": "m-medium"
}
}
},
"submit": {
"production": {}
}
}# Login to Expo (required once)
eas login
# Configure EAS project (required once)
eas build:configure
# Build APK for testing
eas build --profile preview --platform android
# Build AAB for Play Store
eas build --profile production --platform android
# Build for iOS (requires Apple Developer account)
eas build --profile production --platform iosquittr/
├── app/ # Expo Router screens
│ ├── (tabs)/ # Tab navigation screens
│ │ ├── index.tsx # Dashboard (home)
│ │ ├── urges.tsx # Urge tracking
│ │ ├── panic.tsx # Emergency panic button
│ │ ├── journal.tsx # Daily journal
│ │ └── profile.tsx # Profile & settings
│ └── _layout.tsx # Root layout with Redux
├── src/
│ ├── constants/ # Colors, typography, layout
│ ├── hooks/ # Custom React hooks
│ ├── store/ # Redux store & slices
│ │ └── slices/ # User, settings, urges, journal, achievements
│ └── types/ # TypeScript interfaces
├── assets/ # Images, icons, fonts
├── app.json # Expo configuration
├── package.json # Dependencies
└── tsconfig.json # TypeScript config
| Category | Technology |
|---|---|
| Framework | React Native 0.81 + Expo SDK 54 |
| Language | TypeScript 5.9 |
| Navigation | Expo Router 5.1 |
| State Management | Redux Toolkit + Redux Persist |
| Storage | AsyncStorage (Redux Persist) |
| Styling | React Native StyleSheet |
# Start dev server
npm start
# Run on specific platform
npm run android
npm run ios
npm run web
# Type checking
npx tsc --noEmit
# Format code
npm run format- No Account Required - Start using immediately
- Local Storage Only - All data stays on your device
- No Analytics - Zero tracking or data collection
- Optional PIN Lock - Protect with PIN or biometrics
- App Disguise - Change app icon and name for privacy
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
MIT License - see LICENSE for details.
This app is a recovery support tool, not a replacement for professional help. If you're struggling, please seek support from a qualified mental health professional.
Crisis Resources:
- National Suicide Prevention Lifeline: 988
- SAMHSA Helpline: 1-800-662-4357
- Crisis Text Line: Text HOME to 741741
Built with ❤️ for the recovery community