Personal job listing aggregator powered by Apify
- Go 52.9%
- Svelte 38%
- TypeScript 8%
- Makefile 0.6%
- HTML 0.3%
- Other 0.2%
| backend | ||
| frontend | ||
| .env.example | ||
| .gitignore | ||
| config.example.json | ||
| DESIGN.md | ||
| Makefile | ||
| README.md | ||
job-board
Local-first job application tracker. Automates job feed ingestion from Apify and provides a reactive interface for managing applications through their lifecycle.
Prerequisites
- Go 1.24+
- Node.js 18+
- npm
- An Apify API token (for job feed syncing)
Setup
- Install frontend dependencies:
cd frontend && npm install
- Create a
.envfile in the project root from the example:
cp .env.example .env
- Edit
.envand add your Apify API token:
APIFY_API_TOKEN=your_token_here
- (Optional) Edit
config.jsonto customize job search parameters — title keywords, location, exclusions, etc.
Running
Start both backend and frontend in one command:
make dev
- Frontend: http://localhost:5173
- Backend API: http://127.0.0.1:8080
To run them separately:
make dev-backend # Go backend only (port 8080)
make dev-frontend # SvelteKit dev server only (port 5173)
Building
make build # Build both backend and frontend
make build-backend # Build Go binary only (outputs backend/job-board)
make build-frontend # Build static frontend only (outputs frontend/build/)
Cleaning
make clean # Remove build artifacts
Project Structure
├── backend/ # Go REST API + SQLite database
├── frontend/ # SvelteKit 5 + Tailwind CSS
├── config.json # Apify job search parameters
├── .env # API tokens (gitignored)
└── Makefile # Dev/build commands