# TUBCO Onboarding & Offboarding Portal This is the standalone dockerized web application for the TUBCO onboarding and offboarding workflow. ## Services - `web`: Django app (`http://localhost:8000`) - `worker`: Celery async tasks - `db`: PostgreSQL - `redis`: task broker - `mailhog`: local email inbox (`http://localhost:8025`) ## Quick start 1. Copy env file: - `cp .env.example .env` 2. Fill `.env` values (reuse your current credentials privately). 3. Start services: - `docker compose up --build` 4. Open app: - `http://localhost:8000/onboarding/new/` 5. Open test mailbox: - `http://localhost:8025` ## Translations This project now uses Django's standard i18n workflow for long-term maintainability. - Extract/update message catalogs: - `docker compose exec -T web django-admin makemessages -l en` - Compile translations: - `docker compose exec -T web django-admin compilemessages` - Add more languages the same way: - `docker compose exec -T web django-admin makemessages -l de` Notes: - `gettext` is installed in the Docker image, so `compilemessages` works inside the container. - Translation files live under `backend/locale/`. - Core fixed UI is bilingual now; dynamic builder content and most PDF/email business text are not fully bilingual yet. ## Current implemented scope - Onboarding form with labels mapped from your CSV schema. - Stores requests in PostgreSQL. - Generates a personalized PDF (simple first version). - Sends notification email via Celery. - Optional Nextcloud upload hook (toggle with `NEXTCLOUD_ENABLED=1`). ## Staging E2E verification Run a real workflow verification (onboarding + offboarding), including PDF checks and optional email/Nextcloud evidence: - Default (auto MailHog detection, Nextcloud check enabled if configured): - `docker compose exec -T web python manage.py run_staging_e2e_check` - With cleanup (removes generated E2E DB rows/PDFs after run): - `docker compose exec -T web python manage.py run_staging_e2e_check --cleanup` - Force MailHog verification mode: - `docker compose exec -T web python manage.py run_staging_e2e_check --email-check mailhog --mailhog-api-url http://mailhog:8025/api/v2/messages` - Skip Nextcloud existence checks: - `docker compose exec -T web python manage.py run_staging_e2e_check --skip-nextcloud`