Tests for UserEntity, UserModel, and TokenModel covering serialization, parsing, and equality.
Agenda Tasks
A calendar-based daily task management application built with Flutter and FastAPI.
Overview
Agenda Tasks helps you manage your daily tasks with a focus on what needs to be done today, not endless lists. Select a day, see your tasks, add new ones, mark them complete, or reschedule them for tomorrow.
Features
- Daily Agenda View: See all tasks for a selected day
- Calendar Navigation: Browse and select dates easily
- Task Management: Create, edit, delete, and complete tasks
- Priority Levels: Low, Medium, High with color coding
- Reschedule: Move tasks to tomorrow with one tap
- Filtering: View All, Active, or Completed tasks
- Internationalization: English and German language support
- Dark Mode: System default, Light, or Dark theme
Architecture
The project follows Clean Architecture principles with a clear separation of concerns:
lib/
├── core/ # Shared utilities, DI, errors, logging
├── features/
│ ├── tasks/
│ │ ├── data/ # Models, DataSources, Repository implementations
│ │ ├── domain/ # Entities, Enums, Repository interfaces
│ │ └── presentation/# ViewModels, Pages, Widgets
│ └── settings/
├── routing/ # GoRouter configuration
└── l10n/ # Localization (ARB files)
State Management
- Provider with ViewModel pattern
- Each feature has its own ViewModel (ChangeNotifier)
- Result pattern for error handling
Routing
Using go_router for declarative routing:
| Route | Page |
|---|---|
/ |
Daily Agenda |
/calendar |
Calendar View |
/task/new?date=YYYY-MM-DD |
Create Task |
/task/:id/edit |
Edit Task |
/settings |
Settings |
Backend
REST API built with FastAPI (Python):
backend/
├── app/
│ ├── main.py # FastAPI app
│ ├── routes.py # API endpoints
│ ├── models.py # SQLAlchemy models
│ ├── schemas.py # Pydantic schemas
│ ├── services.py # Business logic
│ ├── db.py # Database setup
│ └── tests/ # Pytest tests
└── requirements.txt
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /tasks?date=YYYY-MM-DD |
Get tasks by date |
| POST | /tasks |
Create task |
| PUT | /tasks/{id} |
Update task |
| DELETE | /tasks/{id} |
Delete task |
| PATCH | /tasks/{id}/toggle |
Toggle completion |
| POST | /tasks/{id}/reschedule |
Reschedule task |
Getting Started
Prerequisites
- Flutter SDK 3.10+
- Python 3.11+
- Android Studio / VS Code
Backend Setup
cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy environment file
cp .env.example .env
# Run server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
Frontend Setup
# Install dependencies
flutter pub get
# Generate localizations
flutter gen-l10n
# Run on Android (with backend running)
flutter run
Running Tests
Backend:
cd backend
pytest -v
Frontend:
flutter test
Internationalization (i18n)
The app supports multiple languages through ARB files in lib/l10n/:
app_en.arb- English (default)app_de.arb- German
Adding a New Language
- Create a new ARB file:
lib/l10n/app_XX.arb - Copy content from
app_en.arband translate - Run
flutter gen-l10n - Add the locale to
supportedLocalesinSettingsViewModel
License
This project is part of a course at HFTM (Höhere Fachschule für Technik Mittelland).
Description
Languages
Dart
74.7%
C++
8%
Python
7%
CMake
6.1%
Shell
2.6%
Other
1.6%