184 lines
8.3 KiB
Markdown
184 lines
8.3 KiB
Markdown
# 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.
|
||
|
||

|
||
|
||
## 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 |
|
||
|---|---|
|
||
|  |  |
|
||
|
||
<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.
|
||
|
||
Belangrijke productie-instellingen:
|
||
|
||
```dotenv
|
||
APP_HOST=vacatures.example.be
|
||
APP_SCHEME=https
|
||
DJANGO_DEBUG=0
|
||
SESSION_COOKIE_SECURE=1
|
||
CSRF_COOKIE_SECURE=1
|
||
SECURE_SSL_REDIRECT=1
|
||
```
|
||
|
||
Publiceer poort `1226` niet rechtstreeks op het internet. Gebruik een beheerde reverse proxy met TLS en volg de checklist in [UNRAID_DEPLOYMENT.md](docs/operations/UNRAID_DEPLOYMENT.md).
|
||
|
||
## 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)
|
||
- [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.
|