Files
1356/lifetimer/README.md
T
Tomas Dvorak 37ffb93923 feat: Complete Phase 1 - Full Flutter app implementation with comprehensive features
Version: 1.1.0

Major changes:
- Implemented complete Flutter app structure with all core features
- Added comprehensive UI screens for auth, countdown, goals, profile, settings, and social features
- Integrated Supabase backend with authentication and data repositories
- Added offline support with Hive caching and local storage
- Implemented comprehensive routing with go_router
- Added location services with Google Maps integration
- Implemented notifications and home widget support
- Added voice recording capabilities and AI chat features
- Created comprehensive test suite and documentation
- Added Android and iOS platform configurations
- Implemented achievements system and social features
- Added calendar integration and bucket list functionality

This represents a complete Phase 1 milestone with 3,775 additions across 31 files.
2026-01-04 14:33:54 +01:00

275 lines
8.7 KiB
Markdown

# LifeTimer Flutter Project
## Overview
LifeTimer is a gamified life countdown app where users create a bucket list (up to 20 entries) and start a 1356-day countdown once they finalize their goals. The countdown cannot be stopped, paused, or extended.
**Status**: Phase 4 (Polish and Release) - Preparing for v1.0.0 launch
## Project Structure
This Flutter project follows a clean architecture with feature-based organization:
```
lib/
├── main.dart # App entry point
├── bootstrap/ # Initialization
│ ├── bootstrap.dart
│ ├── env.dart
│ └── supabase_client.dart
├── core/ # Cross-cutting concerns
│ ├── theme/
│ │ └── app_theme.dart
│ ├── routing/
│ │ └── app_router.dart
│ ├── widgets/
│ │ ├── primary_button.dart
│ │ ├── app_scaffold.dart
│ │ ├── loading_indicator.dart
│ │ └── empty_state.dart
│ ├── errors/
│ │ ├── failure.dart
│ │ └── error_mapper.dart
│ ├── utils/
│ │ ├── date_time_utils.dart
│ │ └── validators.dart
│ └── services/
│ ├── analytics_service.dart
│ ├── notification_service.dart
│ └── image_cache_service.dart
├── data/ # Data layer
│ ├── models/
│ │ ├── user_model.dart
│ │ ├── goal_model.dart
│ │ ├── goal_step_model.dart
│ │ ├── activity_model.dart
│ │ └── achievement_model.dart
│ ├── repositories/
│ │ ├── auth_repository.dart
│ │ ├── user_repository.dart
│ │ ├── goals_repository.dart
│ │ ├── countdown_repository.dart
│ │ ├── social_repository.dart
│ │ ├── notifications_repository.dart
│ │ └── achievements_repository.dart
│ └── services/
│ ├── image_search_service.dart
│ ├── pexels_image_search_service.dart
│ └── offline_cache_service.dart
└── features/ # Feature modules
├── auth/
│ ├── presentation/
│ │ ├── auth_gate.dart
│ │ ├── sign_in_screen.dart
│ │ ├── sign_up_screen.dart
│ │ └── auth_loading_screen.dart
│ └── application/
│ └── auth_controller.dart
├── onboarding/
│ ├── presentation/
│ │ ├── onboarding_intro_screen.dart
│ │ ├── onboarding_how_it_works_screen.dart
│ │ └── onboarding_motivation_screen.dart
│ └── application/
│ └── onboarding_controller.dart
├── goals/
│ ├── presentation/
│ │ ├── goals_list_screen.dart
│ │ ├── goal_edit_screen.dart
│ │ └── goal_detail_screen.dart
│ └── application/
│ ├── goals_controller.dart
│ └── goal_detail_controller.dart
├── countdown/
│ ├── presentation/
│ │ ├── home_countdown_screen.dart
│ │ ├── bucket_list_confirmation_screen.dart
│ │ └── countdown_summary_screen.dart
│ └── application/
│ └── countdown_controller.dart
├── social/
│ ├── presentation/
│ │ ├── social_feed_screen.dart
│ │ ├── leaderboards_screen.dart
│ │ └── public_profile_screen.dart
│ └── application/
│ └── social_controller.dart
├── profile/
│ ├── presentation/
│ │ ├── profile_screen.dart
│ │ └── profile_edit_screen.dart
│ └── application/
│ └── profile_controller.dart
├── settings/
│ ├── presentation/
│ │ ├── settings_home_screen.dart
│ │ ├── appearance_settings_screen.dart
│ │ ├── notification_settings_screen.dart
│ │ ├── privacy_settings_screen.dart
│ │ └── about_challenge_screen.dart
│ └── application/
│ └── settings_controller.dart
├── analytics/
│ ├── presentation/
│ │ └── insights_screen.dart
│ └── application/
│ └── insights_controller.dart
└── achievements/
├── presentation/
│ └── achievements_screen.dart
└── application/
└── achievements_controller.dart
```
## Tech Stack
- **Framework**: Flutter 3.10+
- **Language**: Dart 3.0+
- **State Management**: Riverpod
- **Backend**: Supabase (Auth, Database, Storage, Realtime)
- **Navigation**: Go Router
- **Local Storage**: Hive
- **Maps**: Google Maps Flutter, OpenStreetMap
- **Notifications**: Flutter Local Notifications
- **Charts**: fl_chart
- **Images**: Unsplash API, Pexels API, cached_network_image
- **OAuth**: google_sign_in, sign_in_with_apple
- **Location**: geolocator
## Getting Started
### Prerequisites
1. Flutter SDK (>=3.10.0)
2. Dart SDK (>=3.0.0)
3. Supabase project
4. Google Maps API key (optional)
5. Unsplash API key (optional)
6. Pexels API key (optional)
### Setup
1. Clone this repository
2. Install dependencies:
```bash
flutter pub get
```
3. Set up environment variables:
```bash
cp .env.example .env
# Edit .env with your credentials
```
4. Run the app:
```bash
flutter run
```
## Key Features
### Phase 1 (MVP) ✅
- [x] User authentication (email, Google, Apple)
- [x] Bucket list creation (up to 20 goals)
- [x] 1356-day countdown timer
- [x] Goal progress tracking
- [x] Profile management
- [x] Notifications (daily, weekly, milestones)
- [x] Analytics tracking
### Phase 2 (Social) ✅
- [x] Public/private profiles
- [x] Social feed
- [x] Leaderboards
- [x] Following system
- [x] Achievements system
### Phase 3 (Advanced) ✅
- [x] Charts and analytics
- [x] Image API integration (Unsplash, Pexels)
- [x] Map integration for location-based goals (Google Maps, OSM)
- [x] Offline support with caching
- [x] Appearance settings (theme, time format)
### Phase 4 (Polish and Release) 🚧
- [x] Accessibility improvements
- [x] Performance optimizations
- [x] App store documentation
- [x] Beta testing plan
- [x] Security audit checklist
- [x] Code review checklist
- [x] Release notes
- [x] User guide and FAQ
- [x] Developer documentation
- [ ] Beta testing execution
- [ ] App store submission
## Database Schema
The app uses Supabase PostgreSQL with the following main tables:
- `users` - User profiles and countdown data
- `goals` - Bucket list items
- `goal_steps` - Granular goal milestones
- `followers` - Social relationships
- `activities` - Timeline events
- `notifications` - Notification history
- `achievements` - User achievements
## Architecture Patterns
- **MVVM/Clean Architecture** with clear separation of concerns
- **Repository Pattern** for data access
- **Riverpod StateNotifier** for state management
- **Feature-based organization** for scalability
- **Dependency Injection** via providers
## Documentation
- [Release Notes](RELEASE_NOTES.md)
- [User Guide](USER_GUIDE.md)
- [FAQ](FAQ.md)
- [Developer Guide](DEVELOPER_GUIDE.md)
- [App Store Assets](app_store_assets/)
- [Release Preparation Checklist](app_store_assets/release_preparation_checklist.md)
- [Beta Testing Plan](app_store_assets/beta_testing_plan.md)
- [Security Audit Checklist](app_store_assets/security_audit_checklist.md)
- [Code Review Checklist](app_store_assets/code_review_checklist.md)
- [App Icon Guidelines](app_store_assets/app_icon_guidelines.md)
- [Screenshot Guidelines](app_store_assets/screenshot_guidelines.md)
- [Post-Launch Planning](app_store_assets/post_launch_planning.md)
## Testing
The project includes comprehensive test coverage:
- **Unit Tests**: Core utilities, models, repositories
- **Widget Tests**: Screen components and interactions
- **Integration Tests**: End-to-end user flows
Run tests:
```bash
flutter test
```
## Development Status
**Current Version**: 1.0.0 (Pre-release)
The project is in Phase 4 (Polish and Release) with all core features implemented. The app is ready for beta testing and app store submission.
## Contributing
Please see [DEVELOPER_GUIDE.md](DEVELOPER_GUIDE.md) for contribution guidelines.
## License
This project is licensed under the MIT License.
## Support
- **Email**: support@lifetimer.app
- **Twitter**: @LifeTimerApp
- **Discord**: https://discord.gg/lifetimer
- **Website**: https://lifetimer.app