Project Resources
Table of Contents
Git Resources
Web Design Resources
- Web Content Accessibility Guidelines (WCAG) 2021 Quick Reference: https://www.w3.org/WAI/WCAG21/quickref/
- Four basic principles: Perceivable, Operable, Understandable, Robust
- Semantic & Accessible HTML on MDN: https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML
- Accessible Rich Internet Applications (ARIA) Reference on MDN: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA Use ARIA only in cases that aren’t covered by HTML 5 semantic tags. In particular, check out the tutorials section, where they demonstrate how a screen reader parses web pages.
- ANDI Free Accessibility Testing Tool: https://www.ssa.gov/accessibility/andi/help/install.html Do NOT use this as a one-stop shop to test for accessibility. In the end, you are responsible for ensuring compliance with accessibility standards. This tool only tests compliance with Section 508, a set of standards developed for federally-funded site accessibility. It does not necessarily imply compliance with WCAG or accessibility as a general concept.
- WebAIM Contrast Checker Tool: https://webaim.org/resources/contrastchecker/ This tool is great because it tells you whether you are passing WCAG contrast guidelines!
- Great Slideshow on Usability by UVA’s own Professor Praphamontripong: http://www.cs.virginia.edu/~up3f/cs4640/slides/4640meet03A-UsabilityPrinciples.pdf
- Here’s a helpful infographic! For larger version, visit https://webaim.org/resources/designers/
Django Resources
- Creating python virtual env
- Tutorial on the basics of Django (YouTube Series)
- Django generic editing views
- Serving static images for your project
Heroku Resources
- Deploying Django project to Heroku
- Deploying Python / Django apps on Heroku
- Making Heroku automatically always do migrations whenever a new build is made - This fixes the “missing relation” problem on Heroku.
- How to setup config variables so you don’t have to store secret keys/API keys in GitHub
- Setting up WhiteNoise to handle static files
Deploying to Heroku
- Create an account on Heroku at https://signup.heroku.com using the SAME email address / account that you used for GitHub and the GitHub Student Pack. Follow the instructions at https://www.heroku.com/github-students to make sure that your Heroku benefits are applied properly.
- Next, ensure Heroku has access to your GitHub repos by linking your GitHub account in the Heroku settings. Follow the instructions at https://devcenter.heroku.com/articles/django-app-configuration to learn how to make your project work on Heroku. You can look at the https://github.com/uva-cs3240-f21/Staff-Build-Example repo for some examples of how to set up some of the configuration files. There is also some info in the README file at the repo on steps for deploying. There are several ways to do this and if you find another way online, that’s fine.
- Once you think your project is ready, you can login at https://dashboard.heroku.com/apps and create a new app. Under the Deploy tab, you can connect the GitHub repo for the project. This is why you have to get the project root setup correctly in Step 1! Once you connect the repo, you can scroll down to “Deploy Branch” on that same page and Heroku will clone your project and put it online! The link can be found in the Settings tab if you can’t find it otherwise.
Avoiding the macOS / psycopg2 error
Use this code at the bottom of your settings.py
file to try/catch the import of django-heroku so it only has to work when deployed to heroku and not locally:
# Activate Django-Heroku.
# Use this code to avoid the psycopg2 / django-heroku error!
# Do NOT import django-heroku above!
try:
if 'HEROKU' in os.environ:
import django_heroku
django_heroku.settings(locals())
except ImportError:
found = False
Another option that has worked for Sherriff (M2 MacBook Pro) if you have homebrew installed:
brew install openssl
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
pip install psycopg2-binary
(Ask Sherriff if you have questions about the above terminal commands.)