An AI-powered daily focus and productivity coach built with Flutter
Key Features • Screenshots • Architecture • Tech Stack • Getting Started • Project Structure
Anchor helps you stay productive through a simple daily cycle inspired by the metaphor: just as a ship's anchor prevents drifting in rough waters, your 3-5 key "anchor" tasks each day prevent your productivity from drifting into chaos.
| Morning | During the Day | Evening |
|---|---|---|
| Plan your anchors | Focus on one task | Reflect with AI coaching |
| Feature | Description |
|---|---|
| Task Management | Create tasks with estimated duration, mark 3-5 as daily "anchors", drag-and-drop reordering |
| Focus Timer | Pomodoro-style timer linked to tasks, tracks actual vs estimated time, interruption logging |
| Daily Reflection | Rate your mood (1-5), select blockers, write or record voice reflections |
| AI Coach | Personalized feedback powered by GPT-5, three adaptive modes (Normal, Deep, Celebration) |
| Voice Recording | Record audio reflections with Whisper transcription |
| History & Analytics | Weekly progress charts, mood trends, past reflections |
| Theming | Material Design 3 with light/dark mode support |
This project follows Clean Architecture principles with clear separation of concerns:
┌─────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ (Screens, Widgets, Riverpod Providers) │
├─────────────────────────────────────────────────────────┤
│ Domain Layer │
│ (Entities, Repository Interfaces) │
├─────────────────────────────────────────────────────────┤
│ Data Layer │
│ (Drift Database, Repository Implementations) │
└─────────────────────────────────────────────────────────┘
Key Patterns:
- State Management: Riverpod with AsyncNotifier pattern
- Navigation: GoRouter with declarative routing
- Database: Drift (SQLite) with type-safe queries
- Dependency Injection: Riverpod providers
| Category | Technology |
|---|---|
| Framework | Flutter 3.9+ |
| Language | Dart 3.0+ |
| State Management | Riverpod 2.6 (AsyncNotifier) |
| Database | Drift 2.28 (SQLite) |
| Navigation | GoRouter 14.8 |
| AI Integration | OpenAI API (GPT-5, Whisper) |
| Theming | FlexColorScheme + Material 3 |
| Code Generation | Freezed, JSON Serializable, Build Runner |
| Audio | flutter_sound, record |
| Notifications | flutter_local_notifications |
- Flutter SDK 3.9 or higher
- Dart SDK 3.0 or higher
- Android Studio / VS Code
- OpenAI API key (for AI features)
-
Clone the repository
git clone https://github.com/yourusername/anchor.git cd anchor -
Install dependencies
flutter pub get
-
Generate code (database, freezed classes)
dart run build_runner build --delete-conflicting-outputs
-
Run the app
flutter run
- Launch the app and complete onboarding
- Go to Settings → AI Configuration
- Enter your OpenAI API key
- The AI coach and voice transcription features will now work
Note: The app works without an API key, but AI coaching and voice transcription will be disabled.
lib/
├── core/ # Core utilities
│ ├── helpers/ # Date formatting, pattern analysis
│ ├── router/ # GoRouter configuration
│ ├── services/ # AI, Audio, Notification services
│ └── theme/ # Material 3 theming, colors, spacing
│
├── data/ # Data layer
│ ├── database/ # Drift database setup
│ │ ├── daos/ # Data Access Objects
│ │ └── tables/ # Table definitions
│ └── repositories/ # Repository implementations
│
├── domain/ # Domain layer (pure Dart)
│ ├── entities/ # Task, FocusSession, DailySummary
│ └── repositories/ # Abstract repository interfaces
│
├── presentation/ # UI layer
│ ├── providers/ # Riverpod state providers
│ ├── screens/ # App screens
│ │ ├── today/ # Main dashboard
│ │ ├── plan/ # Task planning
│ │ ├── focus/ # Focus timer
│ │ ├── reflection/ # Daily reflection
│ │ ├── history/ # Weekly history
│ │ ├── settings/ # App settings
│ │ └── onboarding/ # First-launch flow
│ └── widgets/ # Reusable widgets
│
└── main.dart # App entry point
| Table | Purpose |
|---|---|
tasks |
All tasks with anchor flag, completion status, ordering |
focus_sessions |
Timed work sessions linked to tasks |
daily_summaries |
End-of-day reflections, mood, AI coach messages |
settings |
Key-value store for app preferences |
See docs/DATABASE.md for detailed schema documentation.
| Document | Description |
|---|---|
| PROJECT_REPORT.md | Comprehensive project overview and technical decisions |
| PROJECT_PLAN.md | Development phases and implementation progress |
| DEVELOPER_GUIDE.md | Quick start guide for developers |
| DATABASE.md | Database schema and relationships |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Claude AI (Anthropic) - Development assistance, architecture decisions
- OpenAI - GPT-5 for coaching, Whisper for transcription
- Flutter Team - Amazing cross-platform framework
- Riverpod - Excellent state management solution
Ular Kimsanov
Mobile Application Development - December 2025
Made with Flutter





