1. Homepage
  2. Programming
  3. COMP3095 Web Application Development Using Java - Assignment 1: Room Booking and Event Management System

COMP3095 Web Application Development Using Java - Assignment 1: Room Booking and Event Management System

Engage in a Conversation
George Brown CollegeCOMP3095Web Application Development Using JavaJavaRoom Booking and Event Management SystemPostgreSQLMongoDB

Room Booking and Event Management System CourseNana.COM

Team Size: 3 - Team Members (mandatory)
Project Name: GBC_EventBooking-<Group Name> CourseNana.COM

Objective: CourseNana.COM

The goal of this assignment is to design and implement a microservices-based room booking and event management platform for George Brown College. Your platform should allow students, staff, and faculty to book room resources for events and meetings. The focus will be on microservices creation, database integration using JPA, inter-service communication, containerization with Docker, and integration testing. CourseNana.COM

Instructions and Requirements:
This assignment will cover service development, database integration, inter-service communication, and deployment using Docker. CourseNana.COM

Environment Setup and Basic RESTful Service CourseNana.COM

Objective: CourseNana.COM

Set up your environment and develop the foundational microservices for the platform. Each microservice should be containerized and independently deployable. CourseNana.COM

Design the backbone of your event management platform by developing RESTful services. Learn how to containerize these services, ensuring they're scalable and deployable. CourseNana.COM

Environment Setup: CourseNana.COM

1. Download and install the necessary software specifically: CourseNana.COM

2. Using Spring Initializr, create five microservices: CourseNana.COM

  • RoomService: Manages room resources, such as room availability, capacity, and features. CourseNana.COM

  • BookingService: Handles room booking requests and manages booking information. CourseNana.COM

  • UserService: Manages user profiles for students, staff, and faculty. CourseNana.COM

  • EventService: Manages events linked to room bookings. CourseNana.COM

  • ApprovalService: Allows staff to approve or reject event requests based on college policy. CourseNana.COM

    Each service must be containerized using Docker. CourseNana.COM

Page 1 of 6 CourseNana.COM

Part 2: Data Persistence and Service Functionality CourseNana.COM

Objective: CourseNana.COM

Each microservice should handle its own data using either PostgreSQL or MongoDB. Full CRUD operations should be implemented for managing the core entities in each service. Set up a robust data layer for your platform. CourseNana.COM

Relational Data Modeling: CourseNana.COM

  • Use PostgreSQL / JPA for data storage. CourseNana.COM

  • Manage room resources with attributes like roomName, capacity, features (e.g., projector, whiteboard), and CourseNana.COM

    availability. Of course, the final design is up to each individual group. CourseNana.COM

  • Provide endpoints to check room availability for bookings. CourseNana.COM

    2. BookingService: CourseNana.COM

  • Use MongoDB for data storage. CourseNana.COM

  • Handle room booking requests. Each booking should include userId, roomId, startTime, endTime, and CourseNana.COM

    purpose. Of course, the final design is up to each individual group. CourseNana.COM

  • Prevent double-booking of rooms using appropriate validation logic. CourseNana.COM

    3. UserService: CourseNana.COM

  • Use PostgreSQL / JPA to store user information. CourseNana.COM

  • Manage user profiles for students, staff, and faculty with attributes like name, email, role, and userType CourseNana.COM

    (student, staff, faculty). Of course, the final design is up to each individual group. CourseNana.COM

  • Implement role-based access (e.g., only staff can approve events etc...). CourseNana.COM

    4. EventService: CourseNana.COM

  • Use MongoDB or PostgreSQL to store approval. CourseNana.COM

  • Allow staff to review and approve/reject event requests. Link event approvals to the user role. CourseNana.COM

Page 2 of 6 CourseNana.COM

Part 3: Inter-Service Communication CourseNana.COM

Objective:
Implement synchronous communication between microservices using REST APIs. CourseNana.COM

Booking Confirmation:
1. The BookingService should communicate with RoomService to verify room availability before CourseNana.COM

confirming a booking. CourseNana.COM

User Access:
2. The EventService should communicate with the UserService to verify the role of the event organizer CourseNana.COM

before an event is created (e.g., faculty can organize larger events, while students may have restrictions). CourseNana.COM

Approval Flow:
3. The ApprovalService should communicate with both EventService and UserService to fetch event details CourseNana.COM

and verify if a staff member has the correct privileges to approve events. CourseNana.COM

Part 4: Testing & Containerization CourseNana.COM

Objective:
Write integration tests and ensure the system is fully containerized. CourseNana.COM

1. Integration Testing:
o Write integration tests for each microservice to ensure they behave correctly and communicate as CourseNana.COM

expected.
o Use TestContainers to spin up PostgreSQL, MongoDB containers during testing. CourseNana.COM

2. Containerization:
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. CourseNana.COM

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 that should 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. CourseNana.COM

Page 3 of 6 CourseNana.COM

Deliverables: CourseNana.COM

A private git repository containing all your code, properly documented.
o Please ensure to add your professor as collaborator (ie. Sergio.Santilli@georgebrown.ca) CourseNana.COM

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 CourseNana.COM

solution environment in any other way (not using intellij), so you must make sure your docker compose brings up your entire working environment correctly. CourseNana.COM

  • 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 the demonstration. CourseNana.COM

  • 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. CourseNana.COM

  • A brief report explaining the architecture, challenges faced, and lessons learned. CourseNana.COM

o Include this in a parent folder of your project. CourseNana.COM

Please review the final page (below) for submission guidelines CourseNana.COM

Evaluation Criteria: CourseNana.COM

  • Code Quality: Clear, readable, and maintainable code. CourseNana.COM

  • Functionality: Correct implementation of CRUD operations, communication between services, and room CourseNana.COM

    booking functionality. CourseNana.COM

  • Inter-Service Communication: Reliable and accurate communication between microservices. CourseNana.COM

  • Testing: Comprehensive integration tests with TestContainers. CourseNana.COM

  • Containerization: Proper use of Docker and Docker Compose. CourseNana.COM

  • Documentation: Well-documented code and a clear, concise report. CourseNana.COM

Page 4 of 6 CourseNana.COM

o Please note: If I cannot run your docker compose, you will lose marks CourseNana.COM

Final Word on Implementation CourseNana.COM

This information is detailed enough for you to complete the assignment. However, you’ll need to use your best judgment on how to implement some of the requirement details. To do that, write the code, in such a way that you think is best. CourseNana.COM

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. Im interested to see how your group approaches and solves problems. CourseNana.COM

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. CourseNana.COM

CourseNana.COM

Assignment Submission Guidelines: CourseNana.COM

  1. Video Requirement CourseNana.COM

    1. Create a Short Video presentation. Your presentation should start with an introduction, where it must CourseNana.COM

      display a PowerPoint (or Google Presentation), that is 1 (single) slide. The slide introduces each member of your group, again, at the very start of your video. CourseNana.COM

    2. 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. CourseNana.COM

    3. 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. CourseNana.COM

    4. You and your partner(s) share the responsibility to demonstrate your functioning solution. Please note, the entire objective of the video is to demonstrate the functionality of your solution, this even more so then explaining your code. You will likely need to use Postman to demonstrate your services. When demonstrating your solution, I want to only see your docker compose environment running, that is, the environment that is demonstrated and tested, is running via your completely containerized environment. CourseNana.COM

    5. 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. CourseNana.COM

    6. Sound for your video must at an appropriate level so that your voices may be clearly heard, and your screen resolution should be set so that your program’s code and console details are clearly visible. In short, QA your videos. If your video is poor, assignment failures can/will be assigned. CourseNana.COM

    7. 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. CourseNana.COM

  2. The 1 team lead, must submit the following components to Brightspace on behalf of the entire group: CourseNana.COM

    1. The 1-page status report mandatory CourseNana.COM

    2. The assignment video file - mandatory CourseNana.COM

i. You may find Vento useful to create this
c. The URL to the private GitHub repository (copy and paste the Brightspace as part of the
CourseNana.COM

submission) CourseNana.COM

  1. Be cautious DO NOT share your application with others. Complete failures will be assigned if code is CourseNana.COM

    shared. All assignments will be reviewed and analyzed strictly within these regards. CourseNana.COM

  2. Late assignments are assigned a penalty as described below: CourseNana.COM

a. -20% per day for a maximum of 5 days. Good luck, and remember to enjoy the process! CourseNana.COM

Get in Touch with Our Experts

WeChat (微信) WeChat (微信)
Whatsapp WhatsApp
George Brown College代写,COMP3095代写,Web Application Development Using Java代写,Java代写,Room Booking and Event Management System代写,PostgreSQL代写,MongoDB代写,George Brown College代编,COMP3095代编,Web Application Development Using Java代编,Java代编,Room Booking and Event Management System代编,PostgreSQL代编,MongoDB代编,George Brown College代考,COMP3095代考,Web Application Development Using Java代考,Java代考,Room Booking and Event Management System代考,PostgreSQL代考,MongoDB代考,George Brown Collegehelp,COMP3095help,Web Application Development Using Javahelp,Javahelp,Room Booking and Event Management Systemhelp,PostgreSQLhelp,MongoDBhelp,George Brown College作业代写,COMP3095作业代写,Web Application Development Using Java作业代写,Java作业代写,Room Booking and Event Management System作业代写,PostgreSQL作业代写,MongoDB作业代写,George Brown College编程代写,COMP3095编程代写,Web Application Development Using Java编程代写,Java编程代写,Room Booking and Event Management System编程代写,PostgreSQL编程代写,MongoDB编程代写,George Brown Collegeprogramming help,COMP3095programming help,Web Application Development Using Javaprogramming help,Javaprogramming help,Room Booking and Event Management Systemprogramming help,PostgreSQLprogramming help,MongoDBprogramming help,George Brown Collegeassignment help,COMP3095assignment help,Web Application Development Using Javaassignment help,Javaassignment help,Room Booking and Event Management Systemassignment help,PostgreSQLassignment help,MongoDBassignment help,George Brown Collegesolution,COMP3095solution,Web Application Development Using Javasolution,Javasolution,Room Booking and Event Management Systemsolution,PostgreSQLsolution,MongoDBsolution,