docs: make readme user-first with product screenshots
deploy / deploy (push) Canceled after 0s

This commit is contained in:
Jens
2026-07-27 14:28:14 +02:00
parent 6a505047f5
commit d28fd05bf6
9 changed files with 162 additions and 140 deletions
+2
View File
@@ -6,6 +6,8 @@ Alle betekenisvolle wijzigingen worden hier bijgehouden. Het project volgt voorl
### 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.
- 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.
+117 -139
View File
@@ -1,205 +1,183 @@
# 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-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.
## Huidige status
![Dagoverzicht van VacatureRadar in licht thema](docs/screenshots/readme/dashboard-light.png)
Reeds geïmplementeerd:
## Voor wie is dit?
- Django 5.2-modulaire monoliet met de volledige Nederlandstalige, responsive dark/light Stitch Intelligence Cockpit;
- 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.
VacatureRadar is bedoeld voor één persoon of een eigen, afgeschermde installatie die:
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;
- productiespecifieke secrets, mailboxcredentials, domein/TLS en containerregistry.
## Zo gebruik je VacatureRadar
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);
- [`STITCH_INTEGRATION_PLAN.md`](docs/design/STITCH_INTEGRATION_PLAN.md);
- [`STITCH_INTEGRATION_REPORT.md`](docs/design/STITCH_INTEGRATION_REPORT.md).
## Productbeelden
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 |
|---|---|
| ![Vacatureverkenner met gerangschikte matches en detailanalyse](docs/screenshots/readme/matches-dark.png) | ![Automation center met verwerkingspipeline en brongezondheid](docs/screenshots/readme/automation-dark.png) |
- `./scripts/release_verify.sh` bouwt de smoke-, backup/restore- en artifactcontrole;
- [`docs/operations/UNRAID_DEPLOYMENT.md`](docs/operations/UNRAID_DEPLOYMENT.md) bevat een expliciet upgrade/rollbackpad met releaseartefacten.
<p align="center">
<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
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`.
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
```
Het bootstrap-script:
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:
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
```
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
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
APP_HOST=localhost APP_SCHEME=http bash scripts/deploy_docker.sh
```text
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/`
- `http://127.0.0.1:1226/health/live/`
## Eerste configuratie
Zet voor publieke productie:
- `APP_HOST=<jouw-domein>`
- `APP_SCHEME=https`
- `DJANGO_DEBUG=0`
- `SESSION_COOKIE_SECURE=1`
- `CSRF_COOKIE_SECURE=1`
- `SECURE_SSL_REDIRECT=1`
Na de eerste login:
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
- `bash scripts/deploy_docker.sh` op de server
- automatische healthcheck + `collectstatic`
- 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.
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
uv run python scripts/package_project.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
```text
apps/ Django-domeinmodules
core/ dashboard, health en beveiligingsheaders
profiles/ zoekprofielen en revisies
sources/ bronbeleid, fetcher, adapters en IMAP
jobs/ normalisatie, dedupe, scoring en sollicitaties
notifications/ digest-outbox en verzending
config/ Django/Celery-configuratie
config-data/ voorbeeldprofielen en bronbeleid
fixtures/ deterministische parser- en integratietestdata
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
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
```
## 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:
- logt niet automatisch in op vacaturesites;
- omzeilt geen CAPTCHA, rate limit of toegangscontrole;
- 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)
- [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)
- [Traceabilitymatrix](docs/quality/TRACEABILITY_MATRIX.md)
- [Oorspronkelijk functioneel en technisch ontwerp](docs/reference/VacatureRadar_functioneel_en_technisch_ontwerp.pdf)
- [Verificatierapport van de aangeleverde basis](VERIFICATION_REPORT.md)
- [Actuele projectstatus](docs/ai/PROJECT_STATE.md)
- [Machineleesbare backlog](docs/ai/BACKLOG.yaml)
## 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.
+34
View File
@@ -2133,6 +2133,40 @@ tasks:
- Niet uitvoeren binnen huidige scope.
primary_paths:
- 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
title: Automatisch sollicitaties invullen of versturen
status: deferred
+7
View File
@@ -34,6 +34,13 @@ Het volledige scherm- en afwijkingsrapport staat in `docs/design/STITCH_INTEGRAT
## 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:
- VacatureRadar-logo verfijnd tot een transparante vier-elementenradar zonder donkere tegel, rand of schaduw; login en sidebar delen dezelfde schaalbare SVG;
+2 -1
View File
@@ -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-006 | I | offline pytest + coveragegate | VR-114 verbreedt e2e |
| 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-209213, VR-216221 |
| 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-209224 |
| 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 |
@@ -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-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-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