Done by : [full name @github_username]
ETTAOUIL Oussama @Ettalissimo
FADLI Saber @fadliSaber
NOKRA Zakaria @Zakaria-NOKRA
ELAFOUI Badr @BalerionGT
Supervised by :
M. MAHMOUD EL HAMLAOUI @ELHAMLAOUI
Welcome to the Space Events Web Application! This project is designed for space enthusiasts who are keen to stay updated on the latest space events. Our application fetches data from an external API, providing real-time information on space-related events. Users can subscribe to their favorite events and receive notifications whenever there are updates, ensuring they never miss any important information.
The development of the Space Events Web Application followed a structured approach to ensure scalability, maintainability, and user satisfaction. Here's an overview of the process:
-
User Needs: Understand the needs of space enthusiasts to provide timely and accurate updates on space events.
-
API Integration: Identify and integrate with reliable external APIs that provide comprehensive space event data.
-
Notification System: Develop a robust notification system to inform users about updates.
Adopt a microservices architecture to allow independent development, testing, and deployment of different components.
- Model-View-Controller (MVC) Pattern
The MVC pattern divides the application into three interconnected components, promoting separation of concerns and making the codebase more manageable and scalable.
- Strategy Pattern
One of the design patterns that we used is strategy pattern in the service layer of the event microservice
- Backend: Java, Spring Boot
- Frontend: React , Vite
- Database: PostgreSQL / MongoDB
- External API: Launch Library 2 : https://lldev.thespacedevs.com/docs/
- Test: JUnit, Mockito
- DevOps: Docker, Kubernetes, Kafka, Eureka, Grafana ...
The realization phase involved the actual development and deployment of the application. Here's a step-by-step breakdown:
1- Setup Development Environment: Configure the development environment with necessary tools and dependencies.
2- Microservices Implementation:
Event Service: Fetches and processes data from the external API.
User Service: Manages user registrations, logins, and subscriptions.
Notification Service: Sends notifications to users about event updates.
3- Frontend Development: Design and develop the user interface to display events and manage subscriptions.
4- Database Setup: Create database schemas and integrate with the backend services.
1- API Integration: Connect the Event Service to the external API and ensure data is correctly fetched and displayed.
2- Inter-Service Communication (Synchrone messages): Ensure smooth communication between microservices using RESTful APIs
3- Inter-Service Communication (Asynchrone messages): Using messaging queues {Kafka}
Unit Testing: Write and execute unit tests for individual components using JUnit and Mockito.
Containerization: Use Docker to containerize microservices for consistent environments across development, testing, and production.
Orchestration: Deploy and manage containers using Kubernetes.
Prometheus: Used for collecting and storing metrics about the application’s performance. Prometheus scrapes metrics from instrumented jobs, stores them, and makes them available for querying.
Grafana: Provides a powerful and beautiful dashboard for visualizing metrics collected by Prometheus. Grafana helps in creating alerts, and detailed visual reports to monitor the health and performance of the application.
The Space Events Web Application leverages modern technologies and best practices to deliver a reliable and engaging platform for space enthusiasts. With its microservices architecture, robust notification system, and user-friendly interface, it ensures users stay informed about the latest space events efficiently and effectively.