Files
VacatureRadar/README.md
T
Jens 7caea3a1ee
deploy / deploy (push) Canceled after 0s
demo mode
2026-07-27 23:38:37 +02:00

185 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VacatureRadar
**Van vacature-overload naar een kleine, uitlegbare selectie die bij jou past.**
VacatureRadar is een persoonlijke vacature-assistent voor België. De applicatie volgt toegestane werkgeversbronnen, ATS-paginas, feeds en vacaturemails, verwijdert dubbels en irrelevante resultaten en rangschikt de overblijvende kansen tegen jouw zoekprofiel. Jij behoudt altijd de controle: VacatureRadar helpt zoeken en opvolgen, maar solliciteert nooit automatisch.
![Dagoverzicht van VacatureRadar in licht thema](docs/screenshots/readme/dashboard-light.png)
## Voor wie is dit?
VacatureRadar is bedoeld voor één persoon of een eigen, afgeschermde installatie die:
- meerdere vacaturebronnen wil volgen zonder iedere site dagelijks te openen;
- alleen aantoonbaar relevante vacatures wil beoordelen;
- wil begrijpen waarom een vacature wel of niet past;
- sollicitaties, deadlines en opvolging op één plek wil bewaren;
- lokale controle over profiel-, vacature- en brondata belangrijk vindt.
## Zo gebruik je VacatureRadar
1. **Stel je radar in.** Kies rollen, skills, regio, afstand, werkmodel en harde grenzen.
2. **Laat toegestane bronnen verwerken.** De radar ontdekt, haalt op, normaliseert en dedupliceert vacatures volgens bronbeleid en SSRF-beveiliging.
3. **Beoordeel de beste signalen.** Iedere match toont score, datakwaliteit, positieve signalen en aandachtspunten.
4. **Leer van de markt.** De Skillsradar laat zien welke technologieën terugkomen en waar je profiel dekking heeft.
5. **Volg acties op.** Bewaar interessante vacatures, beheer sollicitatiedossiers en houd gesprekken en deadlines bij.
6. **Controleer de werking.** Het Automation center maakt bronruns, pipelinegezondheid en onbekende runtime-informatie zichtbaar.
## Wat zit erin?
| Onderdeel | Wat je eraan hebt |
|---|---|
| Dagoverzicht | Prioriteiten, beste matches, open trajecten en radarstatus in één beeld |
| Vacatureverkenner | Zoeken en filteren met een uitlegbare detailanalyse naast de resultaten |
| Skillsradar | Actuele marktvraag naast de skills uit je eigen profiel |
| Sollicitatiepipeline | Dossiers, status, notities, deadlines en een auditbare tijdlijn |
| Bronnenbeheer | Veilige bronconfiguratie, gezondheid, handmatige import en mailboxkoppelingen |
| Automatisering | Eerlijke 24-uursmetingen; niet-gemeten informatie blijft expliciet onbekend |
## Productbeelden
De beelden hieronder komen uit de lokale demo-omgeving. De getoonde cijfers zijn omgevingsdata, geen marketingclaims.
| Vacatureverkenner | Automatisering |
|---|---|
| ![Vacatureverkenner met gerangschikte matches en detailanalyse](docs/screenshots/readme/matches-dark.png) | ![Automation center met verwerkingspipeline en brongezondheid](docs/screenshots/readme/automation-dark.png) |
<p align="center">
<img src="docs/screenshots/readme/profile-mobile-light.png" width="390" alt="Mobiel zoekprofiel van VacatureRadar">
</p>
## Snel starten
### Optie 1 — lokale demo
Vereisten: Python 3.12 of 3.13, [`uv`](https://docs.astral.sh/uv/) en Git Bash op Windows.
```bash
./scripts/codex_bootstrap.sh
uv run python manage.py runserver 0.0.0.0:8080
```
Open daarna [http://127.0.0.1:8080](http://127.0.0.1:8080). Wanneer het bootstrap-script de ontwikkelomgeving heeft aangemaakt, kun je lokaal aanmelden met:
```text
admin / codex-local-only
```
Het bootstrap-script maakt zo nodig `.env`, installeert de gelockte dependencies, voert migraties uit, laadt veilige demodata en draait de kwaliteitsgates. Deze tijdelijke login is uitsluitend voor lokale ontwikkeling; wijzig of verwijder hem voordat de installatie vanaf een ander toestel bereikbaar is.
### Optie 2 — Docker Compose
Vereisten: Docker met Compose v2 en Bash.
```bash
APP_HOST=localhost APP_SCHEME=http bash scripts/deploy_docker.sh
```
Open daarna [http://127.0.0.1:1226](http://127.0.0.1:1226). Het deployscript vult ontbrekende lokale `.env`-waarden met sterke gegenereerde defaults, start PostgreSQL, Redis, Django, de worker en scheduler en controleert de health-endpoints.
```text
http://127.0.0.1:1226/health/ready/
http://127.0.0.1:1226/health/live/
```
Gebruik voor een bestaande installatie geen nieuwe gegenereerde `.env`: bewaar de huidige secrets en databasegegevens. Zie [lokale ontwikkeling](docs/operations/LOCAL_DEVELOPMENT.md) of [Unraid-deployment](docs/operations/UNRAID_DEPLOYMENT.md) voor het volledige pad.
## Eerste configuratie
Na de eerste login:
1. Open **Zoekprofiel** en stel regio, radius, rollen, skills en werkvoorkeuren in.
2. Open **Bronnen** en activeer alleen bronnen waarvan beleid en voorwaarden beoordeeld zijn.
3. Configureer optioneel een eigen vacaturemailbox; credentials worden niet in de repository opgeslagen.
4. Controleer **Automatisering** voordat je op onbemande verwerking vertrouwt.
5. Verifieer in productie altijd HTTPS, back-ups, herstel en healthchecks.
Voor een publieke HTTPS-host configureer je de bestaande `.env` veilig met:
```bash
python scripts/configure_public_url.py \
https://vacatureradar.example.be \
--env-file .env \
--cache-url redis://127.0.0.1:6379/1
```
De publieke URL wordt vervolgens gebruikt voor `ALLOWED_HOSTS`, CSRF, secure cookies en HTTPS-detectie. Gebruik achter Nginx altijd `DJANGO_DEBUG=0`; een debugpagina mag nooit publiek zichtbaar zijn. Hermaak de container na een environmentwijziging.
Publiceer poort `1226` niet rechtstreeks op internet. Gebruik een beheerde reverse proxy met TLS en volg [Unraid-deployment](docs/operations/UNRAID_DEPLOYMENT.md) en de concrete [Nginx Proxy Manager-handleiding](docs/operations/NGINX_PROXY_MANAGER.md). Een volledig productievoorbeeld staat in [`deployment/production.env.example`](deployment/production.env.example).
## Eerlijke grenzen
VacatureRadar:
- logt niet automatisch in op vacaturesites en omzeilt geen CAPTCHA of rate limit;
- crawlt denylistplatformen niet rechtstreeks;
- behandelt HTML, e-mail en modeloutput altijd als onbetrouwbare data;
- laat iedere URL en redirect door bronbeleid en SSRF-validatie gaan;
- past deterministische harde regels toe vóór optionele AI-analyse;
- verstuurt nooit automatisch een sollicitatie;
- toont ontbrekende of niet-gemeten informatie als onbekend in plaats van die te simuleren.
Lees vóór productiegebruik [SECURITY.md](SECURITY.md) en het [threat model](docs/quality/THREAT_MODEL.md).
## Ontwikkelen en verifiëren
De kern is een server-rendered Django 5.2-modulaire monoliet met PostgreSQL, Redis/Celery en een lokale dark/light-interface zonder runtime-CDN of SPA-afhankelijkheid. SQLite wordt gebruikt voor lokale tests.
```bash
uv sync --frozen
uv run python manage.py migrate
uv run python manage.py runserver 0.0.0.0:8080
```
Voer vóór iedere oplevering de volledige gate uit:
```bash
./scripts/codex_verify.sh
```
Die controleert formatting, lint, Django-configuratie, migraties, de volledige offline testset, minimaal 70% branch-aware dekking, documentatie en de taakledger. Bij wijzigingen aan de frontend controleer je daarnaast toetsenbordgebruik, dark/light en minimaal 360 px plus een gangbare desktopbreedte.
## Beheer en deployment
- [Lokaal ontwikkelen](docs/operations/LOCAL_DEVELOPMENT.md)
- [Docker en Unraid uitrollen](docs/operations/UNRAID_DEPLOYMENT.md)
- [Nginx Proxy Manager configureren](docs/operations/NGINX_PROXY_MANAGER.md)
- [Push-to-deploy met Gitea](docs/operations/GITEA_DEPLOYMENT.md)
- [Operationeel runbook](docs/operations/RUNBOOK.md)
- [Back-up en herstel](docs/operations/BACKUP_RESTORE.md)
Een overdrachtsarchief zonder secrets, lokale databases of caches maak en controleer je met:
```bash
uv run python scripts/package_project.py ../VacatureRadar_Project.zip
uv run python scripts/verify_package.py ../VacatureRadar_Project.zip
```
## Repositorykaart
```text
apps/ Django-domeinen en bedrijfsservices
config/ Django- en Celery-configuratie
config-data/ Bronbeleid en gesaneerde voorbeeldconfiguratie
fixtures/ Deterministische externe testformaten
templates/ + static/ Server-rendered productinterface
docs/ Product-, ontwerp-, security- en operationele documentatie
deployment/unraid/ Unraid-installatiebestanden
scripts/ Bootstrap, verificatie, deployment, back-up en beheer
tests/ Unit-, integratie-, security- en browsertests
```
Belangrijke ingangen voor bijdragers en onderhoudsagents:
- [Bijdragen](CONTRIBUTING.md)
- [Projectstart voor Codex](CODEX_START_HERE.md)
- [Architectuur](docs/architecture/SYSTEM_ARCHITECTURE.md)
- [UX- en designcontract](docs/design/STITCH_FRONTEND_CONTRACT.md)
- [Teststrategie](docs/quality/TEST_STRATEGY.md)
- [Actuele projectstatus](docs/ai/PROJECT_STATE.md)
- [Machineleesbare backlog](docs/ai/BACKLOG.yaml)
## Licentie
De broncode valt onder de [MIT-licentie](LICENSE). Controleer voor iedere externe vacaturebron afzonderlijk de voorwaarden, robotsregels, databankrechten en toepasselijke wetgeving. Het project levert technisch bronbeleid, geen juridisch advies.