Prototype implementation
This commit is contained in:
parent
315143a6fc
commit
14b0bc6d01
160 changed files with 5731 additions and 42 deletions
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue