A Spring Boot microservice for managing notifications in a fintech ecosystem. π
The Notification Service handles:
-
π€ User notification delivery
-
βοΈ Notification preference management
-
π Cross-service user data integration
src/main/java/com/fintech/notification/
βββ config/ # Configuration files
β βββ RestTemplateConfig.java
βββ controller/ # REST controllers
β βββ NotificationController.java
βββ dto/ # Data Transfer Objects
β βββ NotificationRequest.java
β βββ NotificationResponse.java
βββ exception/ # Custom exceptions and handlers
β βββ NotificationException.java
βββ model/ # Domain entities
β βββ Notification.java
βββ repository/ # Data repositories
β βββ NotificationRepository.java
βββ service/ # Business logic
β βββ NotificationService.java
β βββ UserServiceClient.java
βββ util/ # Utility classes
β βββ NotificationUtils.java
βββ NotificationApplication.java
- Framework: Spring Boot
- Build Tool: Maven
- Database: PostgreSQL
- Containerization: Docker
- Container Registry: AWS ECR (Public)
- Orchestration: Kubernetes (EKS)
- CI/CD: Jenkins
- Code Quality: SonarQube
Our CI/CD pipeline ensures reliable and consistent deployments through the following stages:
-
Code Checkout
- Triggered by GitHub webhook
- Fetches the latest code
- Ensures a clean workspace
-
Static Code Analysis (Currently Disabled)
- Uses SonarQube for code quality analysis
- Checks for code smells, bugs, security vulnerabilities, and test coverage
- Enforces quality gates with a 5-minute timeout
-
Maven Build
- Compiles the Java source code
- Packages the application into a JAR file
- Validates project structure and dependencies
-
Docker Build & Push
- Creates a Docker image
- Authenticates with AWS ECR Public registry
- Tags and pushes the image to the registry
-
EKS Deployment
- Configures kubectl with cluster credentials
- Creates or updates the
fintechnamespace - Applies Kubernetes manifests:
- ConfigMaps
- Secrets
- Deployment
- Service
- Verifies deployment status
- Removes local Docker images
- Cleans the workspace
- Ensures a clean state for future builds
The service is deployed to AWS EKS using Kubernetes manifests located in the k8s/ directory:
configmap.yaml: Environment variables and configurationssecrets.yaml: Sensitive data (credentials, tokens)deployment.yaml: Pod specifications and container settingsservice.yaml: Service exposure and networking
-
Prerequisites
- Java 17+
- Maven
- Docker
- AWS CLI
- kubectl
-
Local Development
# Build the project mvn clean package # Run locally mvn spring-boot:run
-
Docker Build
docker build -t user-service . -
Deploy to Kubernetes
# Apply manifests kubectl apply -f k8s/ -n fintech
The service includes monitoring integration for:
- Application metrics
- Performance monitoring
- Error tracking
- Resource utilization
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
| Avatar | Name | Role | GitHub |
|---|---|---|---|
![]() |
Zakariae Azarkan | DevOps Engineer | @zachary013 |
![]() |
El Mahdi Id Lahcen | Frontend Developer | @goalaphx |
![]() |
Hodaifa | Cloud Architect | @hodaifa-ech |
![]() |
Khalil El Houssine | Backend Developer | @khalilh2002 |
![]() |
Mohamed Amine BAHASSOU | ML Engineer | @Medamine-Bahassou |
This project is licensed under the MIT License - see the LICENSE file for details.





