149 lines
5.7 KiB
Markdown
149 lines
5.7 KiB
Markdown
|
|
# 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
|
||
|
|
|
||
|
|
```bash
|
||
|
|
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.json` in `app/` 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.
|