Web-based application designed to streamline the process of reserving desks in a workplace. It provides secure user authentication, desk availability management, and scheduling features to enhance productivity and optimize workspace utilization.
-
Secure User Authentication: Users can sign up and log in using their email and password, ensuring secure access to the platform.
-
Desk Reservation: Allows employees to view available desks, select a time slot, and reserve a desk according to their needs.
-
Multi-Layered Security: Implemented with Spring Security, including role-based access controls and robust password hashing, ensuring user data is protected.
-
Automated Workflows: Developed GitHub Actions to automate testing and deployment, saving time and ensuring smooth operations.
-
High Test Coverage: Achieved over 96% unit test coverage, ensuring code reliability and reducing the likelihood of bugs.
-
Database Management: Designed and integrated a MySQL database to manage desk availability, user data, and reservation records with Flyway for database version control and Cloud SQL for automated backups.
- Backend: Java, Spring Boot
- Frontend: React.js
- Database: MySQL
- Security: Spring Security, JWT for authentication
- Testing: JUnit, Mockito, Cucumber, Protractor
- CI/CD: GitHub Actions
- Infrastructure: Docker, GCP (Google Cloud Platform)
- Clone the repository:
git clone https://github.com/Cipppp/Desk-booking-app.git
cd Desk-booking-app- Set up the backend:
cd backend
./mvnw clean install ./mvnw spring-boot:run- Set up the frontend:
cd frontend
npm install
npm start-
Configure the database:
- Make sure MySQL is installed and running.
- Update the
application.propertiesfile with your database credentials. - Use Flyway for managing database migrations.
-
User Authentication:
- Users can sign up with their email and password.
- Secure login ensures that only authorized users can access the platform.
-
Desk Reservation:
- View available desks and make reservations according to your schedule.
- Manage your reservations directly from your profile.
-
Admin Panel:
- Admins can manage user accounts, desk availability, and monitor usage patterns.
- Unit Tests: Run unit tests using JUnit and Mockito:
./mvnw test- Integration Tests: Run integration tests using Cucumber:
./mvnw integration-testContributions are welcome! Please feel free to submit a PR or open an issue to discuss changes.
This project is licensed under the MIT License - see the LICENSE file for details.