diff --git a/CHANGELOG.md b/CHANGELOG.md index e1927b7..fe014d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/README.md b/README.md index 4e8b581..4923af9 100644 --- a/README.md +++ b/README.md @@ -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-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 +![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. +

+ Mobiel zoekprofiel van VacatureRadar +

-## 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=` -- `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. diff --git a/docs/ai/BACKLOG.yaml b/docs/ai/BACKLOG.yaml index 334e6cb..70c7891 100644 --- a/docs/ai/BACKLOG.yaml +++ b/docs/ai/BACKLOG.yaml @@ -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 diff --git a/docs/ai/PROJECT_STATE.md b/docs/ai/PROJECT_STATE.md index b43b1ad..a82bc10 100644 --- a/docs/ai/PROJECT_STATE.md +++ b/docs/ai/PROJECT_STATE.md @@ -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; diff --git a/docs/quality/TRACEABILITY_MATRIX.md b/docs/quality/TRACEABILITY_MATRIX.md index 8ede920..51334ef 100644 --- a/docs/quality/TRACEABILITY_MATRIX.md +++ b/docs/quality/TRACEABILITY_MATRIX.md @@ -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-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-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. diff --git a/docs/screenshots/readme/automation-dark.png b/docs/screenshots/readme/automation-dark.png new file mode 100644 index 0000000..6c31edd Binary files /dev/null and b/docs/screenshots/readme/automation-dark.png differ diff --git a/docs/screenshots/readme/dashboard-light.png b/docs/screenshots/readme/dashboard-light.png new file mode 100644 index 0000000..bf7903b Binary files /dev/null and b/docs/screenshots/readme/dashboard-light.png differ diff --git a/docs/screenshots/readme/matches-dark.png b/docs/screenshots/readme/matches-dark.png new file mode 100644 index 0000000..e461dea Binary files /dev/null and b/docs/screenshots/readme/matches-dark.png differ diff --git a/docs/screenshots/readme/profile-mobile-light.png b/docs/screenshots/readme/profile-mobile-light.png new file mode 100644 index 0000000..7970039 Binary files /dev/null and b/docs/screenshots/readme/profile-mobile-light.png differ