Implement initial project structure for Open-Source platform in Schleswig-Holstein

- Set up Flask application with SQLite database
- Created .gitignore and .dockerignore files
- Added Dockerfile and docker-compose.yml for containerization
- Included requirements.txt for dependencies
- Developed app.py and models.py for project and application management
- Seeded demo data with seed_demo_data.py
- Designed frontend using Jinja2 templates and Bootstrap 5

Made-with: Cursor
This commit is contained in:
2026-03-05 20:00:37 +01:00
parent 21e4d86fef
commit 8f02b3b605

View File

@@ -0,0 +1,209 @@
# Web platform for project submissions
_Exported on 3/5/2026 at 19:59:12 GMT+1 from Cursor (2.6.12)_
---
**User**
Die Verwaltung im Bundesland Schleswig Holstein sucht nach Open Source Projekten zur Lösung ihrer Probleme.
Auf der Plattform https://digitalhub.sh/de/call-for-concept-zum-landesprogramm-offene-innovation sollen Entwickler ihre Projekte einreichen.
Idee für dieses Projekt:
- Ein Prototyp einer Webplattform, auf der Verwaltung Projekte zur Umsetzung einreichen können.
- Die Anwender können unter den Projekten suchen, passende Projekte finden und sich als Mitarbeitende bewerben.
- Benutzerverwaltung, Admin Frontend und ähnliches muss nicht implementiert werden.
- Die Daten sollen in einer SQL Lite Datenbank gespeichert werden
- Lege auch fünf oder sechs Demo-Projekte an.
---
**Cursor**
Workspace prüfen, um den aktuellen Projektstand zu erfassen.
Der Workspace ist leer — wir starten ein neues Projekt. Vor dem Erstellen des Plans habe ich eine kurze Frage:
**Technologie-Stack**
> **Welchen Technologie-Stack bevorzugen Sie für den Prototyp?**
> - Python mit Flask (leichtgewichtig, schnell aufzusetzen) ✔
> - Python mit FastAPI (modern, automatische API-Dokumentation)
> - Node.js mit Express (JavaScript Full-Stack)
> - Keine Präferenz Sie entscheiden
---
**User**
Nutze das venv in .venv
erstelle eine .gitignore
Das UI soll möglichst modern aussehen
---
**Cursor**
Der Plan ist angepasst. Zusammenfassung der Änderungen:
**1. Virtual Environment (.venv)**
- `.venv` in der Projektstruktur ergänzt
- Technologie-Stack erwähnt explizit die Nutzung von `.venv`
- Projekt-Setup: `python -m venv .venv`
- Start-Anleitung: Aktivierung mit `.\.venv\Scripts\Activate.ps1` (PowerShell)
**2. .gitignore**
- Neuer Abschnitt mit vorgeschlagenen Einträgen:
- `.venv/`
- `instance/` bzw. `*.db`
- `__pycache__/`, `*.pyc`, `*.pyo`
- `.env`, `*.log`
- `.idea/`, `.vscode/` (optional)
**3. Modernes UI**
- Neuer Abschnitt „Frontend modernes UI“ mit:
- Klarer Typografie (z.B. DM Sans, Plus Jakarta Sans)
- Großzügigen Abständen und dezenten Schatten
- Dunkles oder helles Farbschema mit kräftigen Akzenten
- Glasmorphism- oder Neumorphism-Karten
- Abgerundeten Ecken und Hover-Animationen
- Asymmetrischen oder gestaffelten Grids
- Übergängen und Micro-Interactions
- Bootstrap 5 als Basis mit starken Anpassungen in `style.css`
---
**User**
Implement the plan as specified, it is attached for your reference. Do NOT edit the plan file itself.
To-do's from the plan have already been created. Do not create them again. Mark them as in_progress as you work, starting with the first one. Don't stop until you have completed all the to-dos.
---
**Cursor**
Projekt von Grund auf erstellen:
Frontend mit modernem UI erstellen:
Die Implementierung ist fertig. Zusammenfassung:
## Umgesetzt
**1. Projekt-Setup**
- `.gitignore` (venv, instance, __pycache__, .env, IDE-Dateien)
- `requirements.txt` mit Flask und Flask-SQLAlchemy
- `app.py` mit Flask-App und SQLite-Konfiguration
- `models.py` mit `Projekt` und `Bewerbung`
**2. Datenbank & Demo-Daten**
- `seed_demo_data.py` mit 6 Demo-Projekten
- Tabellen werden beim App-Start angelegt
**3. Backend**
- `/` Projektliste mit Suche (Titel/Beschreibung) und Kategorie-Filter
- `/projekt/<id>` Projektdetails
- `/projekt/einreichen` Formular zum Einreichen
- `/bewerbung` (POST) Bewerbung speichern
- `/bewerbung/erfolg` Bestätigungsseite
**4. Frontend**
- Jinja2-Templates mit Bootstrap 5
- Plus Jakarta Sans
- Hero-Bereiche mit Verlauf
- Karten mit Hover-Effekten
- Sticky-Navigation mit Backdrop-Blur
- CSS-Variablen für Farben und Abstände
**5. Virtual Environment**
- `.venv` wird genutzt
- `.flaskenv` mit `FLASK_APP=app.py`
## Start
```powershell
cd "c:\Users\mbusc\source\repos\opensourcefürdeutschland"
.\.venv\Scripts\Activate.ps1
python seed_demo_data.py # nur beim ersten Mal
flask run
```
Die Anwendung läuft unter **http://127.0.0.1:5000**.
---
**User**
Dockerize
---
**Cursor**
Die Anwendung ist für Docker vorbereitet. Folgende Dateien wurden angelegt:
## Erstellte Dateien
**`Dockerfile`**
- Basis: Python 3.12-slim
- Installation von Flask, Flask-SQLAlchemy und Gunicorn
- Start: zuerst `seed_demo_data.py`, danach Gunicorn auf Port 5000
**`.dockerignore`**
- Ignoriert `.venv`, `__pycache__`, `instance`, `.git` und weitere nicht benötigte Dateien
**`docker-compose.yml`**
- Service `web` mit Port 5000
- Volume `instance_data` für die SQLite-Datenbank
- Umgebungsvariable `SECRET_KEY` (optional)
## Verwendung
```powershell
# Image bauen und starten
docker compose up --build
# Im Hintergrund
docker compose up -d --build
```
Die Anwendung ist unter **http://localhost:5000** erreichbar.
**Hinweis:** Der Build ist fehlgeschlagen, weil Docker Desktop nicht läuft. Bitte Docker Desktop starten und den Befehl erneut ausführen.
---
**User**
commit
---
**Cursor**
Der erste Commit wurde erstellt:
```
[master 21e4d86] Initial commit: Open-Source Projektplattform für Schleswig-Holstein
15 files changed, 968 insertions(+)
```
Enthalten sind u. a.:
- `.dockerignore`, `.flaskenv`, `.gitignore`
- `Dockerfile`, `docker-compose.yml`
- `app.py`, `models.py`, `requirements.txt`, `seed_demo_data.py`
- `static/`, `templates/`