👬 CampusBuddy đź‘
Abstract
CampusBuddy is similar to having a buddy in university!
CampusBuddy revolutionizes the university experience in many ways. Whether you’re seeking a study partner, a lunch buddy, or support with a difficult assignment, CampusBuddy links you with other students who are willing to help. With a focus on availability, scalability, and extensibility, CampusBuddy ensures uninterrupted connectivity and support, fostering a culture of collaboration within the university community.
Author
Name: Thi Thuy Tien Nguyen
Student number: 48338433
Functionality
- User Sign Up and Verification
- Sign up using different methods like username and password or sign in with Google.
- Verification with student ID card upon sign-up.
- Task Posting
- Users can post tasks, providing detailed descriptions, start time, duration, and category. Task posters can edit their posts after submission.
- Optional compensation, like small monetary rewards or drinks, encourages active participation and adds excitement to the experience.
- Task Searching
- Users can search and sort for tasks by description, duration, category, task posters’ rating, etc.
- Task Matching
- Users can view task details and apply for tasks.
- Task posters can review applications and assign tasks to applicants.
- Upon completion, both task posters and helpers gain extra credit scores.
- Rating and Review
- A robust rating and review system enables feedback from helpers and task posters, ensuring accountability and maintaining assistance quality.
- User Profile and Task History
- Users can view others’ information, credit scores, ratings, feedback, completion rates, and task history.
- Users can edit their profiles and images.
- Messaging
- Task posters and helpers can message each other right inside the app.
- Social Space
- A space for users to share their thoughts, images, and videos about their experiences, with active participation rewarded with credit scores.
- Subscription
- Users can subscribe to and receive notifications for tasks that meet certain criteria.
- Notification
- Users receive email notifications for various events such as new applicants, application status updates, new messages, etc.
- Notification settings can be turned off as desired.
Scope
The Minimum Viable Product (MVP) of CampusBuddy will include the following fundamental functionalities:
- Sign up and sign in with username and password.
- User verification via student ID cards.
- Posting and modifying tasks.
- Searching and applying for tasks.
- Viewing list of applicants and assigning tasks.
- Updating task status, giving ratings and feedback.
- Viewing user profile and task history.
- Basic notifications.
Quality Attributes
Availability
Availability refers to the system’s capability to be accessed by users. If the system goes down, users can’t do what they need to, which can be frustrating. There are several methods to make sure the system stays available, such as having backups (redundancy) and adding observability (monitoring and alerts).
In the university environment, situations can arise unexpectedly, requiring immediate help. Whether it’s a last-minute project deadline or an urgent errand, high availability ensures that CampusBuddy is operational 24/7, allowing students to access its features and seek assistance at any time, day or night.
Scalability
The ability of a system to accommodate different volumes of user activity is referred to as scalability. Systems lacking scalability may encounter performance bottlenecks under high load. Several design techniques, such as load balancing and horizontal scaling, can be used to ensure scalability.
User activity on the platform varies a lot during busy times like exams or assignment deadline weeks. CampusBuddy needs to effectively scale its infrastructure to accommodate growing loads. During off-peak times like weekends and summer or semester breaks, the system should scale down to save resources.
Extensibility
Extensibility is the capacity of the system to accommodate new feature additions. Developers should be able to include new features without having to completely redesign the architecture. Extensibility can be improved by utilizing several methods, including dependency injection, modular, and abstract design.
After delivering MVP, many additional features are planned for integration. Some are extensions of existing functionalities (“Sign in with Google”). Some are completely new (messaging). As user requirements evolve, CampusBuddy must be able to incorporate new features to meet user expectations.
Security
Security refers to the system’s capability to function securely even under attacks. Systems with weak security could be exploited easily, resulting in disruption of service or loss of users’ data. Security can be improved by implementing user authentication, data encryption, access control, etc.
It is very important for CampusBuddy to maintain high security. Users’ data like student ID, student card image, student profile image, and messages should be kept confidential. A solid security system would help CampusBuddy to protect users from several risks such as unauthorized access, data breaches, and identity theft.
Evaluation
Availability
- Calculate the uptime percentage monthly and yearly under various loads. The target threshold is 99.9%.
- Observe system performance when some components are taken down.
- Services with redundancy should operate normally.
- Impacts should be isolated to components that are taken down only.
- If there is downtime, recovery time should be within 10 minutes for minor incidents and 1 hour for major incidents.
Scalability
- Observer system performance under load testing with 10,000 concurrent users. Response time should remain below 500 ms.
- If possible, perform stress testing with an even higher number of concurrent users and measure to maximum throughput the system can handle then compare the result with industry standards.
- Observer system scaling behavior with increasing and decreasing load. The server should scale up to the maximum allowed instances with high load and down to the minimum instances with low load.
Extensibility
- Evaluate if components are loosely coupled and independent. Each component should be developed, tested, and deployed independently without impacting others.
- Assess if services expose well-defined APIs with a high level of abstraction and clear documentation to facilitate integration and extension.
- Measure how straightforward it is to develop and integrate new features without disrupting existing functionalities. The impact on existing functionalities should be trivial.
- Evaluate if new features can be added without adding significant modifications to the existing architecture.
Security
- Frequently conduct comprehensive security audits to identify weak links in the system. Verify that the system meets the standard compliances and regulations.
- Automated vulnerability scanning tools like Prisma, and Wiz can be used to identify known vulnerabilities like outdated software, vulnerable dependencies, etc.. The focus is on continuously fixing and reducing vulnerabilities detected in the system.