A comprehensive user management system with a modern React frontend and Spring Boot backend.
- ⚛️ React 18 with TypeScript
- 🎨 CoreUI for beautiful, responsive UI components
- 📊 Redux Toolkit for state management
- 🔒 JWT Authentication
- 📝 Form handling with Formik and Yup
- 📱 Responsive design
- 🧪 Comprehensive testing setup with Vitest
- 📈 Code coverage reporting
- 🛡️ Spring Boot 3.2.3
- 🔒 Spring Security with JWT
- 📊 Spring Data JPA
- 🗄️ PostgreSQL with Flyway migrations
- 📝 OpenAPI documentation
- 🧪 Comprehensive testing with JUnit 5
- 📈 Code coverage with JaCoCo
- 🔍 Spring Boot Actuator
- Java 17 or higher
- Node.js 18 or higher
- npm 9 or higher
- PostgreSQL 14 or higher
- Docker and Docker Compose (optional)
- Clone the repository:
git clone <repository-url>
cd user-management-system- Start the application using Docker Compose:
docker-compose up -dThe application will be available at:
- Frontend: http://localhost
- Backend API: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
- Navigate to the backend directory:
cd user-management-be- Configure the database in
application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/user_management_system
spring.datasource.username=postgres
spring.datasource.password=postgres- Build and run the backend:
./mvnw clean install
./mvnw spring-boot:run- Navigate to the frontend directory:
cd user-management-fe- Install dependencies:
npm install- Create a
.envfile:
VITE_API_URL=http://localhost:8080
VITE_APP_NAME=User Management System- Start the development server:
npm run devcd user-management-be
./mvnw test
./mvnw verify # with coveragecd user-management-fe
npm test
npm run test:coverageuser-management-system/
├── user-management-fe/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── store/ # Redux store
│ │ ├── services/ # API services
│ │ └── types/ # TypeScript types
│ └── cypress/ # E2E tests
│
├── user-management-be/ # Spring Boot backend
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/template/msa/
│ │ │ │ ├── config/ # Configuration
│ │ │ │ ├── controller/ # REST controllers
│ │ │ │ ├── dto/ # Data Transfer Objects
│ │ │ │ ├── model/ # Entity classes
│ │ │ │ ├── repository/ # JPA repositories
│ │ │ │ └── service/ # Business logic
│ │ │ └── resources/
│ │ │ └── db/migration/ # Flyway migrations
│ │ └── test/ # Test classes
│ └── pom.xml
│
└── docker-compose.yml # Docker configuration
./mvnw clean install- Build the project./mvnw spring-boot:run- Run the application./mvnw test- Run tests./mvnw verify- Run tests with coverage
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run test- Run testsnpm run test:coverage- Run tests with coveragenpm run lint- Run ESLint
- Health: http://localhost:8080/actuator/health
- Metrics: http://localhost:8080/actuator/metrics
- Prometheus: http://localhost:8080/actuator/prometheus
- Development server: http://localhost:3000
- Production build: http://localhost
- JWT-based authentication
- Role-based authorization
- Password encryption
- CORS configuration
- Security headers
- Input validation
- SQL injection prevention
- XSS protection
OpenAPI documentation is available at:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/v3/api-docs
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.