Open ncumbo opened 4 years ago
Functionalities:
Things we need to do:
[Nick] Live sharing of multimedia content between users steps:
Create a template of what a content box looks like✓
Create upload button for content✓
Let content be postable on server✓
Be able to download content (kinda)✓
Must appear on screen without requiring a refresh (WebSockets (Recommended) or Long-Polling)
Store each submitted content on database by username✓
Protect against HTML/JS Injection attack
Protect against SQL Injection attack (Use prepared statements) ✓
Set up Docker-Compose
Task:
Steps for everyone: Django Overview & Tutorial https://www.tutorialspoint.com/django/django_environment.htm
How to Create Database?
How to Run Server on Django?
Creating a Post - via shell prompt
Functionality:
The primary programming task for this phase is to build all the functionality of your app that you can build without implementing user accounts (Adding user accounts is phase 3). As you design your app, it is highly recommended that you consider how user accounts will be added later. Do not design your app in a way that is not compatible with user accounts since this will create much more work for your team during phase 3.
For each of the [3 of the] 5 project criteria, you must have the following by the end of phase 2.
Your entire app should operate under the assumption that there is only a single user. You don’t need any authentication and anyone visiting the page can use every feature Note: It is fine if you do add some sort of user accounts to get ahead for phase 3. For example, allow users to enter a username without authenticating them and have your backend treat them as separate users
Content can be uploaded, saved on the server, and downloaded. The content must persist through a server restart When a user uploads content it must efficiently appear on other open tabs/windows without requiring a refresh. This must be done with either WebSockets (Recommended) or Long-Polling. Use of Polling will result in lost points You must store some record of each submission in your database. It is recommended to store any meta-information you need (content id, etc) along with the filename where the content is stored on disk. You do not have to store the content itself in your database
Voting and commenting features must be fully functional When a user votes/comments it must efficiently appear on other open tabs/windows without requiring a refresh. This must be done with either WebSockets (Recommended) or Long-Polling. Use of Polling will result in lost points Votes and comments must be stored in your database and persist after a server restart
Not required for phase 2
Not required for phase 2
Security: We will explicitly check for the following during grading:
Note: For phase 3 this list will be much longer since you will be handling user data including their passwords.
Docker-Compose: Your app must be setup to deploy with docker-compose. In the root directory of your repository include a docker-compose.yml file with everything needed to run your app using docker-compose. At a minimum this must include creating a container for your database and another container for your app that will communicate with the database container.
You may choose the local port for your app
When testing or deploying your app the procedure will be:
Video: Create a video demo of all the functionality of your site. This video has the same requirements as the video for phase 1, though be mindful that you are showing a more complex piece of software and you may need more explanation to accurately demo your app (Ex. If you didn’t have voice over for phase 1 you may want to add it for phase 2)..
Submission: Fill out this form (You only need 1 submission per team) with the url for your YouTube video.