ID: DOC_000013 | Version: 0.2.3 | Status: Draft By: Codex (GPT-5) # Development ## Repository-Struktur (Kurz) - `backend/`: FastAPI-App, Auth, Update-Logik, Templates, Static Assets. - `scripts/`: Install/Deploy/Update/Helper-Skripte. - `systemd/`: Beispiel-Unit. - `docs/architecture/`: OpenAPI-Spezifikation fuer Update-Service. - `docs/`: Dokumentation. - `assets/`: Branding und Design. - `sk.sh`: Legacy-CLI. ## Lokales Setup ```bash ./scripts/create_venv.sh source .venv/bin/activate ./scripts/run.sh ``` Standard: `0.0.0.0:80`. Fuer andere Ports: ```bash HOST=127.0.0.1 PORT=8000 ./scripts/run.sh ``` ## Release-Upload (Dev/Prod) Das Update-Artefakt wird als tar.gz gebaut und ueber den Update-Service hochgeladen. Das Script nutzt `VERSION` und laedt ein vollstaendiges Release (kein Delta). Vorbereitung: ```bash cp update-addon.env.example update-addon.env ``` Beispiel (Dev): ```bash ./scripts/upload_release.sh --profile dev ``` ## Tests und Lint Im Repo sind keine automatisierten Tests enthalten. Verfuegbare Checks: - Bash-Syntax: `bash -n sk.sh` - ShellCheck: `shellcheck sk.sh` ## Coding Conventions - Bash 4+, `set -euo pipefail` in neuen Skripten. - Python: FastAPI-Patterns, klare Modultrennung (Auth, Actions, Update, OIDC). ## Beitrag und Workflow - Arbeite mit Feature-Branches. - Aktualisiere `VERSION`, Doku-Header und `CHANGELOG.md` gemaess SOP. - PRs sollten Verhalten, Risiken und manuelle Tests beschreiben. ## CI/CD Aktuell keine CI/CD-Pipeline im Repository definiert. ## Legacy/Interna - `SKD_UPDATE_URL` und `SKD_UPDATE_STATUS_URL` sind in `backend/settings.py` noch vorhanden, werden aber im aktuellen Code nicht genutzt. ## Externe Abhaengigkeiten (mit Quelle und Zweck) ### Python-Libraries (requirements.txt) - FastAPI: https://fastapi.tiangolo.com/ (Web-API und Routing) - Uvicorn: https://www.uvicorn.org/ (ASGI-Server) - Pydantic: https://docs.pydantic.dev/ (Datenmodelle und Validierung) - Jinja2: https://jinja.palletsprojects.com/ (HTML-Templates) - PyJWT: https://pyjwt.readthedocs.io/ (JWT-Erstellung und -Validierung) - python-pam: https://pypi.org/project/python-pam/ (PAM-Authentifizierung) - httpx: https://www.python-httpx.org/ (HTTP-Client fuer Update/OIDC) - cryptography: https://cryptography.io/ (Krypto-Abhaengigkeit fuer JWT) - PyYAML (optional): https://pyyaml.org/ (YAML-Parsing in `scripts/deploy.sh`) ### System-Tools - systemd: https://www.freedesktop.org/software/systemd/man/systemd.html (Service-Management) - Linux-PAM: https://www.linux-pam.org/ (System-Authentifizierung) - usermod/pkill/shutdown: https://man7.org/linux/man-pages/ (Account- und Session-Management) - curl/tar/sha256sum/rsync/git/ssh: https://man7.org/linux/man-pages/ (Install/Update/Deploy) - jq (optional): https://stedolan.github.io/jq/ (JSON-Parsing in Beispielen) - notify-send: https://developer.gnome.org/libnotify/ (Desktop-Benachrichtigungen) - paplay/aplay: https://www.freedesktop.org/wiki/Software/PulseAudio/ und https://alsa-project.org/ (Sound) ### Externe Services - Update-Service (intern): https://git.wlkns.org/stephan/update-webservice (Manifest/Status/Enrollment) - OIDC-Service (intern): https://git.wlkns.org/stephan/oicd (Login via OIDC) ## Weitere Dokumente - Architektur: `docs/ARCHITECTURE.md` - Deployment: `docs/DEPLOYMENT.md`