Prototype implementation

This commit is contained in:
tegwick 2026-05-08 14:26:48 +02:00
parent 315143a6fc
commit 14b0bc6d01
160 changed files with 5731 additions and 42 deletions

View file

@ -1,7 +1,7 @@
---
id: WP-0001
title: Projektgerüst — Django-Setup, Tailwind, Dev-Stack
status: todo
status: done
phase: 1-of-12
created: "2026-05-08"
---
@ -20,7 +20,7 @@ für PostgreSQL, pytest-django, Makefile.
```task
id: WP-0001-T01
title: pyproject.toml und uv-Projektstruktur anlegen
status: todo
status: done
Erstelle `pyproject.toml` mit uv als Package-Manager.
@ -41,7 +41,7 @@ Führe `uv sync` aus und bestätige, dass die virtuelle Umgebung erstellt wird.
```task
id: WP-0001-T02
title: Django-Projekt initialisieren und Settings-Struktur anlegen
status: todo
status: done
Führe `uv run django-admin startproject vergabe_teilnahme .` aus
(Punkt am Ende — kein verschachteltes Projektverzeichnis).
@ -63,7 +63,7 @@ Passe `manage.py` und `vergabe_teilnahme/wsgi.py` auf
```task
id: WP-0001-T03
title: .env.example und PostgreSQL-Konfiguration
status: todo
status: done
Erstelle `.env.example`:
```
@ -85,7 +85,7 @@ Prüfe dass `.env` und `*.sqlite3` in `.gitignore` enthalten sind.
```task
id: WP-0001-T04
title: Alle Django-Apps anlegen
status: todo
status: done
Erstelle folgende Apps mit `uv run manage.py startapp <name>`:
core, accounts, ausschreibungen, lose, aufgaben,
@ -105,7 +105,7 @@ Stelle sicher, dass `django.contrib.contenttypes` ebenfalls in INSTALLED_APPS is
```task
id: WP-0001-T05
title: Tailwind CSS v4 via Vite integrieren
status: todo
status: done
Erstelle `package.json` im Projektwurzelverzeichnis:
```json
@ -182,7 +182,7 @@ Führe `npm install` aus.
```task
id: WP-0001-T06
title: HTMX und Alpine.js einbinden
status: todo
status: done
Lade HTMX und Alpine.js als lokale Vendor-Dateien (keine CDN-Abhängigkeit):
- `static/vendor/htmx/htmx.min.js` — HTMX 2.x (von unpkg herunterladen)
@ -201,7 +201,7 @@ Prüfe: `ls static/vendor/htmx/` und `ls static/vendor/alpinejs/` sollten die Da
```task
id: WP-0001-T07
title: Docker Compose für Entwicklungs-PostgreSQL
status: todo
status: done
Erstelle `docker-compose.dev.yml`:
```yaml
@ -230,7 +230,7 @@ Prüfe Verbindung: `uv run manage.py check --database default`
```task
id: WP-0001-T08
title: pytest-django konfigurieren
status: todo
status: done
Füge in `pyproject.toml` hinzu:
```toml
@ -264,7 +264,7 @@ Prüfe: `uv run pytest --co -q` (keine Tests vorhanden, aber Konfiguration valid
```task
id: WP-0001-T09
title: Makefile für häufige Dev-Commands
status: todo
status: done
Erstelle `Makefile` im Projektwurzel:
```makefile
@ -307,7 +307,7 @@ Prüfe: `make db` startet PostgreSQL, `make migrate` läuft fehlerfrei durch
```task
id: WP-0001-T10
title: Django URL-Grundkonfiguration und Health-Check
status: todo
status: done
Editiere `vergabe_teilnahme/urls.py`:
```python
@ -343,7 +343,7 @@ gibt `{"status": "ok"}` zurück.
```task
id: WP-0001-T11
title: CLAUDE.md mit Build-Commands aktualisieren
status: todo
status: done
Aktualisiere `/home/worsch/vergabe-teilnahme/CLAUDE.md` um einen Abschnitt
"## Entwicklungs-Commands":
@ -389,7 +389,7 @@ Füge außerdem `static/dist/` zu `.gitignore` hinzu.
```task
id: WP-0001-T12
title: Erstes `uv run manage.py migrate` und Smoke-Test
status: todo
status: done
Führe die gesamte initiale Setup-Sequenz durch und verifiziere:

View file

@ -1,7 +1,7 @@
---
id: WP-0002
title: Fachmodelle — alle Django-Models, Migrationen, Admin
status: todo
status: done
phase: 2-of-12
created: "2026-05-08"
depends_on: WP-0001
@ -21,7 +21,7 @@ und ein Management-Command für Seed-Daten.
```task
id: WP-0002-T01
title: Accounts-App: Mitarbeiter-Modell (AbstractUser)
status: todo
status: done
Datei: `vergabe_teilnahme/apps/accounts/models.py`
@ -55,7 +55,7 @@ Setze `AUTH_USER_MODEL = 'accounts.Mitarbeiter'` in `settings/base.py` (bereits
```task
id: WP-0002-T02
title: Core-App: FlexibleModel-Mixin und Basis-Infrastruktur
status: todo
status: done
Datei: `vergabe_teilnahme/apps/core/models.py`
@ -104,7 +104,7 @@ Alle vier in `core/admin.py` registrieren.
```task
id: WP-0002-T03
title: Core-App: services.py mit Utility-Funktionen
status: todo
status: done
Datei: `vergabe_teilnahme/apps/core/services.py`
@ -159,7 +159,7 @@ Schreibe Tests in `vergabe_teilnahme/apps/core/tests/test_services.py`:
```task
id: WP-0002-T04
title: Ausschreibungen-App: Ausschreibung-Modell
status: todo
status: done
Datei: `vergabe_teilnahme/apps/ausschreibungen/models.py`
@ -183,7 +183,7 @@ Admin-Registrierung mit list_display=['titel', 'ausschreiber', 'status', 'abgabe
```task
id: WP-0002-T05
title: Lose-App: Los- und Anforderung-Modell
status: todo
status: done
Datei: `vergabe_teilnahme/apps/lose/models.py`
@ -215,7 +215,7 @@ Admin für beide Modelle.
```task
id: WP-0002-T06
title: Aufgaben-App: Aufgabe- und Bieterfrage-Modell
status: todo
status: done
Datei: `vergabe_teilnahme/apps/aufgaben/models.py`
@ -242,7 +242,7 @@ Admin für beide Modelle.
```task
id: WP-0002-T07
title: Dokumente-App: Dokument-Modell mit Datei-Upload
status: todo
status: done
Datei: `vergabe_teilnahme/apps/dokumente/models.py`
@ -270,7 +270,7 @@ Admin-Registrierung.
```task
id: WP-0002-T08
title: Preise-App: Preispunkt-Modell
status: todo
status: done
Datei: `vergabe_teilnahme/apps/preise/models.py`
@ -303,7 +303,7 @@ Admin mit list_display=['konkrete_leistung', 'leistungstyp', 'einzelpreis', 'ver
```task
id: WP-0002-T09
title: Partner-App: Subunternehmer und Dienstleistertyp
status: todo
status: done
Datei: `vergabe_teilnahme/apps/partner/models.py`
@ -336,7 +336,7 @@ Admin für alle drei Modelle.
```task
id: WP-0002-T10
title: Bibliothek-App: Nachweis, Referenz, Leistungsblatt, Entscheidungsregel
status: todo
status: done
Datei: `vergabe_teilnahme/apps/bibliothek/models.py`
@ -375,7 +375,7 @@ Admin für alle vier Modelle.
```task
id: WP-0002-T11
title: Marktbegleiter-App: Marktbegleiter und Ausschreibungspassage
status: todo
status: done
Datei: `vergabe_teilnahme/apps/marktbegleiter/models.py`
@ -415,7 +415,7 @@ Admin für beide Modelle.
```task
id: WP-0002-T12
title: Nachbetrachtung- und Feedback-Modelle
status: todo
status: done
Datei: `vergabe_teilnahme/apps/nachbetrachtung/models.py`
@ -453,7 +453,7 @@ Admin für beide Modelle.
```task
id: WP-0002-T13
title: Alle Migrationen generieren und ausführen
status: todo
status: done
Führe aus (in dieser Reihenfolge, da Apps voneinander abhängen):
```bash
@ -482,7 +482,7 @@ Prüfe: `uv run manage.py showmigrations` → alle Migrationen als [X] markiert.
```task
id: WP-0002-T14
title: Management-Command für Entwicklungs-Seed-Daten
status: todo
status: done
Erstelle `vergabe_teilnahme/apps/core/management/commands/seed_dev.py`

View file

@ -1,7 +1,7 @@
---
id: WP-0003
title: Basis-UI — Shell-Layout, Templates, Template-Tags, Navigation
status: todo
status: done
phase: 3-of-12
created: "2026-05-08"
depends_on: WP-0002
@ -24,7 +24,7 @@ Tailwind-Klassen aus WP-0001 (`static/src/main.css`) werden hier genutzt.
```task
id: WP-0003-T01
title: Template-Verzeichnisstruktur und base.html Shell-Layout
status: todo
status: done
Erstelle Verzeichnisstruktur:
```
@ -94,7 +94,7 @@ TEMPLATES = [{
```task
id: WP-0003-T02
title: Topbar-Partial
status: todo
status: done
`vergabe_teilnahme/templates/partials/topbar.html`:
@ -120,7 +120,7 @@ Topbar-Höhe: `h-14` (56px), `bg-white border-b border-slate-200`.
```task
id: WP-0003-T03
title: Sidebar globale Navigation
status: todo
status: done
`vergabe_teilnahme/templates/partials/sidebar.html`:
@ -175,7 +175,7 @@ Füge CSS-Hilfsklassen in `static/src/main.css` hinzu:
```task
id: WP-0003-T04
title: Context-Processor und Phasen-Navigator-Partial
status: todo
status: done
**Context-Processor** `vergabe_teilnahme/apps/core/context_processors.py`:
```python
@ -223,7 +223,7 @@ Implementiere diese Funktion in `core/services.py`.
```task
id: WP-0003-T05
title: Breadcrumb-Partial
status: todo
status: done
`vergabe_teilnahme/templates/partials/breadcrumb.html`:
@ -252,7 +252,7 @@ Erstelle eine Hilfsfunktion `core.views_helpers.make_breadcrumbs(*args)` die die
```task
id: WP-0003-T06
title: Template-Tags: status_badge und phase_badge
status: todo
status: done
Erstelle `vergabe_teilnahme/apps/core/templatetags/__init__.py` (leer).
Erstelle `vergabe_teilnahme/apps/core/templatetags/vergabe_tags.py`.
@ -306,7 +306,7 @@ Erstelle `partials/status_badge.html`:
```task
id: WP-0003-T07
title: Template-Tag: render_field (EntityFieldConfig-aware)
status: todo
status: done
Ergänze `vergabe_tags.py`:
@ -359,7 +359,7 @@ da Admin-Änderungen sofort wirken sollen — entscheide dich für kein Caching
```task
id: WP-0003-T08
title: Feedback-Button und Feedback-Modal-Partial
status: todo
status: done
`partials/feedback_button.html`:
```html
@ -419,7 +419,7 @@ Verkable URLs in `feedback/urls.py` und include in Haupt-URLs.
```task
id: WP-0003-T09
title: Error-Templates und Django-URL-Konfiguration
status: todo
status: done
`vergabe_teilnahme/templates/errors/404.html`:
```html
@ -464,7 +464,7 @@ path('lose/', include('vergabe_teilnahme.apps.lose.urls')),
```task
id: WP-0003-T10
title: Einfache Startseite mit Redirect und Smoke-Test
status: todo
status: done
Erstelle `core/views.py` mit einer einfachen Redirect-View auf das Dashboard:
```python