https://github.com/darkvard/job-tracker
Vibe-coded job tracking web app with Chi and React
https://github.com/darkvard/job-tracker
clean-architecture docker go postgresql react redis tailwindcss typescript
Last synced: 2 months ago
JSON representation
Vibe-coded job tracking web app with Chi and React
- Host: GitHub
- URL: https://github.com/darkvard/job-tracker
- Owner: darkvard
- Created: 2026-03-28T10:47:41.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-18T02:18:42.000Z (2 months ago)
- Last Synced: 2026-04-28T03:46:45.489Z (2 months ago)
- Topics: clean-architecture, docker, go, postgresql, react, redis, tailwindcss, typescript
- Language: Go
- Homepage:
- Size: 414 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Job Tracker
Single-user job application tracker. Track applications, monitor status transitions, and visualize your pipeline with a dashboard and analytics.
---
## Stack
| Layer | Tech |
|---|---|
| Backend | Go 1.25 · Chi v5 · GORM · PostgreSQL 15 |
| Cache | Redis 8 |
| Frontend | React 18 · Vite · Tailwind CSS · shadcn/ui · Recharts |
| Auth | JWT (HS256) · bcrypt |
| Infra | Docker Compose · air hot reload · golang-migrate · mockery |
---
## Architecture
```
┌─────────────────────────────────────────────┐
│ Browser (React SPA) │
│ Vite · React Query · React Router · Axios │
└──────────────────┬──────────────────────────┘
│ HTTP/REST
┌──────────────────▼──────────────────────────┐
│ Go API (Chi) │
│ ┌─────────┐ ┌─────────────┐ ┌─────────┐ │
│ │ Handler │→ │ Use Cases │→ │ Domain │ │
│ │ (infra) │ │ (app layer)│ │ (pure) │ │
│ └────┬────┘ └──────┬──────┘ └─────────┘ │
│ │ │ TxManager │
│ ┌────▼──────────────▼──────────────────┐ │
│ │ Infrastructure (GORM · Redis) │ │
│ └──────────┬──────────────┬────────────┘ │
└─────────────┼──────────────┼────────────────┘
│ │
┌──────────▼──┐ ┌──────▼──────┐
│ PostgreSQL │ │ Redis 8 │
│ (port 5433)│ │ (port 6380) │
└─────────────┘ └─────────────┘
Clean Architecture: domain ← application ← infrastructure
Arrows never reverse. GORM/Redis never imported by domain or application.
```
---
## Prerequisites
- Docker with Compose v2 plugin (`docker compose` — ships with Docker Desktop and Docker Engine ≥ 23)
- Go 1.25
- Node.js 24
---
## Getting Started
```bash
# 1. Clone
git clone https://github.com/darkvard/job-tracker.git && cd job-tracker
# 2. Configure
cp .env.example .env
# Edit .env — set JWT_SECRET to any 32+ character random string
# 3. Build image (first time only)
make docker-build
# 4. Start containers
make docker-up
# 5. Apply migrations
make migrate-up
# 6. (Optional) Load demo data
make seed # login: demo@tracker.com / demo123
```
Open: http://localhost:5173
API docs: http://localhost:3001/api/v1/swagger/index.html
---
## Daily Workflow
```bash
make docker-up # start all containers
make docker-down # stop all containers
make migrate-up # apply pending migrations
make logs # tail all logs
make logs-api # tail backend logs only
make test # unit + integration tests
make lint # golangci-lint
make seed # reload demo data (idempotent)
```
> Source is mounted as a volume — Go (air) and React (Vite) both hot-reload on save.
> Only run `make docker-build` when `go.mod` or `Dockerfile.dev` changes.
---
## Ports
| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:3001 |
| Swagger UI | http://localhost:3001/api/v1/swagger/index.html |
| PostgreSQL | localhost:5433 |
| Redis | localhost:6380 |
---
## License
MIT