Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due
Room Booking and Event Management System
Objective:
Instructions and Requirements:
Environment Setup and Basic RESTful Service
Set up your environment and develop the foundational microservices for the platform. Each microservice should be containerized and independently deployable.
Design the backbone of your event management platform by developing RESTful services. Learn how to containerize these services, ensuring they're scalable and deployable.
• Java• Gradle• Spring / Spring Boot• Docker / Docker Desktop• MongoDB (docker container)• PostgreSQL (docker container)
Familiarize yourself with the Spring Initializr tool and prepare to set up your Spring Boot projects.
• RoomService: Manages room resources, such as room availability, capacity, and features.• BookingService: Handles room booking requests and manages booking information.• UserService: Manages user profiles for students, staff, and faculty.• EventService: Manages events linked to room bookings.• ApprovalService: Allows staff to approve or reject event requests based on college policy.
Each service must be containerized using Docker.
Part 2: Data Persistence and Service Functionality
Objective:
Relational Data Modeling:
• Seed sample data into your databases where/when deemed necessary/useful.• Establish relationships between your entities:
• Use PostgreSQL / JPA for data storage.• Manage room resources with attributes like roomName, capacity, features (e.g., projector, whiteboard), and availability. Of course, the final design is up to each individual group.• Provide endpoints to check room availability for bookings.
• Use MongoDB for data storage.• Handle room booking requests. Each booking should include userId, roomId, startTime, endTime, and purpose. Of course, the final design is up to each individual group.• Prevent double-booking of rooms using appropriate validation logic.
• Use PostgreSQL / JPA to store user information.• Manage user profiles for students, staff, and faculty with attributes like name, email, role, and userType (student, staff, faculty). Of course, the final design is up to each individual group.• Implement role-based access (e.g., only staff can approve events etc…).
• Use MongoDB to manage events.• Create events linked to room bookings with attributes such as eventName, organizerId, eventType, and expectedAttendees.
• Use MongoDB or PostgreSQL to store approval.• Allow staff to review and approve/reject event requests. Link event approvals to the user role.
Part 3: Inter-Service Communication
Objective:
Part 4: Testing & Containerization
Objective:
o Write integration tests for each microservice to ensure they behave correctly and communicate as expected.o Use TestContainers to spin up PostgreSQL, MongoDB containers during testing.
o Use Docker to containerize each microservice.o Use Docker Compose to orchestrate the deployment of all services needed services.o Ensure the system can be launched and run using a single docker-compose.yml file.
Remember for this course we primarily want to use containers, and for your assignment solution you need to create a containerized environment as demonstrated in class. Your containerized environment is the only environment thatshould be demonstrated in your assignment video. I will not be running your project using Intellij, meaning you demonstrations need to also running your solution, not using Intellij.
• A private git repository containing all your code, properly documented.
o Please ensure to add your professor as collaborator (ie. [email protected])
• A docker compose file to launch the entire system.
o Make sure all components of your solution are containerized in docker.o I will be running your docker compose file to test your system exclusively. I will NOT run your solution environment in any other way (not using intellij), so you must make sure your docker compose brings up your entire working environment correctly.
o Please note: If I cannot run your docker compose, you will lose marks
• You must demonstrate in your video recording, both running and brining up your docker-compose environment. This is the principal environment, and only environment that should be utilized during thedemonstration.• A Postman export collection, for each microservices tests, to showcase and test the various endpoints of your application. Each collection should be committed to your code repository.• A brief report explaining the architecture, challenges faced, and lessons learned.
o Include this in a parent folder of your project.
Evaluation Criteria:• Please review the final page (below) for submission guidelines
• Code Quality: Clear, readable, and maintainable code.• Functionality: Correct implementation of CRUD operations, communication between services, and room booking functionality.• Inter-Service Communication: Reliable and accurate communication between microservices.• Testing: Comprehensive integration tests with TestContainers.• Containerization: Proper use of Docker and Docker Compose.• Documentation: Well-documented code and a clear, concise report.
Final Word on Implementation
For some requirements, the specifications may require you and your team to perform a certain amount of investigation and research. Please note this is intended. For example, some requirements will require to think about data persistence, CRUD operations etc., others may require you to think about data organization or storage, and yet others further still, may simply require you to learn a new library or concept, even if, those new concepts/libraries have not been formally covered in the course. I’m interested to see how your group approaches and solves problems.
Lastly, a requirement’s document is used only to convey a perception of what is desired, but each developer is free to interpret differently, so long as the underlying requirements are met. Originality is always welcome, and always encouraged, and marks are often awarded accordingly.
Assignment Submission Guidelines:
b. The first (and only) slide of your presentation must include current images of you and your partner(s) (no avatars allowed) that are displayed appropriately. You must also include your Full Names, Student IDs, the Course Code, Course Name, Course Section, and your Assignment information.
c. Within the recording, you or your partner(s) will take turns demonstrating your program’s functionality. You must show your solution working properly. You will also construct an assignment status report, a single page checklist/report. Use the report during the video, to facilitate communication confirming where requirements where successfully implemented and/or where requirements failed to be implemented and why.
e. You and your partner(s) will each share the responsibility in describing the code in your solution that drives the functionality of your program – you will want to do this part well and be very clear. Be intelligent/selective on what code segments you describe; I do not need to know how every line of code works so keep this somewhat minimal.
g. Your video should run no more than ~5-10 minutes. If you exceed this time, I simply will not be able to watch them... resulting in a grade of zero.
2. The 1 team lead, must submit the following components to Brightspace on behalf of the entire group:
i. You may find Vento useful to create this
a. -20% per day for a maximum of 5 days.
Good luck, and remember to enjoy the process!