This commit is contained in:
@@ -6,6 +6,8 @@ Alle betekenisvolle wijzigingen worden hier bijgehouden. Het project volgt voorl
|
|||||||
|
|
||||||
### Gewijzigd
|
### Gewijzigd
|
||||||
|
|
||||||
|
- De repository-README volgt nu de gebruikersreis van doel en dagelijkse workflow naar quickstart, configuratie, veiligheidsgrenzen, beheer en pas daarna architectuur en agentoverdracht.
|
||||||
|
- Vier actuele, compacte productbeelden documenteren dagoverzicht, vacatureverkenner, automatisering en het mobiele zoekprofiel in dark/light zonder externe runtime-assets.
|
||||||
- Het VacatureRadar-productlogo is hertekend als transparante vier-elementenradar zonder donkere tegel, rand of schaduw; login en sidebar gebruiken hetzelfde cleaner beeldmerk.
|
- Het VacatureRadar-productlogo is hertekend als transparante vier-elementenradar zonder donkere tegel, rand of schaduw; login en sidebar gebruiken hetzelfde cleaner beeldmerk.
|
||||||
- De sidebarfooter combineert radarstatus en een transparante, themabewuste ITWorx-credit; de dubbele demo-/accountidentiteit is verwijderd en blijft uitsluitend via het topbarmenu bereikbaar.
|
- De sidebarfooter combineert radarstatus en een transparante, themabewuste ITWorx-credit; de dubbele demo-/accountidentiteit is verwijderd en blijft uitsluitend via het topbarmenu bereikbaar.
|
||||||
- Widescreencontent schaalt nu gecontroleerd naar 2.200 px en op 4K naar 2.480 px, terwijl dashboardverhoudingen, korte viewports en mobiele layouts begrensd blijven.
|
- Widescreencontent schaalt nu gecontroleerd naar 2.200 px en op 4K naar 2.480 px, terwijl dashboardverhoudingen, korte viewports en mobiele layouts begrensd blijven.
|
||||||
|
|||||||
@@ -1,205 +1,183 @@
|
|||||||
# VacatureRadar
|
# VacatureRadar
|
||||||
|
|
||||||
VacatureRadar is een persoonlijke, vrijwel autonome vacature-assistent voor toegestane publieke werkgeversbronnen, publieke ATS-pagina's, RSS/Atom en vacaturemails. De applicatie verzamelt vacatures, normaliseert en dedupliceert ze, past harde filters toe, berekent een uitlegbare matchscore en presenteert vacatures, skillsvraag, werkgevers, opvolging en bronstatus in een Stitch-gebaseerde Intelligence Cockpit.
|
**Van vacature-overload naar een kleine, uitlegbare selectie die bij jou past.**
|
||||||
|
|
||||||
De repository bevat zowel een **werkende MVP-kern** als de volledige product-, architectuur-, UX-, beveiligings-, operationele en agentische overdrachtsdocumentatie om het project verder autonoom af te bouwen.
|
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.
|
||||||
|
|
||||||
## Huidige status
|

|
||||||
|
|
||||||
Reeds geïmplementeerd:
|
## Voor wie is dit?
|
||||||
|
|
||||||
- Django 5.2-modulaire monoliet met de volledige Nederlandstalige, responsive dark/light Stitch Intelligence Cockpit;
|
VacatureRadar is bedoeld voor één persoon of een eigen, afgeschermde installatie die:
|
||||||
- PostgreSQL in productie en SQLite voor lokale ontwikkeling;
|
|
||||||
- Celery-worker en scheduler via Redis;
|
|
||||||
- veilige HTTP-fetcher met domeinbeleid, redirecthercontrole, contentlimieten en SSRF-blokkering;
|
|
||||||
- JSON-LD `JobPosting`, generieke HTML-, RSS/Atom- en vacaturemailparsers;
|
|
||||||
- normalisatie, herkomstbewijs, vacatureversies en idempotente opslag;
|
|
||||||
- exacte en fuzzy deduplicatie;
|
|
||||||
- deterministische kenmerken, harde uitsluitregels en uitlegbare scoring;
|
|
||||||
- zoekprofielen met revisiehistoriek en begrensde feedbackaanpassing;
|
|
||||||
- dagelijkse digests, vacaturelevenscyclus, auditbare sollicitatiepipeline en activiteitstijdlijn;
|
|
||||||
- werkgeversintelligence, persoonlijke skillsradar en eerlijke operationele automatiseringsstatus;
|
|
||||||
- optionele lokale Ollama-analyse met prompt-injectionguardrails;
|
|
||||||
- Docker Compose voor lokaal gebruik en een Unraid-variant;
|
|
||||||
- tests, fixtures, CI, back-up-/herstelscripts en healthchecks.
|
|
||||||
|
|
||||||
Nog niet als productievoltooid beschouwd:
|
- 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.
|
||||||
|
|
||||||
- periodieke menselijke voorwaardenreview voor bijkomende live werkgeversbronnen;
|
## Zo gebruik je VacatureRadar
|
||||||
- productiespecifieke secrets, mailboxcredentials, domein/TLS en containerregistry.
|
|
||||||
|
|
||||||
Deze punten staan als uitvoerbare taken in [`docs/ai/BACKLOG.yaml`](docs/ai/BACKLOG.yaml). Externe credentials blokkeren nooit de rest van het werk: taken worden met mocks en interfaces afgewerkt en daarna als `blocked-external` gedocumenteerd waar echte configuratie nodig is.
|
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.
|
||||||
|
|
||||||
## Frontend en visuele validatie
|
## Wat zit erin?
|
||||||
|
|
||||||
De enige normale browserfrontend is de server-rendered Stitch Intelligence Cockpit. Alle negen referentieschermen zijn aan echte Django-data gekoppeld; er is geen SPA, runtime-CDN, demo-KPI of oude parallelle shell. De ontwerpcontracten en gemotiveerde afwijkingen staan in:
|
| 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 |
|
||||||
|
|
||||||
- [`STITCH_FRONTEND_CONTRACT.md`](docs/design/STITCH_FRONTEND_CONTRACT.md);
|
## Productbeelden
|
||||||
- [`STITCH_INTEGRATION_PLAN.md`](docs/design/STITCH_INTEGRATION_PLAN.md);
|
|
||||||
- [`STITCH_INTEGRATION_REPORT.md`](docs/design/STITCH_INTEGRATION_REPORT.md).
|
|
||||||
|
|
||||||
De elf desktop-/mobielbeelden staan in `artifacts/visual-validation/` en zijn uitgesloten van de productiecontainer. De browsermatrix bestrijkt 360 tot 2560 px.
|
De beelden hieronder komen uit de lokale demo-omgeving. De getoonde cijfers zijn omgevingsdata, geen marketingclaims.
|
||||||
|
|
||||||
Release-productiepad:
|
| Vacatureverkenner | Automatisering |
|
||||||
|
|---|---|
|
||||||
|
|  |  |
|
||||||
|
|
||||||
- `./scripts/release_verify.sh` bouwt de smoke-, backup/restore- en artifactcontrole;
|
<p align="center">
|
||||||
- [`docs/operations/UNRAID_DEPLOYMENT.md`](docs/operations/UNRAID_DEPLOYMENT.md) bevat een expliciet upgrade/rollbackpad met releaseartefacten.
|
<img src="docs/screenshots/readme/profile-mobile-light.png" width="390" alt="Mobiel zoekprofiel van VacatureRadar">
|
||||||
|
</p>
|
||||||
|
|
||||||
## Snelste start voor Codex
|
## Snel starten
|
||||||
|
|
||||||
Open de uitgepakte repository als project en geef Codex deze opdracht:
|
### Optie 1 — lokale demo
|
||||||
|
|
||||||
```text
|
Vereisten: Python 3.12 of 3.13, [`uv`](https://docs.astral.sh/uv/) en Git Bash op Windows.
|
||||||
Lees CODEX_START_HERE.md en AGENTS.md volledig. Voer daarna het autonome uitvoeringsprotocol uit. Werk alle taken met status ready in docs/ai/BACKLOG.yaml op volgorde af. Vraag geen productbeslissingen; gebruik de vastgelegde defaults. Wanneer een extern secret, account of live bronreview ontbreekt, implementeer en test de interface met fixtures, markeer uitsluitend dat externe deel als blocked-external en ga meteen door met de volgende taak. Stop pas nadat alle ready taken done zijn en scripts/codex_verify.sh volledig slaagt.
|
|
||||||
```
|
|
||||||
|
|
||||||
De repository-instructies staan in [`AGENTS.md`](AGENTS.md). De handmatige startpagina staat in [`CODEX_START_HERE.md`](CODEX_START_HERE.md).
|
|
||||||
|
|
||||||
## Lokale quickstart
|
|
||||||
|
|
||||||
Vereisten: Python 3.12 of 3.13 en `uv`.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/codex_bootstrap.sh
|
./scripts/codex_bootstrap.sh
|
||||||
uv run python manage.py runserver 0.0.0.0:8080
|
uv run python manage.py runserver 0.0.0.0:8080
|
||||||
```
|
```
|
||||||
|
|
||||||
Het bootstrap-script:
|
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:
|
||||||
|
|
||||||
1. maakt alleen wanneer nodig een lokale `.env` aan;
|
|
||||||
2. installeert exact de gelockte dependencies;
|
|
||||||
3. voert migraties uit;
|
|
||||||
4. maakt demo-inhoud aan;
|
|
||||||
5. draait lint, systeemchecks, migratiecheck, tests en taakledgervalidatie.
|
|
||||||
|
|
||||||
Bij een door het script aangemaakte ontwikkelomgeving is de tijdelijke login:
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
admin / codex-local-only
|
admin / codex-local-only
|
||||||
```
|
```
|
||||||
|
|
||||||
Gebruik die nooit buiten lokale ontwikkeling.
|
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.
|
||||||
|
|
||||||
## Docker Compose
|
### Optie 2 — Docker Compose
|
||||||
|
|
||||||
|
Vereisten: Docker met Compose v2 en Bash.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
APP_HOST=localhost APP_SCHEME=http bash scripts/deploy_docker.sh
|
APP_HOST=localhost APP_SCHEME=http bash scripts/deploy_docker.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
De webinterface luistert op `0.0.0.0:1226` (containerpoort `8080`). Voor een one-shot deploy kun je nu draaien:
|
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.
|
||||||
|
|
||||||
```bash
|
```text
|
||||||
APP_HOST=localhost APP_SCHEME=http bash scripts/deploy_docker.sh
|
http://127.0.0.1:1226/health/ready/
|
||||||
|
http://127.0.0.1:1226/health/live/
|
||||||
```
|
```
|
||||||
|
|
||||||
De script zet ontbrekende `.env`-waarden automatisch met sterke defaults (secrets, database-wachtwoord, admin-credentials, ports) en start direct de volledige Docker-stack. Daarna:
|
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.
|
||||||
|
|
||||||
- `http://127.0.0.1:1226/health/ready/`
|
## Eerste configuratie
|
||||||
- `http://127.0.0.1:1226/health/live/`
|
|
||||||
|
|
||||||
Zet voor publieke productie:
|
Na de eerste login:
|
||||||
- `APP_HOST=<jouw-domein>`
|
|
||||||
- `APP_SCHEME=https`
|
|
||||||
- `DJANGO_DEBUG=0`
|
|
||||||
- `SESSION_COOKIE_SECURE=1`
|
|
||||||
- `CSRF_COOKIE_SECURE=1`
|
|
||||||
- `SECURE_SSL_REDIRECT=1`
|
|
||||||
|
|
||||||
De script blijft geen handmatige invulstappen voor compose vereisen; pas deze omgevingsvariabelen aan vóór eerste deploy.
|
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.
|
||||||
|
|
||||||
## Push-to-deploy via Gitea
|
Belangrijke productie-instellingen:
|
||||||
|
|
||||||
Er is een `.gitea/workflows/deploy.yml` toegevoegd voor automatisch deployen op elke push naar `main` en `master`.
|
```dotenv
|
||||||
|
APP_HOST=vacatures.example.be
|
||||||
|
APP_SCHEME=https
|
||||||
|
DJANGO_DEBUG=0
|
||||||
|
SESSION_COOKIE_SECURE=1
|
||||||
|
CSRF_COOKIE_SECURE=1
|
||||||
|
SECURE_SSL_REDIRECT=1
|
||||||
|
```
|
||||||
|
|
||||||
Wat je nodig hebt:
|
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).
|
||||||
|
|
||||||
- éénmalige setup van een **self-hosted Gitea-runner** op je server met Docker-toegang
|
## Eerlijke grenzen
|
||||||
|
|
||||||
Daarna doet elke push automatisch:
|
VacatureRadar:
|
||||||
|
|
||||||
- checkout van de repo op de runner
|
- logt niet automatisch in op vacaturesites en omzeilt geen CAPTCHA of rate limit;
|
||||||
- `bash scripts/deploy_docker.sh` op de server
|
- crawlt denylistplatformen niet rechtstreeks;
|
||||||
- automatische healthcheck + `collectstatic`
|
- 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.
|
||||||
|
|
||||||
De workflow verwacht geen host/SSH-repo secrets uit het Actions-configuratiescherm.
|
Lees vóór productiegebruik [SECURITY.md](SECURITY.md) en het [threat model](docs/quality/THREAT_MODEL.md).
|
||||||
|
|
||||||
Zie [Gitea push-to-deploy](docs/operations/GITEA_DEPLOYMENT.md) voor de exacte serverconfiguratie.
|
## Ontwikkelen en verifiëren
|
||||||
|
|
||||||
## Zelf een schone overdrachts-ZIP maken
|
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
|
```bash
|
||||||
uv run python scripts/package_project.py ../VacatureRadar_Project.zip
|
uv run python scripts/package_project.py ../VacatureRadar_Project.zip
|
||||||
uv run python scripts/verify_package.py ../VacatureRadar_Project.zip
|
uv run python scripts/verify_package.py ../VacatureRadar_Project.zip
|
||||||
```
|
```
|
||||||
|
|
||||||
Het packaging-script sluit `.env`, virtuele omgevingen, caches, lokale databases, logs, media en back-ups uit. In de ZIP staat `PROJECT_MANIFEST.json` met grootte en SHA-256 per bestand.
|
|
||||||
|
|
||||||
## Kwaliteitsgates
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./scripts/codex_verify.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
De gate vereist:
|
|
||||||
|
|
||||||
- Ruff zonder bevindingen;
|
|
||||||
- een geldige Django-configuratie;
|
|
||||||
- geen ontbrekende migraties;
|
|
||||||
- alle tests geslaagd;
|
|
||||||
- minimaal 70% branch-aware codedekking;
|
|
||||||
- een geldige machineleesbare backlog.
|
|
||||||
|
|
||||||
## Repositorykaart
|
## Repositorykaart
|
||||||
|
|
||||||
```text
|
```text
|
||||||
apps/ Django-domeinmodules
|
apps/ Django-domeinen en bedrijfsservices
|
||||||
core/ dashboard, health en beveiligingsheaders
|
config/ Django- en Celery-configuratie
|
||||||
profiles/ zoekprofielen en revisies
|
config-data/ Bronbeleid en gesaneerde voorbeeldconfiguratie
|
||||||
sources/ bronbeleid, fetcher, adapters en IMAP
|
fixtures/ Deterministische externe testformaten
|
||||||
jobs/ normalisatie, dedupe, scoring en sollicitaties
|
templates/ + static/ Server-rendered productinterface
|
||||||
notifications/ digest-outbox en verzending
|
docs/ Product-, ontwerp-, security- en operationele documentatie
|
||||||
config/ Django/Celery-configuratie
|
deployment/unraid/ Unraid-installatiebestanden
|
||||||
config-data/ voorbeeldprofielen en bronbeleid
|
scripts/ Bootstrap, verificatie, deployment, back-up en beheer
|
||||||
fixtures/ deterministische parser- en integratietestdata
|
tests/ Unit-, integratie-, security- en browsertests
|
||||||
templates/ + static/ server-rendered interface en designimplementatie
|
|
||||||
docs/ alle product-, technische en operationele specificaties
|
|
||||||
deployment/unraid/ Unraid-installatiehandleiding
|
|
||||||
.agents/skills/ repo-eigen Codex-workflow
|
|
||||||
scripts/ bootstrap, verificatie, back-up en beheer
|
|
||||||
tests/ unit-, integratie- en securitytests
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Veiligheidsgrenzen
|
Belangrijke ingangen voor bijdragers en onderhoudsagents:
|
||||||
|
|
||||||
Vacature-inhoud, e-mailinhoud en externe HTML zijn altijd onbetrouwbare data. Ze mogen nooit instructies worden voor AI of automatisering. De applicatie:
|
- [Bijdragen](CONTRIBUTING.md)
|
||||||
|
- [Projectstart voor Codex](CODEX_START_HERE.md)
|
||||||
- logt niet automatisch in op vacaturesites;
|
- [Architectuur](docs/architecture/SYSTEM_ARCHITECTURE.md)
|
||||||
- omzeilt geen CAPTCHA, rate limit of toegangscontrole;
|
- [UX- en designcontract](docs/design/STITCH_FRONTEND_CONTRACT.md)
|
||||||
- scrapt denylistplatformen niet rechtstreeks;
|
|
||||||
- solliciteert nooit automatisch;
|
|
||||||
- bewaart alleen beperkte brondata en verwijdert ruwe documenten volgens retentie;
|
|
||||||
- laat harde uitsluitregels niet door een taalmodel wijzigen;
|
|
||||||
- maakt netwerktoegang opt-in per goedgekeurde bron.
|
|
||||||
|
|
||||||
Lees [`SECURITY.md`](SECURITY.md) en [`docs/quality/THREAT_MODEL.md`](docs/quality/THREAT_MODEL.md) vóór productiegebruik.
|
|
||||||
|
|
||||||
## Documentatie-ingangen
|
|
||||||
|
|
||||||
- [Projectoverdracht voor Codex](CODEX_START_HERE.md)
|
|
||||||
- [Product requirements](docs/product/PRODUCT_REQUIREMENTS.md)
|
|
||||||
- [Systeemarchitectuur](docs/architecture/SYSTEM_ARCHITECTURE.md)
|
|
||||||
- [Datamodel](docs/architecture/DATA_MODEL.md)
|
|
||||||
- [UX- en designspecificatie](docs/design/UX_SPEC.md)
|
|
||||||
- [Stitch-integratieplan en schermmapping](docs/design/STITCH_INTEGRATION_PLAN.md)
|
|
||||||
- [Bron- en adaptercontract](docs/architecture/SOURCE_ADAPTERS.md)
|
|
||||||
- [Scoringengine](docs/architecture/SCORING_ENGINE.md)
|
|
||||||
- [Unraid-deployment](docs/operations/UNRAID_DEPLOYMENT.md)
|
|
||||||
- [Runbook](docs/operations/RUNBOOK.md)
|
|
||||||
- [Teststrategie](docs/quality/TEST_STRATEGY.md)
|
- [Teststrategie](docs/quality/TEST_STRATEGY.md)
|
||||||
- [Traceabilitymatrix](docs/quality/TRACEABILITY_MATRIX.md)
|
- [Actuele projectstatus](docs/ai/PROJECT_STATE.md)
|
||||||
- [Oorspronkelijk functioneel en technisch ontwerp](docs/reference/VacatureRadar_functioneel_en_technisch_ontwerp.pdf)
|
- [Machineleesbare backlog](docs/ai/BACKLOG.yaml)
|
||||||
- [Verificatierapport van de aangeleverde basis](VERIFICATION_REPORT.md)
|
|
||||||
|
|
||||||
## Licentie
|
## Licentie
|
||||||
|
|
||||||
MIT voor de broncode. Controleer voor iedere externe vacaturebron afzonderlijk de voorwaarden, robotsregels, databankrechten en toepasselijke wetgeving. Dit project levert technisch bronbeleid, maar geen juridisch advies.
|
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.
|
||||||
|
|||||||
@@ -2133,6 +2133,40 @@ tasks:
|
|||||||
- Niet uitvoeren binnen huidige scope.
|
- Niet uitvoeren binnen huidige scope.
|
||||||
primary_paths:
|
primary_paths:
|
||||||
- docs/product/SCOPE_AND_NON_GOALS.md
|
- docs/product/SCOPE_AND_NON_GOALS.md
|
||||||
|
- id: VR-224
|
||||||
|
title: Maak de repository-README functioneel en user-first met actuele screenshots
|
||||||
|
status: done
|
||||||
|
priority: P1
|
||||||
|
requirement_ids:
|
||||||
|
- NFR-008
|
||||||
|
- NFR-009
|
||||||
|
depends_on:
|
||||||
|
- VR-223
|
||||||
|
summary: Herbouw de repository-ingang rond het gebruikersprobleem, de dagelijkse workflow en een veilige quickstart,
|
||||||
|
ondersteund door compacte actuele productbeelden uit de echte server-rendered cockpit.
|
||||||
|
acceptance_criteria:
|
||||||
|
- De README begint bij doel, doelgroep en dagelijkse gebruikersflow; installatie, beheer, architectuur en agentoverdracht
|
||||||
|
volgen in een duidelijke progressieve volgorde zonder bestaande essentiële informatie te verliezen.
|
||||||
|
- Minstens vier actuele screenshots tonen verschillende functionele hoofdschermen, desktop en mobiel en dark/light;
|
||||||
|
ze bevatten geen secrets of persoonlijke gegevens en zijn lokaal, geoptimaliseerd en correct gelinkt.
|
||||||
|
- Quickstarts, poorten, lokale credentials, veiligheidsgrenzen en operationele documentatielinks zijn aantoonbaar
|
||||||
|
correct en maken duidelijk wat demo-, ontwikkel- en productiegebruik betekent.
|
||||||
|
- README-links en repositorydocumentatie valideren, de beelden zijn visueel gecontroleerd zonder overflow of consolefouten
|
||||||
|
en de volledige kwaliteitsgate slaagt.
|
||||||
|
verification:
|
||||||
|
- Browsercontrole van de vastgelegde routes en viewports
|
||||||
|
- python scripts/validate_repository.py
|
||||||
|
- ./scripts/codex_verify.sh
|
||||||
|
primary_paths:
|
||||||
|
- README.md
|
||||||
|
- docs/screenshots/readme/
|
||||||
|
- docs/quality/TRACEABILITY_MATRIX.md
|
||||||
|
- docs/ai/PROJECT_STATE.md
|
||||||
|
result:
|
||||||
|
completed_at: '2026-07-27'
|
||||||
|
note: User-first README met gecontroleerde quickstarts en vier actuele dark/light desktop-/mobielscreenshots;
|
||||||
|
browsermatrix zonder overflow of consolewaarschuwingen, repositoryvalidatie groen en volledige gate met 268
|
||||||
|
tests, 2 skips en 83,48% dekking.
|
||||||
- id: VR-302
|
- id: VR-302
|
||||||
title: Automatisch sollicitaties invullen of versturen
|
title: Automatisch sollicitaties invullen of versturen
|
||||||
status: deferred
|
status: deferred
|
||||||
|
|||||||
@@ -34,6 +34,13 @@ Het volledige scherm- en afwijkingsrapport staat in `docs/design/STITCH_INTEGRAT
|
|||||||
|
|
||||||
## Laatste onderhoudsaudit
|
## Laatste onderhoudsaudit
|
||||||
|
|
||||||
|
VR-224 op 2026-07-27:
|
||||||
|
|
||||||
|
- README volledig herordend rond doelgroep, dagelijkse workflow, concrete productwaarde, veilige quickstart en eerste configuratie; architectuur, beheer en Codex-overdracht volgen pas daarna;
|
||||||
|
- vier actuele lokale screenshots toegevoegd voor dagoverzicht, vacatureverkenner, automatisering en mobiel zoekprofiel, samen minder dan 330 kB en zonder secrets of persoonlijke gegevens;
|
||||||
|
- browsercontrole op 1600×1000 en 390×844 in dark/light toont geen horizontale overflow of consolewaarschuwingen; repositorylinks en configuratiedocumentatie valideren;
|
||||||
|
- volledige gate groen met 268 geslaagde tests, 2 optionele skips en 83,48% branch-aware dekking. Volgende uitvoerbare taak: geen.
|
||||||
|
|
||||||
VR-223 op 2026-07-27:
|
VR-223 op 2026-07-27:
|
||||||
|
|
||||||
- VacatureRadar-logo verfijnd tot een transparante vier-elementenradar zonder donkere tegel, rand of schaduw; login en sidebar delen dezelfde schaalbare SVG;
|
- VacatureRadar-logo verfijnd tot een transparante vier-elementenradar zonder donkere tegel, rand of schaduw; login en sidebar delen dezelfde schaalbare SVG;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ Legenda: **I** = geïmplementeerd en getest in de huidige MVP; **P** = gedeeltel
|
|||||||
| NFR-005 | I | domeinapps/services/adapters/ADRs | continue review |
|
| NFR-005 | I | domeinapps/services/adapters/ADRs | continue review |
|
||||||
| NFR-006 | I | offline pytest + coveragegate | VR-114 verbreedt e2e |
|
| NFR-006 | I | offline pytest + coveragegate | VR-114 verbreedt e2e |
|
||||||
| NFR-007 | P | `scripts/benchmark.py`, `tests/benchmark/test_benchmark.py` | VR-116 |
|
| NFR-007 | P | `scripts/benchmark.py`, `tests/benchmark/test_benchmark.py` | VR-116 |
|
||||||
| NFR-008 | I | volledige negen-schermen-Stitch-cockpit, acht viewports, dark/light, toetsenborddrawer, premium visuele hiërarchie, zelfstandig VacatureRadar-productmerk, lokale ITWorx-ontwikkelaarscredit en toegankelijke interactieve radarillustratie | `tests/e2e/test_vr114_browser_and_accessibility.py`, `tests/integration/test_intelligence_views.py`, `tests/integration/test_views.py`, `artifacts/visual-validation/`, VR-209–213, VR-216–221 |
|
| NFR-008 | I | volledige negen-schermen-Stitch-cockpit, acht viewports, dark/light, toetsenborddrawer, premium visuele hiërarchie, zelfstandig VacatureRadar-productmerk, lokale ITWorx-ontwikkelaarscredit, toegankelijke interactieve radarillustratie en actuele user-first productdocumentatie | `tests/e2e/test_vr114_browser_and_accessibility.py`, `tests/integration/test_intelligence_views.py`, `tests/integration/test_views.py`, `artifacts/visual-validation/`, `docs/screenshots/readme/`, VR-209–224 |
|
||||||
| NFR-009 | I | lokale SQLite, configureerbare eigenaarbranding, Docker/Unraidconfig, gevalideerde SSH-deployalias, release-smoke en restore | `tests/unit/test_deployment_configuration.py`, VR-117, VR-217/218 afgerond |
|
| NFR-009 | I | lokale SQLite, configureerbare eigenaarbranding, Docker/Unraidconfig, gevalideerde SSH-deployalias, release-smoke en restore | `tests/unit/test_deployment_configuration.py`, VR-117, VR-217/218 afgerond |
|
||||||
| NFR-010 | I | `apps/sources/services/health.py`, `apps/sources/tasks.py`, `apps/core/views.py`, `config/settings.py` | `tests/integration/test_source_health.py` | VR-112 observability |
|
| NFR-010 | I | `apps/sources/services/health.py`, `apps/sources/tasks.py`, `apps/core/views.py`, `config/settings.py` | `tests/integration/test_source_health.py` | VR-112 observability |
|
||||||
|
|
||||||
@@ -110,3 +110,4 @@ Iedere backlogtaak die een requirement wijzigt, werkt in dezelfde commit deze ma
|
|||||||
- VR-219 verankert alle hoofdsecties op één ultrawide grid, begrenst paneelverhoudingen voor leesbaarheid en maakt `Personal intelligence by Jens` tot de consistente productlock-up op publieke en ingelogde schermen.
|
- VR-219 verankert alle hoofdsecties op één ultrawide grid, begrenst paneelverhoudingen voor leesbaarheid en maakt `Personal intelligence by Jens` tot de consistente productlock-up op publieke en ingelogde schermen.
|
||||||
- VR-220 vervangt die tijdelijke tekstlock-up door de aangeleverde officiële ITWorx.tech-wordmark en een exact daaruit afgeleid cloud-check-appicoon voor browser, shell en Dockerman; VacatureRadar blijft de productnaam.
|
- VR-220 vervangt die tijdelijke tekstlock-up door de aangeleverde officiële ITWorx.tech-wordmark en een exact daaruit afgeleid cloud-check-appicoon voor browser, shell en Dockerman; VacatureRadar blijft de productnaam.
|
||||||
- VR-221 corrigeert de merkarchitectuur: VacatureRadar krijgt een zelfstandig radar-/kansbeeldmerk voor alle productcontactpunten en ITWorx.tech blijft uitsluitend zichtbaar als officiële secundaire ontwikkelaarscredit.
|
- VR-221 corrigeert de merkarchitectuur: VacatureRadar krijgt een zelfstandig radar-/kansbeeldmerk voor alle productcontactpunten en ITWorx.tech blijft uitsluitend zichtbaar als officiële secundaire ontwikkelaarscredit.
|
||||||
|
- VR-224 maakt de repository-ingang user-first: de README volgt de dagelijkse productflow, bevat gecontroleerde lokale quickstarts en gebruikt vier actuele dark/light- en desktop/mobielscreenshots zonder secrets of externe assets.
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 106 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 109 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
Reference in New Issue
Block a user