A Spring Bootβbased microservices backend designed for an internal audit and task management platform. It provides secure user authentication, task lifecycle management, and submission tracking via RESTful APIs.
The backend is composed of the following independent services:
| Service Name | Port | Description |
|---|---|---|
eureka-server |
8070 | Service discovery using Netflix Eureka |
gateway |
5000 | API Gateway for routing and CORS control |
task-user-service |
5001 | User auth, registration and role management |
task-service |
5002 | Task creation, assignment, and update workflow |
task-submission-service |
5003 | Submission handling and admin approval system |
- π§ͺ Spring Boot 3
- π§ Spring Security (JWT based)
- π PostgreSQL (via Spring Data JPA)
- π OpenFeign for inter-service communication
- π° Eureka for service registration/discovery
- π Spring Cloud Gateway for centralized routing
- π JWT (JJwt library) for stateless authentication
- Users sign in using
/auth/signInor register via/auth/signUp. - A JWT token is issued on successful authentication.
- JWT is validated via a custom
JwtTokenValidatorfilter. - Token carries user email and roles, used for authorization.
.
βββ eureka-server/
βββ gateway/
βββ task-user-service/
β βββ controller/
β βββ config/ # JWT, security, CORS
β βββ modal/ # User entity
β βββ service/ # Auth and user profile logic
β βββ repository/ # UserRepository
βββ task-service/
β βββ controller/
β βββ modal/ # Task, TaskStatus
β βββ service/ # TaskServiceImplementation
β βββ repository/
βββ task-submission-service/
β βββ controller/
β βββ modal/ # Submission entity
β βββ service/ # Submission logic + Feign clients
β βββ repository/
POST /auth/signIn # Login
POST /auth/signUp # Register
GET /api/users/profile # Get authenticated user profile
GET /api/users # Admin list all users
POST /api/tasks/createTask # Create a new task
PUT /api/tasks/update/{id} # Edit task details
GET /api/tasks/all-tasks # Admin fetch all tasks
GET /api/tasks/user # User fetch their assigned tasks
POST /api/submission/submit # Submit a task
GET /api/submission/get-all-submissions # Admin view all
PUT /api/submission/acc-dec/{id}?status=... # Accept or decline
- Stateless session with JWT header validation.
- Custom CORS settings for local frontend (localhost:3000).
- Secure password storage with
BCryptPasswordEncoder.
Prerequisites:
- Java 17+
- Maven
- PostgreSQL running and configured
# Clone the repository
git clone https://github.com/YOUR_USERNAME/internal-audit-backend.git
# Navigate to each service directory and run:
mvn spring-boot:run- π Add Prometheus & Grafana monitoring
- π‘οΈ Refresh token mechanism
- π§ Email notifications via SMTP integration
- π Admin dashboard with analytics support
Mert Duyar β Backend Developer
GitHub: @thejaxen
Licensed under the MIT License.