{"repo": "0xmmhh/career-tracker", "files": {"DEPLOY.md": {"33105a6870d22983be392c227e476a468f5ad0d6": {"t": 1785746597.8441162, "n": 3174, "h": "8bf40368b5aa9474", "c": "# Deploying Career Tracker to a Server\n\nThis is a **terminal app (TUI)**. On a server you run it inside an SSH session — there is\nno web interface. It is a single-user personal tool. See `README.md` for what the app does\nand the full key reference; this file covers server setup only.\n\n---\n\n## 1. Requirements on the server\n\n| Requirement | Why | Check |\n|---|---|---|\n| **Node.js ≥ 22** | Uses the built-in `node:sqlite` module (not available before v22) | `node --version` |\n| **Playwright + Chromium** | Only needed for `npm run harvest` (scraping job portals) | installed in step 3 |\n| A real terminal over SSH | It's a full-screen TUI (ink/React) | — |\n\nIf the server has an older Node, install Node 22+ first (e.g. via\n[nvm](https://github.com/nvm-sh/nvm): `nvm install 22 && nvm use 22`).\n\n---\n\n## 2. Copy the project over\n\nYou will receive a file like `career-tracker.tar.gz`. It contains the source, your\n`data/` folder (companies, applications, CVs), but **not** `node_modules` or `.env`.\n\nFrom your local machine:\n\n```bash\nscp career-tracker.tar.gz user@your-server:~/\n```\n\nThen on the server:\n\n```bash\nssh user@your-server\ntar -xzf career-tracker.tar.gz\ncd job-searching-platform\n```\n\n---\n\n## 3. Install dependencies\n\n```bash\nnpm install\nnpx playwright install chromium # only if you'll use `npm run harvest`\n```\n\nOn a bare Linux server Playwright may need system libraries. If `harvest` fails with a\nmissing-library error, run:\n\n```bash\nnpx playwright install-deps chromium # needs sudo; Debian/Ubuntu\n```\n\nYou can skip both Playwright steps entirely if you don't plan to use `[g]ather` —\neverything else (manual companies, applications, AI features) works without it.\n\n---\n\n## 4. Create the `.env` file (secrets — not included in the tarball)\n\nThe API key was intentionally left out of the package. Create `.env` on the server:\n\n```bash\ncp .env.example .env\nnano .env # paste your DeepSeek key into DEEPSEEK_API_KEY=\n```\n\nMinimum needed for the AI fit/tailor features:\n\n```\nDEEPSEEK_API_KEY=sk-...your key...\n```\n\n`GOOGLE_API_KEY` / `GOOGLE_CSE_ID` are optional (only for `[d]iscover`) — leave blank.\n\n---\n\n## 5. Run it\n\n```bash\nnpm start\n```\n\nThat launches the TUI. Press `[h]` inside the app for the full key reference.\n\nCLI-only commands (no UI):\n\n```bash\nnpm run harvest # scrape portals → candidates (needs Playwright)\nnpm run discover # Google-search discovery → candidates (needs Google keys)\nnpm run typecheck # tsc --noEmit, sanity check after edits\n```\n\n---\n\n## 6. Notes & gotchas\n\n- **Data location:** everything lives in `data/` — `tracker.db` (SQLite) and the\n `base-cv-en.txt` / `base-cv-pl.txt` profiles. Back this folder up to keep your data.\n- **Editing CV profiles:** edit `data/base-cv-en.txt` and `data/base-cv-pl.txt` in any\n editor, then press `[r]` in the CV view (`[v]`) to reload.\n- **SQLite WAL files:** `tracker.db-wal` and `tracker.db-shm` may appear next to the DB —\n that's normal, don't delete them while the app runs.\n- **Keeping a session alive:** if you want the TUI to survive disconnects, run it inside\n `tmux` or `screen` (`tmux new -s tracker`, then `npm start`; reattach with `tmux a -t tracker`).\n"}, "b7208219a59854a913e41eed66c817702313f70d": {"t": 1785766185.315565, "n": 3174, "h": "8bf40368b5aa9474", "c": "# Deploying Career Tracker to a Server\n\nThis is a **terminal app (TUI)**. On a server you run it inside an SSH session — there is\nno web interface. It is a single-user personal tool. See `README.md` for what the app does\nand the full key reference; this file covers server setup only.\n\n---\n\n## 1. Requirements on the server\n\n| Requirement | Why | Check |\n|---|---|---|\n| **Node.js ≥ 22** | Uses the built-in `node:sqlite` module (not available before v22) | `node --version` |\n| **Playwright + Chromium** | Only needed for `npm run harvest` (scraping job portals) | installed in step 3 |\n| A real terminal over SSH | It's a full-screen TUI (ink/React) | — |\n\nIf the server has an older Node, install Node 22+ first (e.g. via\n[nvm](https://github.com/nvm-sh/nvm): `nvm install 22 && nvm use 22`).\n\n---\n\n## 2. Copy the project over\n\nYou will receive a file like `career-tracker.tar.gz`. It contains the source, your\n`data/` folder (companies, applications, CVs), but **not** `node_modules` or `.env`.\n\nFrom your local machine:\n\n```bash\nscp career-tracker.tar.gz user@your-server:~/\n```\n\nThen on the server:\n\n```bash\nssh user@your-server\ntar -xzf career-tracker.tar.gz\ncd job-searching-platform\n```\n\n---\n\n## 3. Install dependencies\n\n```bash\nnpm install\nnpx playwright install chromium # only if you'll use `npm run harvest`\n```\n\nOn a bare Linux server Playwright may need system libraries. If `harvest` fails with a\nmissing-library error, run:\n\n```bash\nnpx playwright install-deps chromium # needs sudo; Debian/Ubuntu\n```\n\nYou can skip both Playwright steps entirely if you don't plan to use `[g]ather` —\neverything else (manual companies, applications, AI features) works without it.\n\n---\n\n## 4. Create the `.env` file (secrets — not included in the tarball)\n\nThe API key was intentionally left out of the package. Create `.env` on the server:\n\n```bash\ncp .env.example .env\nnano .env # paste your DeepSeek key into DEEPSEEK_API_KEY=\n```\n\nMinimum needed for the AI fit/tailor features:\n\n```\nDEEPSEEK_API_KEY=sk-...your key...\n```\n\n`GOOGLE_API_KEY` / `GOOGLE_CSE_ID` are optional (only for `[d]iscover`) — leave blank.\n\n---\n\n## 5. Run it\n\n```bash\nnpm start\n```\n\nThat launches the TUI. Press `[h]` inside the app for the full key reference.\n\nCLI-only commands (no UI):\n\n```bash\nnpm run harvest # scrape portals → candidates (needs Playwright)\nnpm run discover # Google-search discovery → candidates (needs Google keys)\nnpm run typecheck # tsc --noEmit, sanity check after edits\n```\n\n---\n\n## 6. Notes & gotchas\n\n- **Data location:** everything lives in `data/` — `tracker.db` (SQLite) and the\n `base-cv-en.txt` / `base-cv-pl.txt` profiles. Back this folder up to keep your data.\n- **Editing CV profiles:** edit `data/base-cv-en.txt` and `data/base-cv-pl.txt` in any\n editor, then press `[r]` in the CV view (`[v]`) to reload.\n- **SQLite WAL files:** `tracker.db-wal` and `tracker.db-shm` may appear next to the DB —\n that's normal, don't delete them while the app runs.\n- **Keeping a session alive:** if you want the TUI to survive disconnects, run it inside\n `tmux` or `screen` (`tmux new -s tracker`, then `npm start`; reattach with `tmux a -t tracker`).\n"}}}}