A full-stack employee management application with comprehensive CRUD functionality. Developed with a Spring Boot API, a TypeScript React UI, MySQL, Redux, Tailwind CSS, Log4j, JUnit, and Axios.
- The project aims to develop a Spring-based backend for managing employees in a MySQL database, paired with a React frontend for seamless user interaction.
- The MVP features a polished UI for adding, editing, and deleting employees with comprehensive error handling and toast notifications, while the backend ensures robust error management, request logging with Log4j, and API documentation via Spring Swagger.
- TypeScript
- React
- SCSS
- Tailwind CSS
- Redux
- Axios
- Git
-
Clone the project from GitHub:
git clone [email protected]:cyberforge1/employee-creator-full-stack.git
-
Create, initialize and link a MySQL database to the backend API
-
Run the backend API locally
-
Navigate to the frontend directory
cd employee-creator-full-stack/react-frontend
-
Run the frontend locally
npm run dev
Users can create an employee by filling out the form inputs and submitting the 'Save' button. Employees can then be edited or deleted with a button click.
The objective for the frontend was to create a responsive, appealing, and intuitive user interface that allows users to easily access the backend features.
- An efficient user interface to interact with the backend API to access CRUD functionality.
- Dynamic filtering for specific employee status.
- Instantaneous searching for matching employees.
- Comprehensive error handling and toast notifications.
- Responsive design with Tailwind CSS.
- Java
- Spring Boot
- Spring Swagger
- Log4j
- JUnit
- MySQL
- Install prerequisite software:
- Java Development Kit
- Apache Maven
- MySQL
- Clone the project from GitHub:
git clone [email protected]:cyberforge1/employee-creator-full-stack.git
- Navigate into the project directory:
cd employee-creator-full-stack/spring-backend
- Open MySQL WorkBench (or access through CLI) and create a new database:
CREATE DATABASE employee_db;
-
Navigate to src/main/resources and create an application.properties file in this directory.
-
Integrate your specific details into application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/employee_db
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
- Clean and build the project:
mvn clean install
- Run the project locally:
mvn spring-boot:run
- Navigate to the following URL to confirm project start:
http://localhost:8080/employees
To access this backend, first follow the build steps above. The application frontend provides a user interface to interact with this backend automatically. Endpoints can also be accessed and tested through applications like Postman or Swagger UI.
The aim of this application was to create a robust API to create, read, update, and delete employee data.
- Comprehensive CRUD functionality with database access.
- A MySQL database to store employee data.
- User error notification for incorrect endpoint access.
- Enhanced logging features provided by Log4j.
- Project document generation by Spring Swagger.
- Unit testing provided by JUnit.
- Dockerize and deploy the application.
- Fix bug in dynamic form population.
- Implement filter and search functionality.
- Add user authentication and login functionality.
- Review and enhance testing coverage for both frontend and backend.
- Practiced React skills by adding dynamic filtering and searching into the application.
- Applied various testing methods and libraries to the frontend and backend.
- Gained experience building a Spring Boot application with robust features.
- Built familiarity with Spring Boot elements (controllers, services, repositories, DTOs, etc.).
- Created and integrated a MySQL database for desired data.
- Building new features into the application with associated libraries to increase scope.
- Learning how to apply unit-testing, integration testing, and end-to-end testing on the frontend and backend.
- Visit my LinkedIn for more details.
- Check out my GitHub for more projects.
- Or send me an email at [email protected]
Thanks for your interest in this project. Feel free to reach out with any thoughts or questions.
Oliver Jenkins © 2024