# Ausbildungsnachweis Die bisherige Rails-Webanwendung wurde in zwei klar getrennte Anwendungen umgebaut: - Rails 7.1 als JSON-API unter `/api/v1` - Angular 22 mit Angular Material im Ordner `frontend/` - PostgreSQL, Redis und Nginx über Docker Compose ## Start mit Docker ```bash cp .env.example .env # CHANGE_ME-Werte in .env durch sichere Zufallswerte ersetzen docker compose build docker compose up -d docker compose exec api bin/rails db:prepare ``` Unter Windows zuerst die `.env` mit sicheren Zufallswerten erzeugen: ```powershell powershell -ExecutionPolicy Bypass -File .\setup-env.ps1 docker compose up -d --build ``` Falls Port `13131` bereits verwendet wird, in `.env` beispielsweise Folgendes setzen: ```dotenv FRONTEND_PORT=13132 FRONTEND_ORIGINS=http://localhost:13132 ``` Frontend: API: Healthcheck: Ein Secret kann mit `docker compose run --rm api bin/rails secret` erzeugt werden. ## Lokale Entwicklung Backend: ```bash bundle install bin/rails db:prepare bin/rails server ``` Frontend: ```bash cd frontend npm install npm start ``` Der Angular-Devserver leitet `/api` über `proxy.conf.json` an Rails auf Port 3000 weiter. ## API-Bereiche - `auth`: Login, Logout und aktueller Benutzer - `entries`: CRUD, Timer und CSV-Export - `dashboard`: Fortschritt, Kilometer und Kosten - `calendar`: Einträge für frei wählbare Datumsbereiche - `monthly_report`: Monatsauswertung - `settings`: Sollstunden, Wochenziele und Ausbildungsstatus - `mileage_rates`: Kilometersätze `csv` ist im `Gemfile` ausdrücklich als Gem eingetragen und zusätzlich im Export-Controller sowie im Modell geladen. Der vollständige Abgleich mit den Funktionen des ursprünglichen Rails-Projekts steht in `MIGRATION_FEATURES.md`. ## E-Mail und Administration In `.env` müssen insbesondere `SMTP_USERNAME`, `SMTP_PASSWORD`, `FRONTEND_URL`, `ADMIN_EMAIL` und die PgHero-Zugangsdaten gesetzt werden. Nach Änderungen an `.env` die Container neu erstellen: ```bash docker compose up -d --build --force-recreate ``` ## Bestehende Daten Die vorhandenen Tabellen und Modelle bleiben erhalten. Beim ersten Start wird nur `api_token_digest` an `users` ergänzt. Vor dem Upgrade sollte wie üblich ein PostgreSQL-Backup erstellt werden.