A robust REST API service built with Go to manage job applications, resumes, and related resources. This backend system provides a comprehensive solution for tracking job applications with support for resume storage in Azure Blob Storage.
Frontend for the application is available in the following repo: https://github.com/ehsan-ashik/react-admin-job-tracker-frontend
- Complete REST API for job application management
- Resource management for:
- Jobs
- Job Descriptions
- Job Categories
- Companies
- Resumes (with PDF storage)
- Advanced querying capabilities:
- Sorting
- Pagination
- Filtering
- Flexible resource creation:
- Create jobs with associated company and category information
- Independent CRUD operations for all resources
- Azure Blob Storage integration for resume PDFs
- Multi-part file upload support for resumes
- Built with Go Fiber for high performance
- GORM integration for database operations
- PostgreSQL database with automatic backups
- Dockerized deployment
- Structured logging
- CORS configuration
- Language: Go
- Framework: Go Fiber
- ORM: GORM
- Database: PostgreSQL
- Cloud Storage: Azure Blob Storage
- Containerization: Docker & Docker Compose
- Docker and Docker Compose
- Go 1.23
- PostgreSQL (for local development)
- Azure Storage Account
Create a .env file in the root directory:
# Database Configuration
DB_NAME=
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_PORT=
# Azure Storage Configuration
AZURE_ACCESS_KEY=
AZURE_ACCOUNT_NAME=
AZURE_CONTAINER_NAME=- Build and start the services:
docker-compose up --build
This will start:
- The API service
- PostgreSQL database
- Database backup service
-
Install dependencies:
go mod download
-
Run the application:
go run cmd/main.go
GET /api/job- List all jobs (supports pagination, sorting, filtering)POST /api/job- Create a new jobGET /api/job/:id- Get job detailsPUT /api/job/:id- Update jobDELETE /api/job/:id- Delete job
GET /api/company- List all companies (supports pagination, sorting, filtering)POST /api/company- Create a new companyGET /api/company/:id- Get company detailsPUT /api/company/:id- Update companyDELETE /api/company/:id- Delete company
GET /api/resume- List all resumes (supports pagination, sorting, filtering)POST /api/resume- Create a new resume (multipart form)GET /api/resume/:id- Get resume detailsPUT /api/resume/:id- Update resume (multipart form)DELETE /api/resume/:id- Delete resume
GET /api/job_category- List all categories (multipart form)POST /api/job_category- Create a new categoryGET /api/job_category/:id- Get category detailsPUT /api/job_category/:id- Update categoryDELETE /api/job_category/:id- Delete category
GET /api/job_description- List all descriptions (multipart form)POST /api/job_description- Create a new job descriptionGET /api/job_description/:id- Get job description detailsPUT /api/job_description/:id- Update job descriptionDELETE /api/job_description/:id- Delete job description
This project is licensed under the MIT License - see the LICENSE file for details.