Overview
In this project, (i) first, you specify what you want to implement (e.g., a car rental platform, a room sharing platform, etc.), (ii) then you design the details of your application (e.g., the software web-page mock-ups, project task allocation among team members) and (iii) finally you specify an architecture for your project, plan your tests, and implement it ensuring it will scale and will be secure. Submit Phase (i) and (ii) as part 1 and Phase (iii) as Part 2. Submit a complete project report with Part 2.
Although there is no specific project topic here, you have to deliver a list of common features no matter what topic you choose. We provide two sample projects in the appendix. These are provided to inspire you. That is, you will not receive the creativity mark, if you choose any one of these two projects. Also, these projects are sample only, use your imagination to create an application that users can easily use.
Specification
Your application should be built using NodeJS or any framework depended on NodeJS as backend programming language and you should try to host on any hosting server of your choice (e.g., Heroku provides free hosting). Follow this tutorial to get yourself familiar with Heroku.
Your project must include the following features:
- Profiling: You must design and implement a set of features representing user profiles. Using the profiling features, users can update their personal information, and can see the profile of other users.
- User Authentication and Authorization: Your system must authenticate users based on passwords. Your application also needs to support at least one 3rd party authentication such as Google/Facebook/Github sign-in, or two-factor authentication. Users have different roles in your system, and you must authorize them when they are conducting certain tasks. For instance, a normal user cannot change the password of other users, or update someone else’s personal information.
- Social Network: In any sharing economy platform, we will have a social network. In AirBNB, hosts and guests form a social network; In Uber, drivers and passengers form a social network. In such networks, users can interact with one another: can review each other, provide references, and other users make decision based on those reviews and interactions.
- Rating and Commenting: When users use a shared resource provided by another user, they must be able to rate and comment on that offering. Using this commenting and rating features, others can decide whether to use that resource or not. For example, on AirBNB, a guest can review the host and the place. Others will read reviews and decide whether to rent that place or not.
- Search and Recommendation System: Y our system should provide the basic functionalities to search the shared economy. Using this feature, users should be able to search and discover what they want to use. It is really important that you use a smart recommendation system that ranks the matching entries according to user’s query and personal data. Moreover, using the same recommendation system, the system should show similar things when a user is browsing a certain item. For instance, when one is looking at a room on AirBNB, the system lists similar properties on the same page.
- Admin: You should provide basic admin functionalities, including but not limited to changing passwords, updating and deleting information, and initializing/repopulating the database.
- Note that you will get up to extra 10 points for any significant additional features.
All feature functionality should have proper test cases with good comments in code.
You should take care of at least two well known security vulnerability, using a framework is fine. In your project report, you should document how this requirement is meet.
Once you have finished the first version of your project, measure the performance. Apply performance improvement techniques and show how much performance you have improved.