VacatureRadar-logo

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-pagina’s, 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 | ## Bekijk de volledige productflow De beelden komen uit de lokale demo-omgeving. De getoonde cijfers zijn omgevingsdata, geen marketingclaims. Klik op een beeld voor de volledige resolutie. ### 1. Vind de relevante kansen De verkenner brengt zoeken, filters, gerangschikte resultaten en de belangrijkste matchcontext samen. Zo hoef je niet tussen lijst- en detailpagina’s te blijven wisselen.

Vacatureverkenner met gerangschikte matches en directe intelligence

### 2. Begrijp waarom een vacature past Een analyse maakt score, datakwaliteit, beslissignalen, aandachtspunten en broninformatie afzonderlijk zichtbaar. Ervaring en senioriteitslabels worden als context getoond, niet als verborgen scorefactor.

Uitlegbare vacatureanalyse met scorecomponenten en besliscontext

### 3. Bouw markt- en werkgeversinzicht op
Skillsradar
Vergelijk aantoonbare marktvraag met je profiel, zonder ontbrekende skills als afwijzingsregel te behandelen.
Werkgeversradar
Bekijk werkgevers, actieve IT-vacatures, bronnen en eerdere dossiers in één genormaliseerd overzicht.
Skillsradar met profieldekking en actuele marktvraag Werkgeversradar met vacature- en broninformatie
### 4. Volg trajecten op en houd bronnen gezond
Sollicitatiepipeline
Bewaar status, deadlines, notities en tijdlijn per dossier; de uiteindelijke sollicitatie blijft altijd handmatig.
Bronnenbeheer
Zie policyreview, laatste scans, volgende runs en brongezondheid zonder technische logs te moeten doorzoeken.
Sollicitatiepipeline met persoonlijke dossiers Bronnenbeheer met policy- en gezondheidsstatus
### 5. Controleer de radar — ook mobiel
Automation center
Volg de echte verwerkingspipeline, bronruns en systeemstatus. Niet-gemeten runtime-informatie blijft expliciet onbekend.
Mobiel zoekprofiel
Controleer je persoonlijke radar en navigeer door de kernflow vanaf een smal scherm.
Automation center met pipeline en bronruns Mobiel zoekprofiel van VacatureRadar
## 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 --all-groups uv run playwright install chromium 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 testset, verplichte Chromium-E2E, minimaal 70% branch-aware dekking, documentatie en de taakledger. De browsergate controleert de kernreis, focus, consolefouten en documentoverflow op mobiel, tablet, laptop, desktop, widescreen en ultrawide. ## 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) - [Professionalisering baseline](docs/audit/BASELINE.md) - [Performanceaudit](docs/audit/PERFORMANCE.md) - [Finale acceptance](docs/audit/FINAL_ACCEPTANCE.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.