{% extends 'workflows/base_shell.html' %} {% load static %} {% block title %}Developer Handbook{% endblock %} {% block extra_css %} {% endblock %} {% block shell_body %} {% include 'workflows/includes/app_header.html' with header_show_home=1 header_inside_shell=1 %}
Engineering runbook for development, deployment, maintenance, and extension of the TUBCO Onboarding & Offboarding Portal.
This handbook is for developers and maintainers. It documents the actual engineering workflow of the standalone product repository.
tubco-onboarding-offboarding-portal/backend/config/: Django settings, WSGI, URL config/backend/workflows/: application logic, views, models, tasks, templates, static assets/backend/workflows/templates/workflows/base_shell.html: standard page shell for new staff-facing pagesbase_shell.html; do not rebuild topbar/frame logic in page-local templates./backend/media/templates/: PDF HTML templates and letterhead source files/backend/media/pdfs/: generated PDF outputs on host volume/backend/locale/: translation catalogs/docker-compose.yml: local runtime orchestration/Makefile: repeatable translation commands/.github/workflows/i18n.yml: translation compile validation in CIcd /Users/bostame/Documents/tubco-onboarding-offboarding-portal
docker compose up -d --build
http://127.0.0.1:8088/http://127.0.0.1:8025/http://127.0.0.1:8088/healthz/admin_test / admin12345user_test / user12345docker compose up -d --build
docker compose restart web
docker compose restart worker
docker compose logs --no-color --tail=120 web
docker compose logs --no-color --tail=120 worker
docker compose down
docker compose down -v
docker compose up -d --build.
docker compose exec -T web python manage.py makemigrations
docker compose exec -T web python manage.py migrate
docker compose exec -T web python manage.py check
entrypoint-web.sh.make i18n-update-en
make i18n-compile
Equivalent raw commands:
docker compose exec -T web django-admin makemessages -l en
docker compose exec -T web django-admin compilemessages
gettext is installed in the Docker image..mo compilation anymore.NotificationTemplate, NotificationRule, and the welcome-email settings UI with explicit DE/EN subject/body fields.preferred_language so workflow emails can render in the submitter's active UI language with German fallback.preferred_language is normalized in model save() and also has a DB default of de, so alternate creation paths cannot insert null values.xhtml2pdf.templates.pdf.backend/workflows/tasks.py.preferred_language, with German fallback.onboarding_template.htmloffboarding_template.htmlonboarding_intro_template.htmlonboarding_intro_session_pdf.htmlDEFAULT_NOTIFICATION_TEMPLATES in tasks.py.NotificationTemplate and NotificationRule.preferred_language value.backend/workflows/services.py.FormFieldConfig + FormOptionIntroChecklistItemAdminAuditLog/admin-tools/audit-log/docker compose exec -T web python manage.py check
docker compose exec -T web python manage.py test
docker compose exec -T web python manage.py run_staging_e2e_check
check after model/view/template changes.base_shell.html and keep header/frame logic out of page-local templates.submitted → processing → completed/failed.submitted, and enqueue the appropriate Celery task again.manage.py checkpython -c "import requests" does not emit a compatibility warningweb and hard-refresh browser8025 and test/production mode togglechardet==5.2.0 is installed in the rebuilt image and restart web/workerapp user..env, not in tracked files.