# HMS Licht & Ton – Homepage & Verwaltungssystem

Die offizielle Website und Verwaltungsplattform für HMS Licht & Ton (Hammerschmidt u. Mössle GbR) aus Leipheim/Ellzee. Professionelle Veranstaltungstechnik – Vermietung, Verkauf, Personal und Transport von Tontechnik und Lichttechnik.

---

## Tech Stack

| Komponente    | Technologie                        |
|---------------|-----------------------------------|
| Frontend      | Nuxt 3 (Vue 3, TypeScript, Tailwind CSS) |
| Backend       | FastAPI (Python 3.12, async)      |
| Database      | PostgreSQL 16                     |
| Cache         | Redis 7                           |
| Deployment    | Docker Compose via Coolify        |
| CI/CD         | Forgejo Actions                   |

---

## Prerequisites

- **Node.js** 20+
- **Python** 3.12+
- **Docker** & Docker Compose
- **Git**

---

## Setup

### 1. Repository klonen

```bash
git clone https://forgejo.media-on.de/Leopoldadmin/hms-licht-ton.git
cd hms-licht-ton
```

### 2. Environment konfigurieren

```bash
cp .env.example .env
# .env mit echten Werten ausfüllen (API-Token, Secrets, SMTP, etc.)
```

### 3. Anwendung starten (Docker)

```bash
docker compose up -d
```

Die Anwendung ist danach erreichbar unter:
- **Frontend:** http://localhost:3000
- **Backend API:** http://localhost:8000
- **API Docs (Swagger):** http://localhost:8000/docs

---

## Development

### Frontend (Nuxt 3)

```bash
cd frontend
npm ci
npm run dev          # Dev-Server auf http://localhost:3000
npm test             # Unit Tests (Vitest)
npx playwright test  # E2E Tests
npm run build        # Production Build
npm run typecheck    # TypeScript Type Check
npm run lint         # ESLint
```

### Backend (FastAPI)

```bash
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
pytest -v            # Tests ausführen
```

Weitere Build- und Test-Befehle siehe [AGENTS.md](AGENTS.md).

---

## Build (Docker)

### Alle Services bauen

```bash
docker compose build
```

### Einzelne Services bauen

```bash
docker compose build frontend
docker compose build backend
```

---

## Deployment (Coolify)

Die Anwendung wird über Coolify auf `coolify-01` (46.225.91.159) deployt.

1. In Coolify ein neues Projekt "HMS Licht & Ton" anlegen.
2. Als Source das Forgejo-Repository `Leopoldadmin/hms-licht-ton` auswählen.
3. Als Deployment-Methode "Docker Compose" wählen und `docker-compose.yml` referenzieren.
4. Environment-Variablen in Coolify setzen (entsprechend `.env.example`).
5. Domain für Frontend konfigurieren (z.B. `hms.media-on.de` → Port 3000).
6. Backend-Port (8000) nur intern暴露en oder über Traefik mit eigener Subdomain.
7. Deploy auslösen. Coolify baut die Images und startet alle Services.

### Health Checks

Alle Services haben Health Checks konfiguriert:
- **Frontend:** HTTP-Check auf Port 3000
- **Backend:** HTTP-Check auf `/health` Endpoint
- **PostgreSQL:** `pg_isready`
- **Redis:** `redis-cli ping`

---

## CI/CD Pipeline (Forgejo Actions)

Die Pipeline (`.forgejo/workflows/ci.yml`) läuft bei jedem Push und PR auf `main`:

1. **frontend-test:** `npm ci` → `npm test` → `npm run build`
2. **backend-test:** `pip install` → `pytest -v`
3. **docker-build:** Baut Frontend- und Backend-Docker-Images, validiert `docker-compose.yml`

---

## Projektstruktur

```
hms-licht-ton/
├── frontend/          # Nuxt 3 Frontend
│   ├── Dockerfile
│   ├── .dockerignore
│   ├── package.json
│   ├── nuxt.config.ts
│   ├── pages/
│   ├── components/
│   ├── composables/
│   ├── stores/
│   └── tests/
├── backend/           # FastAPI Backend
│   ├── Dockerfile
│   ├── .dockerignore
│   ├── requirements.txt
│   ├── app/
│   │   ├── main.py
│   │   ├── config.py
│   │   ├── database.py
│   │   ├── auth.py
│   │   ├── cache.py
│   │   ├── routers/
│   │   └── schemas/
│   └── tests/
├── docs/              # Projektdokumentation
├── .forgejo/
│   └── workflows/
│       └── ci.yml     # CI/CD Pipeline
├── docker-compose.yml # 4 Services: frontend, backend, postgres, redis
├── .env.example       # Environment-Vorlage
├── .gitignore
├── AGENTS.md          # Build & Test Guide
└── README.md
```

---

## License

© Hammerschmidt u. Mössle GbR. Alle Rechte vorbehalten.
