3.2 KiB
Lokale ontwikkeling
Ondersteunde omgeving
- Linux, macOS of WSL2;
- Python 3.12 of 3.13;
uvvoor 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.