A full-stack employee management application built to learn modern frontend development with React and TypeScript while leveraging Spring Boot on the backend.
Sprout is a CRUD-based employee management system featuring:
- React + TypeScript frontend
- Spring Boot backend
- H2 database persistence
- Material UI (MUI) components
- REST API architecture
- Search, Create, Read, Update, and Delete operations
The project serves as a practical learning journey from traditional Java web development toward modern full-stack application development.
- React
- TypeScript
- Vite
- Material UI (MUI)
- Spring Boot
- Spring Web
- Spring Data JPA
- H2 Database
- IntelliJ IDEA
- Maven
- Node.js
- npm
- View employees
- Search employees
- Add employees
- Edit employees
- Delete employees
- Responsive layout
- Dark theme
- Material UI components
- Modal-based editing workflow
- H2 file-based database
- Data survives application restarts
sprout/
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── EmployeeForm.tsx
│ │ │ ├── EmployeeTable.tsx
│ │ │ ├── SproutAppBar.tsx
│ │ │ └── SproutFooter.tsx
│ │ │
│ │ ├── pages/
│ │ │ └── EmployeesPage.tsx
│ │ │
│ │ ├── services/
│ │ │ └── employeeService.ts
│ │ │
│ │ ├── theme/
│ │ │ └── theme.ts
│ │ │
│ │ ├── types/
│ │ │ └── Employee.ts
│ │ │
│ │ ├── App.tsx
│ │ └── main.tsx
│ │
│ └── package.json
│
├── backend/
│ ├── controller/
│ ├── service/
│ ├── repository/
│ ├── entity/
│ └── config/
│
└── README.md
cd backend
./mvnw spring-boot:runBackend will start on:
http://localhost:8490
cd frontend
npm install
npm run devFrontend will start on:
http://localhost:5173
Sprout uses a file-based H2 database.
Example configuration:
spring.datasource.url=jdbc:h2:file:./data/sprout
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=trueH2 Console:
http://localhost:8490/h2-console
GET /api/employeesPOST /api/employeesRequest Body:
{
"name": "John Doe",
"role": "Developer"
}PUT /api/employees/{id}DELETE /api/employees/{id}This project is intended to provide hands-on experience with:
- React fundamentals
- TypeScript
- Component architecture
- State management
- REST API integration
- Spring Boot backend development
- CRUD application design
- Material UI
- Full-stack application deployment
- Form validation
- Backend validation with Bean Validation
- Snackbar notifications
- Confirmation dialogs
- Pagination
- Sorting
- Department management
- React Router
- Authentication and authorization
- JWT security
- Docker support
- Single JAR deployment with bundled frontend
This project is intended for learning and experimentation.