4.8 KiB
4.8 KiB
Repository inventory evidence
Captured: 2026-08-02
Scope and worktree
- Branch:
release-readiness, trackingorigin/release-readiness. - Pre-existing user changes preserved: deleted tracked
.agent.md; untrackedAGENTS.md. - Audit-created paths:
docs/audits/only. - Tracked-file distribution: 301 documentation files, 194 API files, 171 frontend files, 67 API-test files, 13 AI/tool files, 12 scripts, and 6 deployment files.
Executable components
| Component | Implementation | Responsibility |
|---|---|---|
| Browser client | job-tracker-ui/ — React 19, TypeScript, MUI, React Router inside a Next.js static-export shell |
Public landing/auth pages and authenticated job, career, CV, email, settings, and administration workflows |
| API host | JobTrackerApi/ — ASP.NET Core / .NET 9 |
Authentication, authorization, REST endpoints, application workflows, data/file access, integrations, and hosted services |
| Data layer | EF Core 9; SQLite default or Pomelo MariaDB/MySQL | Identity and tenant-owned job, profile, CV, correspondence, attachment, AI, and workflow state |
| AI sidecar | tools/summarizer/ — FastAPI, Transformers, OCR/document parsers |
Local summaries and extraction; routes selected generation calls to Ollama, Gemini, or Groq |
| Background processing | Seven hosted services in the API process | Backups, rules, reminders, daily export, enrichment, AI readiness probing, and queued CV processing |
| Security fixture tool | tools/hostile-fixture-db/ |
Generates synthetic hostile database fixtures for local authorization testing |
| Delivery | Dockerfiles, Docker Compose, nginx, deploy/deploy.sh, Gitea Actions |
Builds, health checks, backup-gated deployment, and direct-to-production replacement after CI |
External boundaries
- Authentication: local ASP.NET Identity/JWT/cookie sessions; Google and Microsoft ID-token exchange/linking; TOTP 2FA.
- Mail: Gmail OAuth/API, Microsoft Graph, IMAP, and SMTP. Audit tests must mock these boundaries.
- Billing and abuse prevention: Stripe hosted flows/webhook and Cloudflare Turnstile.
- Job discovery/import: NAV feed and site-specific URL parsers for Finn, LinkedIn, and Jobbnorge; optional LibreTranslate.
- AI: private sidecar; Ollama locally or Gemini/Groq when configured.
- File/PDF: local data-root storage and headless Chromium PDF export.
Data ownership and trust boundaries
ApplicationUseris the identity root.- Tenant entities use
OwnerUserId; EF global query filters deny access when the current user is absent and scope reads to that owner. - Several child entities rely on filtered parent navigation or explicit owner predicates rather than their own owner column.
- Public CV is the main anonymous data-release boundary and requires an explicit
IsPublicflag plus a random slug. - nginx is intended as the only production ingress to the API; the AI service is on a private backend-only network.
- The API process owns database migrations/reconciliation and all seven workers; the current deployment assumes one API replica.
Documentation-to-code differences observed during discovery
job-tracker-ui/README.mdis obsolete Create React App boilerplate; the frontend now uses Next.js/Jest directly.docs/architecture/current.mdreports a smaller/older controller surface and stale file sizes; the current controller directory contains 29 controller classes plus partials/DTO files.- Root README API documentation omits substantial implemented surfaces including CV variants, billing, career profiles, AI workspace/history, job discovery, sessions, and several application-workspace APIs.
deploy/README.mdrecommends PostgreSQL, but the application implements SQLite and MariaDB/MySQL providers only.- Ignored local
vendor/,JobTrackerBackend/,.claude/worktrees/, build outputs, databases, virtual environments, and frontend dependencies remain on disk but are not current tracked application source.
Manual-audit exclusions
- Generated/build/runtime:
.next/,out/,build/,node_modules/,bin/,obj/, local databases, backups, keys, CV artifacts, test results, caches, and virtual environments. - Ignored historical/local copies:
.claude/worktrees/,JobTrackerBackend/,vendor/,tmp/. - Archived documentation under
docs/_archive/is historical evidence, not the current implementation contract. - Package lockfiles and EF generated migrations/model snapshot are reviewed for supply-chain and schema implications, not line-by-line as handwritten application logic.
Unfinished-marker search
No production-code TODO, FIXME, HACK, stub, or NotImplementedException was found outside deliberate test doubles, normal placeholder UI text, and a guided-acceptance script template. This does not prove feature completeness; incomplete behaviour is assessed through routes, tests, and browser journeys.