445 lines
8.8 KiB
Markdown
445 lines
8.8 KiB
Markdown
# LifeFlow Development Plan
|
|
|
|
**Project:** LifeFlow - Personal Life Management System
|
|
**Start Date:** 2026-02-14
|
|
**Target:** MVP in 2 weeks, Full App in 6 weeks
|
|
|
|
---
|
|
|
|
## Architecture Overview
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ LifeFlow System │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ Android App │ PC App │ Web Dashboard │ HA Add-on │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ Shared Backend (Firebase/Supabase) │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ AI Services │ SMS Parser │ Notifications │
|
|
└─────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Phase 1: Android MVP (Week 1-2)
|
|
|
|
### Week 1: Foundation
|
|
**Day 1-2: Project Setup**
|
|
- [ ] Flutter project initialization
|
|
- [ ] Architecture setup (Riverpod + Hive)
|
|
- [ ] Theme system (Dark/Light/Calm)
|
|
- [ ] Navigation structure
|
|
|
|
**Day 3-4: Core Data Models**
|
|
- [ ] User model
|
|
- [ ] Routine model
|
|
- [ ] Activity log model
|
|
- [ ] Local database (Hive)
|
|
|
|
**Day 5-7: Basic UI Screens**
|
|
- [ ] Dashboard screen
|
|
- [ ] Routine list screen
|
|
- [ ] Add/Edit routine screen
|
|
- [ ] Simple settings
|
|
|
|
### Week 2: Features + Polish
|
|
**Day 8-10: Core Features**
|
|
- [ ] Routine CRUD operations
|
|
- [ ] Local notifications
|
|
- [ ] Basic streak tracking
|
|
- [ ] Activity logging
|
|
|
|
**Day 11-12: Gamification MVP**
|
|
- [ ] Points system
|
|
- [ ] Basic badges
|
|
- [ ] Streak visualization
|
|
- [ ] Daily progress ring
|
|
|
|
**Day 13-14: Polish + Testing**
|
|
- [ ] Animations
|
|
- [ ] Error handling
|
|
- [ ] Onboarding flow
|
|
- [ ] Beta build
|
|
|
|
---
|
|
|
|
## Phase 2: Smart Features (Week 3-4)
|
|
|
|
### Week 3: Intelligence
|
|
**SMS Parsing**
|
|
- [ ] SMS permission handling
|
|
- [ ] Pattern matching engine
|
|
- [ ] Appointment extraction
|
|
- [ ] Medication detection
|
|
- [ ] Manual confirmation UI
|
|
|
|
**AI Suggestions**
|
|
- [ ] Routine recommendation engine
|
|
- [ ] Optimal timing suggestions
|
|
- [ ] Pattern recognition
|
|
- [ ] Smart reminders
|
|
|
|
### Week 4: Integration
|
|
**Backend Setup**
|
|
- [ ] Firebase/Supabase project
|
|
- [ ] Authentication
|
|
- [ ] Cloud sync
|
|
- [ ] Conflict resolution
|
|
|
|
**Widgets**
|
|
- [ ] Home screen widget
|
|
- [ ] Quick actions
|
|
- [ ] Lock screen integration
|
|
|
|
---
|
|
|
|
## Phase 3: Ecosystem (Week 5-6)
|
|
|
|
### Week 5: PC App
|
|
- [ ] Flutter desktop build
|
|
- [ ] System tray integration
|
|
- [ ] Global hotkeys
|
|
- [ ] Quick log overlay
|
|
- [ ] Data sync
|
|
|
|
### Week 6: Home Assistant
|
|
- [ ] Custom component
|
|
- [ ] MQTT integration
|
|
- [ ] Sensors + Buttons
|
|
- [ ] Automations examples
|
|
- [ ] Dashboard cards
|
|
|
|
---
|
|
|
|
## Technical Stack
|
|
|
|
### Android App
|
|
| Layer | Technology |
|
|
|-------|-----------|
|
|
| Framework | Flutter 3.x |
|
|
| State | Riverpod |
|
|
| Local DB | Hive |
|
|
| Remote DB | Firebase/Firestore |
|
|
| Auth | Firebase Auth |
|
|
| Notifications | flutter_local_notifications |
|
|
| SMS | telephony |
|
|
| Analytics | Firebase Analytics |
|
|
|
|
### Backend
|
|
| Service | Technology |
|
|
|---------|-----------|
|
|
| Database | Cloud Firestore |
|
|
| Auth | Firebase Auth |
|
|
| Functions | Cloud Functions (Node.js) |
|
|
| Storage | Firebase Storage |
|
|
| ML | Firebase ML Kit |
|
|
|
|
### PC App
|
|
| Feature | Implementation |
|
|
|---------|---------------|
|
|
| Framework | Flutter Desktop |
|
|
| System Tray | system_tray |
|
|
| Hotkeys | hotkey_manager |
|
|
| Notifications | local_notifier |
|
|
|
|
### Home Assistant
|
|
| Component | Type |
|
|
|-----------|------|
|
|
| Main Integration | Custom Component |
|
|
| Communication | MQTT / REST API |
|
|
| Entities | Sensors, Buttons, Switches |
|
|
|
|
---
|
|
|
|
## Data Models
|
|
|
|
### User
|
|
```dart
|
|
class User {
|
|
String id;
|
|
String email;
|
|
String name;
|
|
String? avatarUrl;
|
|
UserSettings settings;
|
|
GamificationStats stats;
|
|
DateTime createdAt;
|
|
}
|
|
```
|
|
|
|
### Routine
|
|
```dart
|
|
class Routine {
|
|
String id;
|
|
String name;
|
|
String? description;
|
|
RoutineCategory category;
|
|
Schedule schedule;
|
|
List<Reminder> reminders;
|
|
int points;
|
|
String? icon;
|
|
String? color;
|
|
bool isActive;
|
|
DateTime createdAt;
|
|
}
|
|
|
|
enum RoutineCategory {
|
|
medication,
|
|
vitamin,
|
|
appointment,
|
|
sleep,
|
|
food,
|
|
hydration,
|
|
exercise,
|
|
hygiene,
|
|
selfCare,
|
|
custom
|
|
}
|
|
```
|
|
|
|
### Activity
|
|
```dart
|
|
class Activity {
|
|
String id;
|
|
String routineId;
|
|
DateTime timestamp;
|
|
bool completed;
|
|
String? notes;
|
|
Mood? mood;
|
|
int pointsEarned;
|
|
}
|
|
```
|
|
|
|
### Gamification
|
|
```dart
|
|
class GamificationStats {
|
|
int totalPoints;
|
|
int currentStreak;
|
|
int longestStreak;
|
|
int level;
|
|
List<String> unlockedBadges;
|
|
Map<String, int> categoryStreaks;
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## UI/UX Design System
|
|
|
|
### Colors
|
|
```dart
|
|
class AppColors {
|
|
// Primary
|
|
static const primary = Color(0xFF4A90E2);
|
|
static const primaryLight = Color(0xFF7BB3F0);
|
|
static const primaryDark = Color(0xFF2E5C8A);
|
|
|
|
// Categories
|
|
static const medication = Color(0xFFE74C3C);
|
|
static const vitamin = Color(0xFFF39C12);
|
|
static const hydration = Color(0xFF3498DB);
|
|
static const exercise = Color(0xFF27AE60);
|
|
static const sleep = Color(0xFF9B59B6);
|
|
static const food = Color(0xFFE67E22);
|
|
|
|
// Gamification
|
|
static const gold = Color(0xFFFFD700);
|
|
static const silver = Color(0xFFC0C0C0);
|
|
static const bronze = Color(0xFFCD7F32);
|
|
}
|
|
```
|
|
|
|
### Typography
|
|
```dart
|
|
class AppTextStyles {
|
|
static const heading1 = TextStyle(
|
|
fontSize: 28,
|
|
fontWeight: FontWeight.bold,
|
|
letterSpacing: -0.5,
|
|
);
|
|
|
|
static const heading2 = TextStyle(
|
|
fontSize: 22,
|
|
fontWeight: FontWeight.w600,
|
|
letterSpacing: -0.3,
|
|
);
|
|
|
|
static const body = TextStyle(
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.normal,
|
|
letterSpacing: 0,
|
|
);
|
|
|
|
static const caption = TextStyle(
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w500,
|
|
color: Colors.grey,
|
|
);
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Feature Specifications
|
|
|
|
### 1. Dashboard
|
|
**Layout:**
|
|
- Greeting with user name
|
|
- Daily progress ring (overall completion)
|
|
- Today's routines (grouped by time)
|
|
- Current streak flame
|
|
- Points display
|
|
- Quick add buttons
|
|
|
|
**Interactions:**
|
|
- Swipe routine → Mark done
|
|
- Tap routine → Details/Edit
|
|
- Pull down → Refresh
|
|
- Long press → Quick actions
|
|
|
|
### 2. Routine Detail
|
|
**Layout:**
|
|
- Icon + Name + Category
|
|
- Schedule info
|
|
- Streak counter
|
|
- History list
|
|
- Statistics
|
|
|
|
**Actions:**
|
|
- Log completion
|
|
- Edit routine
|
|
- Pause/Resume
|
|
- Delete
|
|
- Share
|
|
|
|
### 3. Add Routine
|
|
**Steps:**
|
|
1. Select category
|
|
2. Enter name/description
|
|
3. Set schedule (daily/weekly/custom)
|
|
4. Add reminders
|
|
5. Assign points
|
|
6. Choose icon/color
|
|
|
|
**Smart Features:**
|
|
- Template suggestions
|
|
- Category-based defaults
|
|
- Icon recommendations
|
|
|
|
### 4. Notifications
|
|
**Types:**
|
|
- Scheduled reminders
|
|
- Streak at risk
|
|
- Achievement unlocked
|
|
- Refill alerts
|
|
- Prep reminders
|
|
|
|
**Actions:**
|
|
- Mark done (from notification)
|
|
- Snooze (5/15/30 min)
|
|
- Dismiss
|
|
- View details
|
|
|
|
---
|
|
|
|
## SMS Parsing Patterns
|
|
|
|
### Appointment Pattern
|
|
```regex
|
|
(appointment|meeting|consultation).{0,50}(\w+ \d{1,2}).{0,20}(\d{1,2}:\d{2}).{0,50}(at|@)\s+([\w\s]+)
|
|
```
|
|
|
|
### Medication Pattern
|
|
```regex
|
|
(prescription|medication|refill).{0,30}(ready|available|pickup).{0,50}(\d+).{0,20}(of|out of).{0,5}(\d+)
|
|
```
|
|
|
|
### Meeting Pattern
|
|
```regex
|
|
(meeting|standup|sync).{0,30}(tomorrow|today|(?:\w+day)).{0,20}(\d{1,2}(?::\d{2})?\s*(?:AM|PM)?).{0,50}(in|at)\s+([\w\s]+)
|
|
```
|
|
|
|
---
|
|
|
|
## Testing Strategy
|
|
|
|
### Unit Tests
|
|
- Data models
|
|
- Business logic
|
|
- SMS parsing
|
|
- Gamification calculations
|
|
|
|
### Widget Tests
|
|
- Screen rendering
|
|
- User interactions
|
|
- Form validation
|
|
- State changes
|
|
|
|
### Integration Tests
|
|
- Database operations
|
|
- Notification flow
|
|
- Sync mechanism
|
|
- SMS parsing
|
|
|
|
### E2E Tests
|
|
- Complete user flows
|
|
- Critical paths
|
|
- Edge cases
|
|
|
|
---
|
|
|
|
## Deployment Plan
|
|
|
|
### Android
|
|
1. Internal Testing (closed)
|
|
2. Closed Testing (invite-only)
|
|
3. Open Testing (public beta)
|
|
4. Production Release
|
|
|
|
### PC App
|
|
1. Windows (installer)
|
|
2. macOS (DMG)
|
|
3. Linux (AppImage)
|
|
|
|
### Home Assistant
|
|
1. HACS (Home Assistant Community Store)
|
|
2. Official integration (if popular)
|
|
|
|
---
|
|
|
|
## Success Metrics
|
|
|
|
| Metric | Target |
|
|
|--------|--------|
|
|
| Daily Active Users | 1000+ (Month 3) |
|
|
| Routine Completion Rate | 70%+ |
|
|
| 7-Day Retention | 40%+ |
|
|
| Average Streak | 5+ days |
|
|
| App Store Rating | 4.5+ |
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
### Immediate (Today)
|
|
1. Initialize Flutter project
|
|
2. Set up architecture
|
|
3. Create data models
|
|
4. Build basic UI
|
|
|
|
### This Week
|
|
1. Complete MVP features
|
|
2. Add gamification
|
|
3. Test on device
|
|
4. Prepare beta
|
|
|
|
### Next Week
|
|
1. Add SMS parsing
|
|
2. Implement AI suggestions
|
|
3. Connect backend
|
|
4. Beta testing
|
|
|
|
---
|
|
|
|
Ready to start building! 🚀
|