Jobhunter uses repository-owned visual assets for a cleaner portfolio presentation. The app does not depend on third-party company logos for the demo experience, and product screenshots are captured from the running local production stack rather than assembled manually.
frontend/public/logo-full.svg: primary header/footer wordmark.frontend/public/logo-mark.svg: compact brand mark for small surfaces.frontend/public/favicon.svg: browser favicon using the same mark.
The mark combines a briefcase, search lens, and upward career signal to communicate IT hiring, discovery, and progression.
Seeded employer images live in:
backend/storage/company/
Every seeded company now has a generated PNG brand tile, including companies that previously had no image. The assets are deterministic and can be regenerated with:
python scripts/generate-demo-company-logos.pyThe backend Docker image copies these assets into /opt/bootstrap-storage/company, and the demo seeder writes the matching filename into each company record at startup.
Screenshots are generated from the running local production stack:
npm run qa:local -- --frontend-url=http://localhost:3001 --api-base-url=http://localhost:8080/api/v1 --screenshotsThe same QA run also checks security headers, backend health, public APIs, unsafe-method guard, chatbot rendering, authenticated workspaces, mobile overflow, unexpected HTTP errors, and browser console errors.
| Screen | Asset |
|---|---|
| Public job board | ![]() |
| Job detail | ![]() |
| Candidate workspace | ![]() |
| Recruiter pipeline | ![]() |
| Admin users | ![]() |
| Gemini AI assistant | ![]() |
- Regenerate company logos after changing seeded company names or sectors.
- Run the local production QA scanner after changing UI layout, logo assets, header/footer, company cards, or chatbot surfaces.
- Review screenshots before release notes are published.
- Keep screenshots in
docs/assets/screenshotsso GitHub README and About docs render without external hosting.





