AgendaTasks/README.md
m3mo cb308bbf68 Initial project setup with Clean Architecture
- Flutter frontend with Provider state management
- FastAPI backend with SQLAlchemy ORM
- Internationalization support (EN/DE)
- Clean Architecture folder structure
- GoRouter for navigation
- GetIt for dependency injection
2026-02-02 16:43:37 +01:00

154 lines
3.8 KiB
Markdown

# 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
```bash
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
```bash
# Install dependencies
flutter pub get
# Generate localizations
flutter gen-l10n
# Run on Android (with backend running)
flutter run
```
### Running Tests
**Backend:**
```bash
cd backend
pytest -v
```
**Frontend:**
```bash
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
1. Create a new ARB file: `lib/l10n/app_XX.arb`
2. Copy content from `app_en.arb` and translate
3. Run `flutter gen-l10n`
4. Add the locale to `supportedLocales` in `SettingsViewModel`
## License
This project is part of a course at HFTM (Höhere Fachschule für Technik Mittelland).