Complex Computing Problem for Web Engineering II
Title: "Design and Develop a Scalable Multi-Tenant Web Platform with Real-Time Features"
Problem Statement:
You are tasked with designing and implementing a multi-tenant web application that serves
multiple distinct organizations or groups while ensuring data segregation, scalability, and
real-time interactions. The application must incorporate advanced web engineering principles
and allow for customization for each tenant's needs.
Scenario:
Imagine you are working for a software development company that has been approached by
various clients to build a shared web platform. The platform should provide core functionalities,
but each tenant (organization/group) should have their own customizable experience. The
platform must support features like user authentication, tenant-specific dashboards, and
real-time communication (e.g., chat or notifications).
You are free to choose the domain of your platform (e.g., project management, online learning,
event management, e-commerce).
Requirements and Constraints:
Core Features:
1. Multi-Tenancy Support:
○ The application should allow multiple organizations to use the same platform
while keeping their data isolated.
○ Tenants should have unique identifiers (e.g., subdomains like
[Link] or paths like [Link]/tenant1).
2. User Authentication:
○ Implement tenant-based user authentication (e.g., only users belonging to a
tenant can log in to their workspace).
○ Support role-based access control (e.g., admin, manager, regular user).
3. Customizable Dashboard:
○ Provide a tenant-specific dashboard where each organization can manage its
operations or data.
○ Allow tenants to add basic customizations, such as themes or layouts.
4. Real-Time Interaction:
○ Integrate real-time features like notifications or a chat system for users within a
tenant.
○ Use WebSockets or a relevant library (e.g., [Link]).
5. Middleware and APIs:
○ Use Express middleware for authentication, request logging, and error handling.
○ Design RESTful APIs for interaction between the client and server.
6. Scalability and Performance:
○ Ensure the application can handle multiple tenants simultaneously without
performance degradation.
○ Use caching techniques or optimize database queries to handle high traffic.
Optional Features (Choose Based on Interest):
● Tenant-specific analytics (e.g., user activity tracking).
● Integration with third-party services (e.g., payment gateways, external APIs).
● Tenant onboarding process (e.g., admin dashboard to add new tenants).
Technical Constraints:
● Use [Link] or [Link] for the backend.
● Incorporate middleware for request/response handling and error management.
● Implement modular routing for tenants.
● Use a database of your choice (e.g., MongoDB, MySQL) to store tenant and user data.
Deliverables:
1. Web Application:
○ Fully functional web platform meeting the core features above.
○ Code must follow modular and reusable patterns.
2. Documentation:
○ A report that includes the system's architecture, key design decisions, and a
description of the middleware and APIs used.
○ Challenges faced and how they were resolved.
3. Demo Video:
○ A short video demonstrating the platform’s features and explaining how
multi-tenancy and middleware were implemented.
Evaluation Criteria:
1. Completeness: Does the project meet the core requirements?
2. Code Quality: Is the code modular, reusable, and well-documented?
3. Scalability: How well does the application handle multiple tenants?
4. Creativity: How innovative or unique is the implementation?
5. Problem-Solving: Are the challenges clearly identified and addressed in the report?