Sistem rekomendasi pekerjaan berbasis microservices (Go, gRPC, REST, NGINX, Docker Compose).
- Auth Service: Otentikasi JWT, login/register, gRPC & REST API
- CV Service: Upload & ekstraksi data CV, rekomendasi pekerjaan
- API Gateway: NGINX sebagai reverse proxy & CORS handler
- Database: MySQL
- Dev Tools: Hot reload, PHPMyAdmin, TypeScript check, GitHub Actions CI
-
Clone repository
git clone https://github.com/agusheryanto182/job-recommendations.git cd job-recommendations
-
Copy file environment
cp .env.example .env # Edit .env sesuai kebutuhan (MySQL, JWT, dsb)
-
Jalankan semua service
cd docker docker-compose up --build
-
Akses service
- API Gateway: http://localhost:8000
- Auth Service: http://localhost:8000/auth/health
- CV Service: http://localhost:8000/cv/health
- PHPMyAdmin: http://localhost:8080
- Frontend: http://localhost:3000
backend/
├── auth-service/ # Service otentikasi (Go, gRPC, REST)
├── cv-service/ # Service CV & rekomendasi (Go, gRPC, REST)
└── proto/ # Shared proto files (gRPC)
docker/
├── docker-compose.yml # Orkestrasi semua service
└── nginx/ # Konfigurasi NGINX (API Gateway)
frontend/ # Frontend React/Next.js
scrapper/ # Scrape data set dari Linkedin
model/ # Model rekomendasi pekerjaan menggunakan content-based filtering
GET /user/health
GET /user/google/login
GET /user/google/callback
GET /user/profile
GET /user/refresh
GET /user/logout
POST /cv/extract
(upload CV, extract data)GET /cv/history
(riwayat rekomendasi)GET /cv/health
- TypeScript & Lint:
Otomatis di-check via GitHub Actions setiap push/PR. - Go Build & Test:
Otomatis di-check via GitHub Actions setiap push/PR.
- Untuk development, gunakan
Dockerfile.dev
(hot reload, volume mounting) - Untuk production, gunakan
Dockerfile.prod
(multi-stage, image kecil) - Semua service saling komunikasi via gRPC/REST, proto file di-share di
backend/proto
- Gunakan NGINX sebagai satu-satunya entry point (port 8000)
- Fork repo ini
- Buat branch baru (
git checkout -b fitur-baru
) - Commit perubahan (
git commit -am 'Tambah fitur baru'
) - Push ke branch (
git push origin fitur-baru
) - Buat Pull Request
- Request review ke agusheryanto182
MIT License
- Build context terlalu besar?
Pastikan.dockerignore
sudah benar di root project. - gRPC error import proto?
Pastikan replace path digo.mod
sesuai dengan environment (Docker/CI). - Service tidak bisa diakses?
Cek network didocker-compose.yml
dan pastikan semua service join network yang sama.
- Cara masuk ke postgres
# Masuk ke container PostgreSQL sudo docker exec -it job-recommendation-postgres psql -U 'user name' -d 'db-name'
- Restart service
sudo docker compose pull && sudo docker compose up -d --force-recreate
- Recreate the auth service image
docker build -f backend/auth-service/Dockerfile.prod -t agusheryanto182/auth-service:latest .
- Recreate the cv service image
docker build -f backend/cv-service/Dockerfile.prod -t agusheryanto182/cv-service:latest .
- Push to docker hub -> auth service
sudo docker push agusheryanto182/auth-service:latest
- Push to docker hub -> cv service
sudo docker push agusheryanto182/cv-service:latest