Files
VacatureRadar/docs/operations/LOCAL_DEVELOPMENT.md
Jens b8091e59bd
deploy / deploy (push) Canceled after 0s
Initial deploy setup
2026-07-21 14:00:00 +02:00

3.2 KiB

Lokale ontwikkeling

Ondersteunde omgeving

  • Linux, macOS of WSL2;
  • Python 3.12 of 3.13;
  • uv voor dependency- en lockfilebeheer;
  • optioneel Docker Compose voor PostgreSQL, Redis en de volledige stack.

Tests gebruiken standaard SQLite, eager Celery en een in-memory e-mailbackend. Ze hebben geen internet, Redis, mailbox of Ollama nodig.

Eerste start

./scripts/codex_bootstrap.sh
uv run python manage.py runserver 0.0.0.0:8080

Het script maakt alleen voor lokale ontwikkeling een .env, installeert de gelockte dependencies, migreert, laadt veilige demodata en draait alle kwaliteitsgates. De lokaal aangemaakte login is admin / codex-local-only. Verwijder of wijzig deze credentials vóór ieder gedeeld of bereikbaar gebruik.

Handmatige start

uv sync --all-groups
mkdir -p local media logs backups
cp .env.example .env
# Laat DATABASE_URL leeg voor SQLite en vul een unieke DJANGO_SECRET_KEY in.
uv run python manage.py migrate
uv run python manage.py bootstrap_instance --with-demo
uv run python manage.py runserver 0.0.0.0:8080

Veelgebruikte commando's

make help
make test
make lint
make format
make verify
uv run python manage.py shell
uv run python manage.py seed_sources
uv run python manage.py import_job_fixture fixtures/pages/sample_jsonld_job.html

De volgende achtergrondprocessen zijn alleen nodig wanneer CELERY_TASK_ALWAYS_EAGER=0:

uv run celery -A config worker -l INFO -Q high,default,low
uv run celery -A config beat -l INFO

Demo opnieuw opbouwen

./scripts/reset_demo.sh

Dit verwijdert uitsluitend local/db.sqlite3. Gebruik het niet tegen een productievolume.

Testen per laag

uv run pytest tests/unit
uv run pytest tests/integration
uv run pytest tests/security
uv run pytest tests/integration/test_pipeline.py -q
uv run pytest --cov=apps --cov=config --cov-report=term-missing

Voeg bij iedere parserwijziging een bronfixture toe. Tests mogen alleen een echte netwerkcall doen in een expliciet afgescheiden, handmatig gestarte smoke-test die niet in CI draait.

Databasewijzigingen

uv run python manage.py makemigrations
uv run python manage.py migrate
uv run python manage.py makemigrations --check --dry-run

Controleer de gegenereerde migratie. Voor destructieve wijzigingen is een ADR, datamigratie, herstelpad en back-uptest verplicht.

Static files

In development serveert Django static files. Productie gebruikt collectstatic in de container en WhiteNoise:

uv run python manage.py collectstatic --noinput

Troubleshooting

uv ontbreekt: installeer uv volgens de officiële instructies van de gekozen werkmachine en heropen de shell.

Database lock op SQLite: stop tweede web/workerprocessen of gebruik lokaal PostgreSQL voor parallel werk.

Redis connection refused: zet voor eenvoudige lokale runs CELERY_TASK_ALWAYS_EAGER=1, of start Redis/Compose.

Geen digest zichtbaar: met console-backend staat de mail in de terminal; controleer daarnaast DigestOutbox in Django admin.

Bron wordt overgeslagen: controleer policy=allow, een toegestane status, next_run_at, de domeinpolicy en de platformdenylist. Forceer nooit een fetch om een veiligheidsblokkade te omzeilen.