m3mo 3c3da50a54 Fix backend deployment configuration
- Add psycopg2-binary for PostgreSQL database driver
- Update nginx config for HTTP-only access on IP address
2026-02-03 14:20:24 +01:00

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

  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).

Description
Calendar-based daily task management application with Flutter and FastAPI
Readme 20 MiB
Languages
Dart 74.7%
C++ 8%
Python 7%
CMake 6.1%
Shell 2.6%
Other 1.6%