- Elixir 78.9%
- HTML 17.7%
- JavaScript 2.4%
- Dockerfile 0.8%
|
All checks were successful
Build OCI image / test-and-build (push) Successful in 4m3s
|
||
|---|---|---|
| .forgejo/workflows | ||
| assets | ||
| config | ||
| lib | ||
| priv | ||
| rel/overlays/bin | ||
| test | ||
| .formatter.exs | ||
| .gitignore | ||
| Containerfile | ||
| mise.toml | ||
| mix.exs | ||
| mix.lock | ||
| README.md | ||
Slate
Slate ist ein schlankes Ticketsystem mit Phoenix LiveView: ein responsives Kanban-Board für Backlog, aktive Arbeit, Review und erledigte Tickets.
Features
- Phoenix LiveView UI ohne SPA-Build-Overhead
- SQLite als persistenter Single-Container-Store
- Lokale Userverwaltung mit erstem User als globalem Admin
- Teams mit Teamlead-Rolle; Teamleads verwalten Mitglieder ihrer eigenen Teams
- Optionale OIDC-Anmeldung, zum Beispiel mit Authentik
- Spracheinstellung pro User: Englisch als Default, Deutsch optional
- Ticketfelder: Titel, Beschreibung, Status, Priorität, Verantwortliche, Labels, Fälligkeitsdatum
- Responsives Board mit schnellen Statuswechseln
- OCI Image via
Containerfile, lauffähig mit Podman ohnedocker-compose - Forgejo Workflow unter
.forgejo/workflows/container.yml
Entwicklung
Das Projekt nutzt mise für Erlang/Elixir.
mise trust
mise install
mise exec -- mix setup
mise exec -- mix phx.server
Danach ist Slate unter http://localhost:4000 erreichbar.
Tests
mise exec -- mix test
OCI Image Bauen
podman build -f Containerfile -t slate:local .
Mit Podman Starten
Vorher einen Secret-Key erzeugen:
mise exec -- mix phx.gen.secret
Container starten:
podman volume create slate-data
podman run --rm \
--name slate \
-p 4000:4000 \
-e PHX_HOST=localhost \
-e SECRET_KEY_BASE="change-me" \
-v slate-data:/data:Z \
slate:local
Das Startscript führt Migrationen automatisch aus. Die SQLite-Datenbank liegt standardmäßig unter /data/slate.db; überschreibbar mit DATABASE_PATH.
User, Teams und Sprache
Der erste lokal registrierte oder per OIDC angelegte User wird automatisch admin. Weitere User starten als member.
admin: kann Teams erstellen und alle Teammitgliedschaften verwaltenteam lead: ist eine Rolle innerhalb eines Teams und darf dort Mitglieder hinzufügen, entfernen und Rollen ändernmember: normale Nutzung ohne globale Verwaltungsrechte
Die Produktsprache wird in den Account-Settings pro User gesetzt. Englisch ist Default, Deutsch ist optional verfügbar.
OIDC mit Authentik
OIDC ist optional. Wenn diese Variablen gesetzt sind, erscheint auf der Login-Seite zusätzlich der OIDC-Login:
OIDC_ISSUER=https://auth.example.org/application/o/slate/
OIDC_CLIENT_ID=...
OIDC_CLIENT_SECRET=...
OIDC_REDIRECT_URI=https://slate.example.org/auth/oidc/callback
In Authentik muss die Redirect URI auf /auth/oidc/callback zeigen. Scopes: openid profile email.
Beim Containerstart können die Variablen einfach ergänzt werden:
podman run --rm \
--name slate \
-p 4000:4000 \
-e PHX_HOST=slate.example.org \
-e SECRET_KEY_BASE="change-me" \
-e OIDC_ISSUER="https://auth.example.org/application/o/slate/" \
-e OIDC_CLIENT_ID="..." \
-e OIDC_CLIENT_SECRET="..." \
-e OIDC_REDIRECT_URI="https://slate.example.org/auth/oidc/callback" \
-v slate-data:/data:Z \
slate:local
Forgejo CI/CD
Der Workflow .forgejo/workflows/container.yml führt Tests aus, baut das OCI Image mit Podman und pusht bei Pushes auf main, wenn diese Werte gesetzt sind:
- Variable
REGISTRY, zum Beispielgit.example.org - Variable
IMAGE_NAME, optional, Standardslate - Secret
REGISTRY_USERNAME - Secret
REGISTRY_PASSWORD
Ohne Registry-Konfiguration bleibt der Workflow ein Test- und Build-Check.