Web Application: finishing it up
Folder: webapp
Tag: final
Goals
- Finish a cool web application
- Feel proud of it
- Think one more time about code quality, usability, and the needs of the people using your software
- Learn a bunch more random stuff
Your tasks
- Complete your project and test it thoroughly.
- Update your /api/help route to give me updated API documentation.
- Include a file webapp/readme.txt, structured like so:
AUTHORS: [your names] DATA: [a one-sentence description of your data] [copyright info, plus a description of how I could get your raw data myself, including relevant links] STATUS: [a concise description of what works, what's not working yet, and any other information that might help me test and evaluate your work] NOTES: [(Optional) anything else you'd like to add]This will overwrite your old readme.txt. That's good.
If your database structure or content has changed since the last due data, re-dump your database into webapp/data.sql:
pg_dump --no-owner --no-privileges -U YOURUSERNAME YOURDATABASE > data.sqlThis will overwrite your previous data.sql from the end-to-end or webapp-draft assignments. That's just fine. If I ever wanted to run the earlier versions, I could just do something like "git checkout end-to-end".NOTE: If your data.sql file is larger than 25MB, then don't add it to your repository. Instead, DM it to me via Slack.
- A FAVOR FOR ME: as soon as you push your completed project, please send me a Slack DM letting me know. I'd love to start grading as early as possible, and would be grateful for your help. Thanks.
How I will test and grade the final product
- cd YOUR-REPO/webapp
- git pull
- Read readme.txt
- psql -U jondich webapp < data.sql
- Create (or edit, if you have one in your repo, which you shouldn't) config.py to correspond to my user name and my "webapp" database name
- python3 app.py 127.0.0.1 5000
- Go to http://127.0.0.1:5000/api/help to see your endpoint documentation
- Go to http://127.0.0.1:5000/ to see your home page
- Test everything in a browser, taking notes on usability and correctness
- Read through your app.py, api.py, *.js, *.html, and *.css files, and your database design, taking notes on code organization and quality
- Write down my main observations, and assign a grade based on this rubric:
Score - (Weight) Category ======================== V/4 - (2) Correctness W/4 - (1) Feature Scope X/4 - (2) User Experience Y/4 - (4) Code Construction Z/4 - (1) Documentation score (40 possible) = V*2 + W*1 + X*2 + Y*4 + Z*1
Keep in mind a few things about this evaluation plan.
- The rubric is weighted to reflect the emphasis of this course as a whole: high quality code and the needs of the user are the focus, without ignoring the fact that functioning code ("correctness") is essential, too.
- I've included a lightly-weighted "Feature Scope" to give myself a way to reward ambitious work, without making fancy features a dominant part of the rubric. The idea here is that a very simple project with excellent code and excellent usability should be able to earn an A, but that extra awesomeness also deserves a small boost in score.
- Note that it is very important that your project run properly with just "python3 app.py 127.0.0.1 5000". You can test this by cloning a fresh copy of your own repository, creating your own "webapp" database ("CREATE DATABASE webapp" in psql), and following the steps listed above.
- Follow the specs carefully. For example, if I tell you to create a readme.txt file, for example, don't call it README or README.txt or readme.md or readme.docx.
- Don't forget Mr. Krug's wisdom: don't make me think!
- Think positively, and have fun! When I see a fun and interesting web application, it's a real pleasure for me, and that is part of the subjective category of "user experience". I have loved working with all of you, and seeing the cool stuff you're creating is one of the great benefits of my job.
Thanks for a great term, and have fun!