|
|
||
|---|---|---|
| .vscode | ||
| app | ||
| docs | ||
| gradle/wrapper | ||
| seed | ||
| server | ||
| .eslintrc.js | ||
| .gitignore | ||
| .prettierrc | ||
| README.md | ||
| build.gradle.kts | ||
| firestore.rules | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| local.properties.example | ||
| seed_generator.py | ||
| settings.gradle.kts | ||
README.md
Closer
A private, warm, intentional space for couples to build deeper emotional connection.
About
Closer is a native Android app designed to help couples communicate better, learn more about each other, and create intentional moments together. It focuses on emotional closeness — not task management, not social media, not productivity.
Screens & Features
Onboarding & Auth
- Welcome flow with app introduction
- Create profile (display name, photo)
- Sign up with email or Google
- Login and password recovery
- Anonymous trial mode
Home
- Suggested next-best action ranked by state
- Latest daily question status
- Quick-action cards for daily question, question packs, and history
- Streak tracking display
- Answer stats at a glance
Daily Question
- One question per day for the couple
- Multiple answer types: written, choice, scale, this-or-that
- Each partner answers privately, then both answers are revealed
Question Packs
20 categories across 2,500+ questions:
- Fun, Communication, Conflict, Values, Emotional Intimacy
- Physical Intimacy, Sex & Desire, Future, Money, Stress
- Boundaries, Conflict Repair, Date Night, Difficult Conversations
- Gratitude, Home Life, Marriage, Parenting, Rebuilding Trust, Trust
Each pack has curated questions at varying depth levels. Packs are labeled as free or premium.
Answer System
- Private written, choice, scale, or this-or-that answers
- Partner answer reveal flow
- Local answer history with delete
- Emoji reactions to partner answers
- Threaded conversation around specific questions
Spin Wheel (Wheel of Questions)
- Pick a category, spin the wheel, get a random question
- Session-based: spin multiple questions in one session
- Full session history for premium users
- Perfect for date nights, long drives, or quiet moments together
Partner Pairing
- Generate a 6-character invite code
- Invite partner via email
- Accept invite and confirm pairing
- Partner home screen showing partner's activity
Settings
- Account management (email, display name, photo)
- Notification preferences (reminders, quiet hours)
- Privacy controls
- Subscription management via RevenueCat
- Relationship settings
- Account deletion
Subscription Model
| Tier | Key Features |
|---|---|
| Free | Daily question, recent answer history, basic categories, basic reminders, streak tracking, limited spin wheel sessions |
| Premium | All free features + premium question packs, full spin wheel access with saved history, unlimited questions, full answer history with search, custom questions, private notes, exportable memories, advanced reminders, AI-assisted suggestions (future) |
Powered by RevenueCat + Google Play Billing.
Tech Stack
| Layer | Tech |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose, Material 3 |
| Architecture | Clean Architecture (data / domain / ui / core) |
| Navigation | Navigation Compose |
| DI | Hilt |
| Local Storage | Room, DataStore Preferences |
| Backend | Firebase Auth, Firestore, Cloud Functions |
| Notifications | Firebase Cloud Messaging |
| Analytics | Firebase Analytics, Crashlytics |
| Payments | RevenueCat |
| Security | Firebase App Check (Play Integrity) |
| Min SDK | 26 |
| Target SDK | 35 |
Architecture
app/
├── core/ # Cross-cutting: analytics, billing, crash, features, Firebase, navigation, notifications
├── data/ # Data layer: Room DB, Firestore datasources, repository implementations, question JSON parser
├── domain/ # Domain layer: models, repository interfaces, use cases
└── ui/ # Presentation layer: screens + viewmodels per feature area
├── answers/ # Answer history, answer reveal
├── auth/ # Login, signup, forgot password
├── components/ # Shared UI components (empty, error, loading states, special dates)
├── home/ # Home screen, partner home
├── onboarding/ # Onboarding flow, create profile
├── pairing/ # Invite creation, acceptance, confirmation
├── paywall/ # Subscription upsell
├── questions/ # Daily question, pack library, categories, composer, thread
├── settings/ # Account, notifications, privacy, relationship, subscription, delete
├── theme/ # Color, typography, theme configuration
└── wheel/ # Category picker, spin wheel, session, history, complete
Data Sources
- Firestore — user profiles, couple relationships, question threads, invites, entitlements
- Room — local question cache, answered questions offline
- DataStore — user preferences, feature flags, settings
- JSON assets — bundled questions (2500+ across 20 categories)
Build
cd app/
./gradlew assembleDebug # Build debug APK
./gradlew installDebug # Install on connected device/emulator
./gradlew assembleRelease # Build release APK (minified + shrunk)
Prerequisites
- Android Studio Hedgehog or later
- JDK 17
- Firebase project with Auth, Firestore, Cloud Messaging, and App Check configured
google-services.jsoninapp/directory- RevenueCat project configured for Google Play
Design Principles
- Warm & Intimate — The app should feel like a private emotional space, not a productivity tool
- Privacy-first — Data isolated by couple, strict Firestore rules
- Offline-resilient — Room cache keeps the app fast without network
- Intentional — Short, meaningful interactions. 5 good minutes > endless scrolling
- 2026 modern — Smooth Material 3 animations, instant feedback, no jank
License
Private project. All rights reserved.