This project is a school project for the 5th year of engineering school at Polytech Montpellier. The purpose of the project was to introduce the concept of microservices and to implement a project with this principle. This project was made by a team of two people. It was made in 2 months out of the classroom.
The project aims to develop a comprehensive application for seasonal job recruiters and administrators. The application will include the following key features:
CRUD operations for recruiters with detailed information including personal details, establishment information, subscription plans (Platinum, Gold, Silver, Free), and subscription durations. Admin notification and approval for recruiter account deletion.
CRUD operations for seasonal job offers, including employment details, periods, establishment association, salary, and benefits. Ability for recruiters to manage multiple establishments.
Integration with an external service (API specified separately) for candidate matching. Varying levels of candidate information access based on subscription plans.
- Validation of candidate selection for a job.
- CRUD operations for reviews on candidates at the end of their assignments.
- Developed in React Native using Expo.
- Global state management with React Context & TanStack Query.
- I18n Friendly (English & French).
- Testing on a preferred platform (iOS & Web).
- Microservices architecture with services for user management, job offers, references, reviews, availability, addresses, invoices, notifications, company, payment & experiences in Spring Boot or Spring Webflux.
- API Gateway for backend accessibility (Spring Cloud Gateway).
- PostgreSQL or MongoDB databases for each microservice.
- Kafka message broker for some of the inter-microservice communication.
- Zookeeper for Kafka cluster management.
- Eureka for service discovery.
- Config Server for configuration management.
- Kotlin on one of the microservices.
- Keycloak for authentication and authorization.
- Spring security for securing the microservices with Keycloak.
- Spring Mock MVC for testing.
- Maven for build and dependency management.
- Git submodules for backend.
- Git flow.
- Containerization with Docker-compose.
- Implementation of CI/CD using GitHub Actions.
@ Romain Frezier & Lorenzo Italiano - IG5 Polytech Montpellier - 2023