This project is a full-stack application for managing teams, built using Angular for the frontend and Spring Boot for the backend. It is designed with a microservices architecture, allowing for scalable and efficient management of teams and employees. The application supports CRUD operations and utilizes RabbitMQ for communication between microservices.
This project was created as a recruitment project for internships, and is still in development. I welcome any tips and feedback to help improve it.
The app allows users to add new teams, add employees, and perform CRUD operations. The app uses Java (Spring Boot) for the backend and Angular for the frontend, with detailed API documentation.
At first development of the app I had to add logger and tracing. I used Logback to configure pattern of logs including job number. To handle logging, I've implemented a Spring Boot Actuator.
Next, I had to add a new microservice to the application. I've made a service to generate an Excel file contains summary of all employees. To the communication between microservices, I've chosen RabbitMQ.
I've implemented API gateway to manage multiple microservices with different ports. I've made it using Spring Boot Cloud Starter Gateway.
My app sends email notifications via SendGrid (Twilio) and SMS notification via smsapi.pl when a user is assigned to a new team, either by adding or editing them. This happens automatically on team changes. There's also a manual email endpoint, but it's unused in the frontend.
- Authorization
- Auto reload component after modeling content
- Provide unit tests
To set up and run the frontend application, follow these steps:
-
Requirements
- Node.js (version 14 or higher)
- Angular CLI (version 19.0.4)
-
Clone the Repository
git clone https://github.com/Nisser111/team-menagement-app.git cd team-management-api/frontend
-
Install Dependencies
npm install
-
Run the Development Server
ng serve
-
Access the Application Open your browser and navigate to
http://localhost:4200/
. The application will automatically reload whenever you modify any of the source files.
To set up and run the backend application, follow these steps:
Clone the API repository to your local development environment:
git clone https://github.com/Nisser111/team-management-app.git
cd team-management-api/backend/team-management-api
-
Create a new database
menagement_system
and import necessary data from this script. -
Update the database configurations in your
application.properties
file located atsrc/main/resources/
. Example:
spring.datasource.url=jdbc:mysql://localhost:3306/team_management
spring.datasource.username=<your_username>
spring.datasource.password=<your_password>
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Follow steps on official RabbitMQ website. The application was configured to work on default settings.
Follow steps on official Jeager website. The application was configured to work on default settings.
Use Maven to build the project:
mvn clean install
Start the application using the following command:
mvn spring-boot:run
The application will run on the default port 8080 unless otherwise specified in the application.properties
.
For full API documentation look there.
Test the API using Postman. Go there!
For more information on using the Angular CLI, including detailed command references, visit the Angular CLI Overview and Command Reference page.
For more information on using Spring Boot, refer to the Spring Boot Documentation.
This project is licensed under the MIT License - see the LICENSE file for details.