A JSON API for job search and talent acquisition. Candidates create profiles and apply for jobs. Headhunters post vacancies, review applications, star candidates, and exchange comments.
Stack: Ruby 3.4 · Rails 8.1 · PostgreSQL · JWT auth · Solid Queue
- Ruby 3.4.4 (managed via asdf)
- PostgreSQL 16 (via Docker)
git clone git@github.com:0jonjo/alljobs.git
cd alljobsInstall Ruby and gems:
asdf install
bundle installStart the database:
docker compose up -d dbCreate and migrate the database:
rails db:create db:migrateStart the server:
rails serverbundle exec rspecbundle exec rubocopAll endpoints (except /api/v1/auth_user and /api/v1/auth_headhunter) require a JWT token in the Authorization header.
Obtain a token:
POST /api/v1/auth_user
{ "email": "user@example.com", "password": "secret" }
POST /api/v1/auth_headhunter
{ "email": "hh@example.com", "password": "secret" }Use the returned token:
Authorization: <token>| Method | Path | Description |
|---|---|---|
GET |
/api/v1/jobs |
List jobs (supports ?title= filter) |
POST |
/api/v1/jobs |
Create job (headhunter) |
GET |
/api/v1/jobs/:id |
Job detail |
PUT/PATCH |
/api/v1/jobs/:id |
Update job |
DELETE |
/api/v1/jobs/:id |
Archive job |
GET |
/api/v1/jobs/:id/stars |
Stars for a job (headhunter) |
GET/POST/DELETE |
/api/v1/jobs/:job_id/applies |
Candidatures |
GET/POST/DELETE |
/api/v1/jobs/:job_id/applies/:apply_id/stars |
Star a candidature |
GET/POST/DELETE |
/api/v1/jobs/:job_id/applies/:apply_id/comments |
Comments on a candidature |
GET/POST/PUT |
/api/v1/profiles |
Candidate profiles |