This file provides specific context and operational instructions for Gemini agents working on the Resume Matcher project.
Resume Matcher is a local-first, AI-powered application for tailoring resumes to job descriptions.
- Frontend: Next.js 15 (React 19), Tailwind CSS, Lucide Icons.
- Backend: FastAPI (Python 3.11+), TinyDB, LiteLLM.
- Core Philosophy: Privacy-first (local DB), user-controlled AI, "Swiss International Style" design.
- Linting is Law: Always run
npm run lint(frontend) or relevant Python checks before considering a task done. - Swiss Style: All UI changes MUST adhere to the Swiss International Style. Clean, grid-based, highly legible.
- Type Safety:
- Frontend: Strict TypeScript.
- Backend: Python type hints are mandatory.
- Error Handling: Log full errors server-side; return safe, generic messages to the client.
- State Management: React Context for global state (Language, Resume Data).
- Styling:
- App UI: Tailwind CSS.
- Resume Templates: CSS Modules (Isolated).
- Tokens:
components/resume/styles/_tokens.css - Base:
components/resume/styles/_base.module.css - Templates:
components/resume/styles/[template-id].module.css
- Tokens:
- Components: PascalCase. Prefer functional components with hooks.
- API: centralized in
lib/api/. Usefetchwrappers.
- LLM: Uses
LiteLLMfor multi-provider support.- Keys: Pass API keys explicitly to functions (avoid
os.environrace conditions). - JSON: Use
complete_json()wrapper for structured outputs.
- Keys: Pass API keys explicitly to functions (avoid
- Database:
TinyDB(JSON-based). simple, file-system based. - Services: Business logic resides in
app/services/.
architecture: CSS Modules + Tokens (New System).
- Do NOT use global Tailwind classes for resume internals (except layout wrappers).
- Edit Tokens:
components/resume/styles/_tokens.cssfor global color/font changes. - New Template:
- Create
components/resume/styles/[name].module.css. - Import
_base.module.css. - Create component in
components/resume/. - Register in
components/resume/index.tsanddashboard/resume-component.tsx.
- Create
- Update schema in
apps/backend/app/schemas/models.py. - Update frontend types in
apps/frontend/lib/types/resume.ts. - Add rendering logic to
DynamicResumeSection. - Update
ResumeFormto handle input.
- UI: Add keys to
apps/frontend/messages/{lang}.json. - Content: Ensure backend prompts use
{output_language}variable.
# Frontend
npm run dev:frontend # Start Next.js :3000
npm run lint # Check code quality (Run often!)
# Backend
npm run dev:backend # Start FastAPI :8000
# (Python tests pending setup)- Entry Point:
AGENTS.md - Frontend Arch:
docs/agent/30-architecture/frontend-workflow.md - Backend Arch:
docs/agent/30-architecture/backend-guide.md - Template System:
docs/agent/50-design-and-templates/template-system.md