A privacy-first, local-first mobile app for managing your life like a CRM: habits, relationships, schedule, home automation, subscriptions, and maintenance reminders.
- Today Dashboard: Unified daily view of all modules
- Habits: Track daily/weekly habits with streaks and flexible schedules
- People: Relationship touchpoint reminders with interaction logging
- Schedule: Calendar, tasks, and booking links with approval workflow
- Home: Smart home control (demo), maintenance tracking, subscription management
- Frontend: React Native + Expo SDK 50
- Language: TypeScript (strict mode)
- Styling: NativeWind (Tailwind for React Native)
- Animations: React Native Reanimated 3
- Navigation: Expo Router (file-based)
- State: Zustand
- Data: TanStack Query
- Database: SQLite (expo-sqlite) + Drizzle ORM
- Local-first: All data stored locally, offline-capable
- Node.js 18+ and npm
- iOS: Xcode 15+ and CocoaPods
- Android: Android Studio and SDK
- Expo Go app (for quick testing)
-
Clone and install dependencies:
npm install
-
Start the development server:
npm start
-
Run on iOS:
npm run ios
-
Run on Android:
npm run android
-
Run on Web (experimental):
npm run web
The app will automatically seed demo data on first launch:
- 5 sample habits (meditation, exercise, reading, journaling, calling family)
- 4 contacts with touchpoint reminders
- Sample calendar events
- Mock subscriptions
- Vehicle maintenance tracker
- Smart home demo rooms and devices
Demo User: demo@adultcrm.app
adult-crm/
βββ app/ # Expo Router screens
β βββ _layout.tsx # Root layout with providers
β βββ (tabs)/ # Bottom tab navigation
β βββ index.tsx # Today dashboard
β βββ habits.tsx # Habit tracker
β βββ people.tsx # Relationship manager
β βββ schedule.tsx # Calendar & tasks
β βββ home.tsx # Smart home & more
βββ src/
β βββ components/
β β βββ ui/ # Reusable UI components
β βββ db/
β β βββ schema.ts # Database schema
β β βββ client.ts # Drizzle client
β β βββ seed.ts # Seed data
β βββ stores/ # Zustand stores
β βββ utils/ # Helper functions
βββ package.json
βββ app.json # Expo config
βββ tailwind.config.js # Tailwind config
βββ tsconfig.json # TypeScript config
Light Theme:
- Primary:
#3B82F6(Blue) - Success:
#10B981(Green) - Warning:
#F59E0B(Amber) - Error:
#EF4444(Red)
Dark Theme:
- Primary:
#60A5FA(Lighter Blue) - Success:
#34D399(Lighter Green) - Automatic system preference detection
- Font: Inter (system fallback: SF Pro / Roboto)
- Sizes: xs (11px) β 4xl (36px)
- Weights: 400 (regular), 500 (medium), 600 (semibold), 700 (bold)
- Button: Primary, secondary, ghost variants with spring animation
- Card: Base and elevated variants with press feedback
- Checkbox: Animated checkmark with haptic feedback
- Habit completion: 400ms spring animation with checkmark draw
- Card press: Scale feedback (0.98x)
- Screen transitions: 250ms slide
- All animations respect
prefers-reduced-motion
Aggregates data from all modules:
- Greeting with date
- Habits due today (interactive checklist)
- Upcoming events (next 3)
- People due for touchpoint (top 2)
- Action items (pending bookings, overdue tasks, maintenance due)
- List of active habits with streak and completion rate
- Tap to view details and log completion
- Automatic streak calculation
- Skip with optional reason
- Contact cards sorted by touchpoint status
- Color-coded: Green (recent), Yellow (due soon), Red (overdue)
- Log interactions: call, text, meeting, other
- Configurable touchpoint frequency
- Calendar views: Day, Week, Month
- Tasks with due dates
- Booking links with availability rules and approval workflow
- Rooms Tab: Smart home control (demo mode)
- Maintenance Tab: Asset tracking (vehicle, home, appliances)
- Subscriptions Tab: Renewal reminders and cost tracking
- Local-first: All data stored on device (SQLite)
- No tracking: No analytics or telemetry
- Offline-capable: Full functionality without internet
- Data export: JSON export for backup
- Future: SQLCipher encryption, biometric lock
Drizzle automatically handles migrations. Schema is in src/db/schema.ts.
To reset database:
# iOS
xcrun simctl get_app_container booted com.adultcrm.app data
# Delete adult-crm.db and restart app
# Android
adb shell
run-as com.adultcrm.app
rm databases/adult-crm.db# Run tests
npm test
# Type checking
npm run type-check
# Linting
npm run lint# Development build
eas build --profile development --platform ios
# Production build
eas build --profile production --platform all- Core modules: Habits, People, Schedule, Home
- Today dashboard
- Local database with seed data
- UI/UX design system
- Animations and haptics
- Real HomeKit/Google Home integration
- External calendar sync (Google Calendar, Apple Calendar)
- Contact import from phone
- Push notifications
- Cloud sync (Supabase)
- Data encryption
- Booking link public pages
- Family/household sharing
- Automation workflows (IFTTT-style)
- Voice commands
- Wearable integration
- AI-powered touchpoint suggestions
- Budget analytics
This is an MVP starter project. Key areas for contribution:
- Real HomeKit integration
- Calendar sync implementation
- Advanced streak calculations
- Booking link public page UI
- E2E tests
MIT License - see LICENSE file for details
Built with inspiration from:
- Things 3: Clean, calm UI
- Linear: Fast, purposeful animations
- Arc Browser: Thoughtful design details
- Smart home is demo-only (mock devices)
- No calendar sync yet (local only)
- No cloud backup (export/import via JSON)
- Streak calculation is simplified
- Schedule screen is placeholder
- No push notifications (local only)
For issues or feature requests, please file an issue on GitHub.
Built with β€οΈ for better life management