https://github.com/vero-git-hub/student-manager
https://github.com/vero-git-hub/student-manager
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/vero-git-hub/student-manager
- Owner: vero-git-hub
- License: mit
- Created: 2024-09-01T09:08:16.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2024-09-12T15:41:35.000Z (8 months ago)
- Last Synced: 2024-09-14T00:58:58.733Z (8 months ago)
- Language: Java
- Size: 337 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Microservice - Student Manager
The Student Management microservice includes a frontend built with **Angular** and a backend powered by **Java Spring Boot**. This CRUD application uses **MongoDB** as the database and is deployed using **Docker** and **Kubernetes**.
It is developed according to Java coding standards with secure authentication using **JWT**. The architecture follows a separation between controllers, services, and repositories.
## Table of Contents
- [Technologies](#technologies)
- [Features](#features)
- [Architecture](#architecture)
- [Project Setup](#project-setup)
- [API Documentation](#api-documentation)
- [Testing](#testing)
- [Test Coverage](#test-coverage)
- [Deployment](#deployment)
- [License](#license)## Technologies
- **Frontend**: Angular v18.2.4, Angular Material
- **Backend**: Java v17.0.7, Spring Boot v3.3.3, Apache Maven
- **Database**: MongoDB v7.0.14
- **Deployment**: Docker v4.33.1, Nginx, Kubernetes v1.30.2
- **Documentation**: Swagger (Springdoc OpenAPI) v2.5.0
- **Security**: Spring Security JJWT v0.11.5, frontend validation
- **Tests**: JUnit, Mockito, Spring Security Test, MockMvc
- **Tools**: Node.js v20.14.0, Intellij IDEA, Postman## Features
The application performs the core functions of a RESTful API:
- Registration and authentication
- Retrieving information about students/student
- Updating and deleting student data## Architecture
- **student-manager-frontend**: Directory containing the Angular frontend.
- **nginx.conf:** Nginx configuration for serving the frontend.
- **backend (project root)**: Spring Boot backend using MongoDB and JWT for authentication.
- **docker-compose.yml**: For managing MongoDB, backend, and frontend containers.## Project Setup
The project uses docker-compose to launch all services. Steps to launch using Docker:
1. Rebuild and start the containers:
```bash
docker-compose up --buildThis will launch three containers:
- **mongodb:** MongoDB database.
- **student-manager-backend:** Spring Boot backend running on port 8080.
- **student-manager-frontend:** Angular frontend served via Nginx, running on port 80.2. Open your browser and go to http://localhost to view the application.
## API Documentation
The backend API is available at http://localhost:8080. Swagger is used for API testing and documentation.
### Swagger Documentation
You can view the full documentation and perform test requests via Swagger, available at the following address: http://localhost:8080/swagger-ui.html.
## Testing
You can test requests in several ways:
1. **Postman:** An external tool for creating and sending HTTP requests.
2. **Swagger UI:** Testing can be done directly through the Swagger interface (described above).
3. **Angular Interface:** The frontend application's user interface, which sends requests to the backend.## Test Coverage
The application is covered by tests for the developed APIs. This includes:
- **Unit Testing:** Verifying individual parts (modules) of the code.
- **Security Testing:** Checking authorization and authentication, and protecting against unauthorized access.## Deployment
For easy deployment, the application supports containerization using Docker. The project includes a mechanism for creating Docker images via Dockerfile for both the frontend and backend.
The project also provides configuration files for deployment through Kubernetes, allowing for easy scaling and management of the application in a clustered environment.
## License
This project is licensed under the terms of the MIT License.