Date: May 2, 2026
Jobhunter is accepted as a production-oriented portfolio MVP. The application is complete for local production demonstration, with public job discovery, candidate CV workflows, recruiter pipeline management, admin operations, observability, backup/restore, staging, CI/CD, Docker publishing, E2E coverage, visual regression, and professional project documentation.
- Public IT job board with search, filters, sorting, job detail, top employers, articles, chatbot entry points, subscriber flow, and About content.
- Candidate workspace with saved jobs, CV library, application submission, application history, and status timeline.
- Recruiter workspace with company-scoped resume pipeline, filters, status transitions, notes, and audit timeline.
- Admin workspace for operational management of users, companies, jobs, skills, roles, permissions, and destructive-action safeguards.
- Security hardening with production startup guard, unsafe-method client header, rate limiting, sanitizer, upload validation, RBAC scope checks, and secure frontend headers.
- Local production operations with monitoring, uptime checks, log aggregation, alerting, OpenTelemetry collector, staging Compose stack, and scheduled MySQL backup/restore.
- CI/CD with backend/frontend test gates, Docker image build/publish, GitHub Releases, Docker Hub images, and GHCR workflow support.
- Documentation with README, About, release notes, production runbook, E2E QA guide, operations guide, visual assets guide, frontend/backend guides, and real product screenshots.
Commands run locally on May 2, 2026:
| Gate | Result |
|---|---|
backend/.\\gradlew.bat test |
Pass |
frontend/npm run lint |
Pass |
frontend/npm test -- --runInBand |
Pass, 10 suites / 61 tests |
frontend/npm run build |
Pass |
frontend/npm run test:e2e |
Pass, 16 / 16 |
frontend/npm run test:visual |
Pass, 4 / 4 |
frontend/npm audit --omit=dev --audit-level=high |
Pass, 0 vulnerabilities |
npm run smoke:local -- --frontend-url=http://localhost:3001 --api-base-url=http://localhost:8080/api/v1 --browser=true |
Pass, 11 / 11 |
npm run qa:local -- --frontend-url=http://localhost:3001 --api-base-url=http://localhost:8080/api/v1 |
Pass, 3 / 3 |
GitHub and container verification:
- GitHub Actions CI: pass.
- GitHub Actions CD - Container Publish: pass.
- Docker Hub backend image published with
master,latest, and commit tags. - Docker Hub frontend image published with
master,latest, and commit tags. - Contributor history is canonicalized with
.mailmap; local shortlog and GitHub Contributors API show onlyJasonTM17 / Nguyen Son.
- GitHub sidebar widgets can cache contributor and package metadata for a short time after pushes. The authoritative GitHub API and fresh git mirror clone are clean.
- GHCR packages may require GitHub package visibility/linking settings in the repository UI before they appear in the sidebar, even when the publish workflow succeeds.
- The portfolio is ready for local production demonstration. A real public domain, managed database, external SMTP provider, Redis-backed rate limiting, and hosted observability can be added later for an internet-facing deployment.
Accepted.
The project is ready to present as a polished, production-minded full-stack portfolio MVP.