# Final Project Specifications Congrats! You've made it through all of the difficult homeworks and now get a chance to show off what you've learned. For the final project you will be put into groups and be assigned a mentor TA to guide you. Please reach out and work with your mentor, to make sure you can get all the requirements ticked off. ## Requirements 1. Backend * Written in Python * Uses Flask * Deployed on a server (e.g. your droplet from homework 3 problem 5) * Must be a production server (not running in dev mode) * e.g. Docker containers and Docker-composer to get things running 2. Frontend * Must have Javascript, CSS, and HTML components * Intuitive to use (doesn't need to be explained, a FAQ/help page may help with this) * Is bound to a URL, not an IP (e.g. "penguin.ab" but not "17.38.192.18") working under port 80 (i.e. NOT "17.38.192.18:5000"). * At least 3 different pages * **BONUS:** https connection, i.e. your server uses a SSL certificate 3. Database * Must use a database (e.g. MongoDB or PostgreSQL) * (Flask) Server should be able to be taken down and put back up without losing any important data 4. README * Document in the root of your Github repository (i.e. README.md) * Instructions for how to deploy the server * Documentation of the structure of your files 5. Github * Must use the feature-branch development method * must have complete project + instructions be stored in a github repo * no passwords, log files, temp files etc. stored - only code and configuration. * Tag your submisssion, e.g. with v1.0 ## Presentation We expect a 15min presentation from each group (+ 5-10min for questions), where you present your project. Key questions to answer in your presentation: 1. What is your project about? What can users do? * Advertise your URL, so others can try it out! 3. Which technology did you use? I.e. which database, any other libraries/tools we didn't talk about in lecture? 4. What is the general architecture/layout of your application? 5. What were some challenges, how did you solve them? 6. How did you deploy your project? You may use slides if you wish. ## Handing In Please have one of your group members send us the following items (on Gradescope): * your github repository. * a tag which is the one deployed on the web * URL of your deployed website We'll use the tag you send us (must be before presentations start) to evaluate, in case there you didn't tag your release we'll account for that and be using the last commit before the presentation.