Setup

Installation

Set up Resume Matcher locally in 5 minutes

Prerequisites

  • Node.js 22+ - Download
  • Python 3.13+ - Download
  • uv - Python package manager. Install: curl -LsSf https://astral.sh/uv/install.sh | sh
  • Git - Download
  • Npm - Comes with Node.js

Quick Start

Terminal 1 — Backend:

cd apps/backend
python -m venv .venv
source .venv/bin/activate
uv sync
playwright install  # IMPORTANT Required for PDF rendering
uv run uvicorn app.main:app --reload --port 6799

Terminal 2 — Frontend:

cd apps/frontend
npm install
npm run dev         # Development
npm run build && npm run start  # Production

That’s it. Open http://localhost:3000 in your browser.

What npm install Does

The install script handles both stacks:

  1. Frontend - Installs Next.js dependencies in apps/frontend/
  2. Backend - Creates Python virtual environment via uv in apps/backend/

Environment Setup

Copy the example environment files:

# Backend config
cp apps/backend/.env.example apps/backend/.env

# Frontend config (optional)
cp apps/frontend/.env.local.example apps/frontend/.env.local

Edit apps/backend/.env to add your AI provider credentials:

LLM_PROVIDER=openai
LLM_MODEL=gpt-4o-mini
LLM_API_KEY=sk-your-key-here

Or skip this step and configure via the Settings page after starting the app. (⚠️ Experimental right now)

Development Commands

CommandDescription
npm run devStart both frontend (:3000) and backend (:8000)
npm run dev:frontendFrontend only
npm run dev:backendBackend only
npm run buildProduction build
npm run lintRun linter

Verify Installation

  1. Open http://localhost:3000
  2. Go to Settings and configure your AI provider
  3. Click “Test Connection” to verify it works
  4. Upload a resume and try tailoring it

Troubleshooting

Port already in use? Kill existing processes: lsof -ti:3000 | xargs kill -9

Python version error? Check version: python --version (needs 3.11+)

uv not found? Install it: curl -LsSf https://astral.sh/uv/install.sh | sh

Backend won’t start? Check .env file exists in apps/backend/

Getting Help

Next Steps