Files
haushalt/module.md
Marek Lenczewski 5198769de4 TaskSchema module
2026-04-12 15:42:48 +02:00

5.2 KiB

Datei

Implementierungs-Schritte als Feature-Module - WIE es gebaut wird

Setup module

Backend

  • Setup Symfony ./backend

Frontend

  • Setup Vue ./frontend, router, pinia
  • App.vue - no content

App

  • Setup Kotlin ./app, navigation compose
  • MainScreen.kt - no content

Features

  • Symfony, Vue and Kotlin minimal setup, no content

Base module

Backend

  • nothing

Frontend

  • App.vue - layout: breadcrumb, main area
  • router - / start page route
  • Startpage.vue - start page, no content

App

  • MainScreen.kt - layout: breadcrumb, main area
  • StartScreen.kt - start page, no content

Features

  • Standard layout for all pages: breadcrumb, main area

Task module

Backend

  • Task - Task entity
    • id, name, date (due), status
  • TaskStatus - Enum for task status
    • active, done, inactive
  • TaskController - Task routes
    • index, show, create, update, delete, toggle (active/done)
  • TaskManager - Task CRUD
    • create, update, delete, toggle
  • TaskRepository - Default task queries
    • currentTasks()
  • TaskDto - Dto for create and update task

Frontend

  • Startpage.vue - quader button for tasks
  • App.vue - register task routes in breadcrumb.
  • router - tasks routes /tasks, /tasks/all, /tasks/create, /tasks/:id
  • Task.vue
    • Display current tasks (now to +2 weeks and without date) as list with name (done strikethrough), onclick toggle status, order by date (no-date then date asc, hide inactive)
    • top right nav - list icon (all tasks), + icon (create), eye icon (toggle task visibility by active/done)
  • TaskAll.vue
    • Display all tasks as list with name (done strikethrough, past faded), pencil icon (edit), bin icon (delete), onclick toggle status, order by date (no-date then date asc)
    • top right nav - + icon (create)
  • TaskCreate.vue - Display form with name-text, date-date, status-select, save-button, abort-button
  • TaskEdit.vue
    • Display form with name-text, date-date, status-select, update-button, reset-button, abort-button, use current values
  • api.js - API routes to symfony

App

  • StartScreen.kt - quader button for tasks
  • MainScreen.kt - register task routes in breadcrumb.
  • NavHost - tasks routes /tasks, /tasks/all, /tasks/create, /tasks/:id
  • TaskScreen.kt
    • Display current tasks (now to +2 weeks and without date) as list with name (done strikethrough), onclick toggle status, order by date (no-date then date asc, hide inactive)
    • top right nav - list icon (all tasks), + icon (create), eye icon (toggle task visibility by active/done)
  • TaskAllScreen.kt
    • Display all tasks as list with name (done strikethrough, past faded), pencil icon (edit), bin icon (delete), onclick toggle status, order by date (no-date then date asc)
    • top right nav - + icon (create)
  • TaskCreateScreen.kt - Display form with name-text, date-date, status-select, save-button, abort-button
  • TaskEditScreen.kt
    • Display form with name-text, date-date, status-select, update-button, reset-button, abort-button, use current values
  • TaskApi.kt - API calls to symfony

Features

  • Start page: task button
  • Task page: current tasks ordered by date, filter done
  • TaskAll page: all tasks ordered by date, past faded, delete task
  • TaskCreate page: create task
  • TaskEdit page: update task

App update module

Backend

  • public/app/version.json - version info (versionCode, apkFile)
  • public/app/haushalt.apk - current APK (manually deployed)

App

  • AppUpdateApi.kt - version check endpoint
  • AppUpdater.kt - check version, download APK, trigger install
  • StartScreen.kt - "Update prüfen" button with state feedback
  • AndroidManifest.xml - REQUEST_INSTALL_PACKAGES, FileProvider
  • file_paths.xml - cache path for downloaded APK

Features

  • Manual update check from start screen
  • Download and install new APK from server
  • No Play Store required

TaskSchema module

Backend

  • Task - add schema (n:1)
  • TaskSchema - id, name, status, taskStatus, date, repeat (json), start, end
    • repeat=null → single, repeat={"daily"/"weekly"/"monthly":...} → repeating
  • TaskSchemaStatus - active, inactive
  • TaskController - remove create route
  • TaskManager - remove create
  • TaskSchemaController - index, show, create, update, delete
  • TaskSchemaManager - create (single=task only, repeat=schema+generate), update (remove+generate), delete (remove+schema)
  • TaskGenerator - generateTasks, removeTasks, generateNewTasks (scheduler)
  • Scheduler - daily at 03:00, messenger:consume via DDEV daemon
  • Migration - task_schema table + schema_id FK

Frontend

  • TaskCreate.vue removed, SchemaCreate/SchemaEdit/SchemaAll added
  • Task.vue + TaskAll.vue - calendar + plus icons → /schemas, /schemas/create
  • Form: name, (status + taskStatus), repeat, weekday/monthday grid, (start + end)

App

  • same changes as Frontend

Features

  • Single schema: task directly, no schema persisted
  • Repeat schema: tasks for period (max 14 days), scheduler fills daily
  • Update: remove non-past tasks + regenerate
  • Delete: remove non-past tasks + schema

Category module

Backend

  • Category - Category entity
    • id, name, color
  • Task - Task entity
    • category
  • CategoryController - Category routes
    • index, show, create, update, delete
  • TaskSchemaManager - TaskSchema CRUD
  • TaskSchemaRepository - TaskSchema queries