# Installation

> Run Resume Matcher from source without Docker: Python 3.13+ and uv for the backend, Node.js 22+ and npm for the frontend, each in its own terminal.
- **Section**: Setup
- **URL**: https://resumematcher.fyi/docs/installation/

---

## Prerequisites

- **Python 3.13+**
- **Node.js 22+**
- **uv**
- **npm**

Install `uv` with:

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

## Local Development Setup

Clone the main Resume Matcher app repo, then start the backend and frontend in separate terminals.

```bash
git clone https://github.com/srbhr/Resume-Matcher.git
cd Resume-Matcher

# Terminal 1
cd apps/backend
cp .env.example .env
uv sync
uv run app

# Terminal 2
cd apps/frontend
npm install
npm run dev
```

## Default Local URLs

- **Frontend:** `http://localhost:3000`
- **Backend:** `http://127.0.0.1:8000`

The frontend expects the backend at `http://127.0.0.1:8000` by default.

## Playwright Requirement for PDF Export

PDF generation uses Playwright and Chromium. After backend dependencies are installed, run:

```bash
cd apps/backend
uv run playwright install chromium
```

Without this step, PDF export works only if Chrome or Edge is installed on the machine, which the app falls back to.

PDF export also needs the frontend running, because Chromium prints the frontend's print page.

## Notes

- `npm install` in `apps/frontend` installs frontend dependencies only.
- Local development starts the frontend and backend separately.
- Configure your AI provider at `http://localhost:3000/settings` after both servers are running.
- Your data goes into an SQLite database in `apps/backend/data/`, which needs no setup. To use PostgreSQL instead, see [Use PostgreSQL Instead of SQLite](/docs/postgresql/).
- Supported providers include OpenAI, Anthropic, OpenRouter, Google Gemini, DeepSeek, Groq, Azure AI Foundry, Ollama and OpenAI-compatible servers, plus your ChatGPT or Claude plan. See [Bring Your Own AI Key](/docs/bring-your-own-ai-key/).

## Troubleshooting

**`uv` not found**

Install it with:

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

**Wrong Python version**

Check:

```bash
python --version
```

Resume Matcher local development requires Python `3.13+`.

**Frontend cannot reach the API**

Make sure the backend is running at `http://127.0.0.1:8000`.

**PDF export fails**

Make sure the frontend is running, then re-run from `apps/backend`:

```bash
uv run playwright install chromium
```

## Next Steps

- [Getting Started](/docs/getting-started/)
- [Docker Installation](/docs/docker-installation/)
- [Features](/docs/features/)