# TicketTracker WebApp zum Erfassen von Ticket-Sessions mit Pausen, Minutenrundung und monatlichem Abschlussprozess. Sessions können in Monats- und Tagesansichten ausgewertet, bewertet, geschlossen, wieder geöffnet und gelöscht werden. ## Dokumentation - [Benutzeranleitung](docs/user-guide.md) - [Docker Release / Gitea Deployment](docs/docker-release.md) ## Stack - Frontend: Next.js + React + shadcn/ui + Tailwind CSS - Backend: Node.js + Express + TypeScript - Datenbank: PostgreSQL 17, wahlweise extern via `DATABASE_URL` oder als Container im Docker-Stack - Deployment: ein Docker-Container, Backend serviert das gebaute Frontend shadcn/ui liefert kopierbare, lokal versionierte React-Komponenten auf Basis von Tailwind CSS. Die App nutzt ein eigenes Dark-Mode-Theme mit responsiven Layouts für Desktop und Mobile. ## Lokal starten Als einzelner lokaler Server auf Port `3910`: ```bash npm install export DATABASE_URL='postgresql://user:pass@localhost:5432/tickettracker' export ADMIN_USERNAME='admin' export ADMIN_PASSWORD='ein-sicheres-passwort' npm run serve:local ``` Danach ist die App unter `http://localhost:3910` erreichbar. Beim ersten Start wird automatisch ein Admin angelegt, wenn noch keine Benutzer existieren. Ohne `ADMIN_PASSWORD` wird `admin/admin` verwendet; das ist nur als Notfall-Fallback gedacht. Für die getrennte Entwicklung: ```bash npm install export DATABASE_URL='postgresql://user:pass@localhost:5432/tickettracker' PORT=3001 npm run dev:backend API_PROXY_TARGET=http://127.0.0.1:3001 PORT=3910 npm run dev:frontend ``` Frontend: `http://localhost:3910` Backend/API: `http://localhost:3001` ## Docker Externe PostgreSQL-Datenbank: ```bash docker build -t tickettracker:local . docker run --rm -p 3910:3000 \ -e DATABASE_URL='postgresql://user:pass@host:5432/tickettracker' \ tickettracker:local ``` Compose mit externer Datenbank: ```bash cp .env.docker-external.example .env.docker-external docker compose --env-file .env.docker-external -f compose.yml up -d ``` Compose mit PostgreSQL 17 im Stack: ```bash cp .env.docker-postgres.example .env.docker-postgres docker compose --env-file .env.docker-postgres -f compose.postgres.yml up -d ``` ## Gitea Container Registry Vor dem ersten Push einmal anmelden: ```bash docker login git.d-razz.de ``` Dann Image bauen und pushen: ```bash chmod +x scripts/build-and-push-gitea.sh ./scripts/build-and-push-gitea.sh ``` Auf dem Docker-Server: ```bash docker compose --env-file .env.docker-external -f compose.yml up -d ``` Wenn noch kein Gitea-Repository existiert, erst in Gitea `michael/tickettracker` leer anlegen und danach: ```bash chmod +x scripts/init-gitea-repo.sh ./scripts/init-gitea-repo.sh git branch -M main git push -u origin main ```