A full-stack application to manage Trainers and Subjects within an institute.
- Frontend: React, TypeScript, Vite, Material UI (MUI v5)
- Backend: Spring Boot 3, Java 17, Spring Data JPA
- Database: MySQL 8
- Containerization: Docker, Docker Compose
- Trainer Management: Add, List, View Details, Delete Trainers.
- Subject Management: Add, List, View Details (with Trainers).
- M-to-N Relationship: Assign multiple subjects to trainers.
- Responsive UI: Built with Material UI.
nexanov/
├── backend/ # Spring Boot Application
│ ├── src/ # Java Source code
│ ├── pom.xml # Maven dependencies
│ └── Dockerfile
├── frontend/ # React Application
│ ├── src/ # React Source code
│ ├── package.json # NPM dependencies
│ └── Dockerfile
└── docker-compose.yml # Full stack orchestration
- Ensure Docker and Docker Compose are installed.
- Run from the root directory:
docker-compose up --build
- Access the application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8080
- Swagger Documentation: http://localhost:8080/swagger-ui.html
- Navigate to
backend. - Ensure MySQL is running locally (update
application.propertieswith your credentials). - Run:
mvn spring-boot:run
- Navigate to
frontend. - Install dependencies:
npm install
- Run dev server:
npm run dev
- Open http://localhost:5173.
erDiagram
TRAINER ||--|{ TRAINER_SUBJECT : "teaches"
SUBJECT ||--|{ TRAINER_SUBJECT : "taught by"
TRAINER {
long id
string name
string empId
string email
string phone
string experience
}
SUBJECT {
long id
string name
string description
}
| Method | Endpoint | Description |
|---|---|---|
| POST | /trainer |
Create a new trainer |
| GET | /trainer |
List all trainers |
| GET | /trainer/{id} |
Get trainer details |
| DELETE | /trainer/{id} |
Delete a trainer |
| GET | /trainer/{subject}/topic |
Get trainers by subject name |
| POST | /subject |
Create a new subject |
| GET | /subject |
List all subjects |
| GET | /subject/{id} |
Get subject details with trainers |