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/healthGET /user/google/loginGET /user/google/callbackGET /user/profileGET /user/refreshGET /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.dockerignoresudah benar di root project. - gRPC error import proto?
Pastikan replace path digo.modsesuai dengan environment (Docker/CI). - Service tidak bisa diakses?
Cek network didocker-compose.ymldan 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