Pets is a website where people can publish lost pets and pets available for adoption.
Users can create an account with a username and password, or they can use their Twitter and Facebook to login. You can also extend it to use other providers as it's backed by python-social-auth.
Images uploaded by users are cropped with easy-thumbnails to improve the site performance.
- Python 3.6 or newer
- PostgreSQL running with a database, username and password to be used with Pets.
First fork the project using GitHub, than clone it locally:
git clone https://github.com/<username>/pets.git
cd pets
The project configuration uses python-decouple to dynamically read environment variables and .env
files.
If you want, you can get started by copying contrib/sample-env
as .env
:
cp contrib/sample-env pets/.env
Then you have to set following variables:
SECRET_KEY
: Django's secret keyALLOWED_HOSTS
(e.g.127.0.0.1, .localhost
) Django's allowed hostsDJANGO_SETTINGS_MODULE
: In order to make development and deploy to production simpler there's two settings module;pets.settings.dev
for development andpets.settings.prod
for production.
DATABASE_URL
: (e.g.postgres://username:password@server:port/database_name
) Database URLDB_CONN_MAX_AGE
: (e.g.0
) Django's databaseCONN_MAX_AGE
SENDGRID_API_KEY
: API key of you SendGrid account.DEFAULT_FROM_EMAIL
: The email address that will be used as thefrom
email field.
If you want to login via social media, you will have to create apps as a developer at Facebook and/or Twitter. Once you're done, set the app secret and app key for each of them:
SOCIAL_AUTH_FACEBOOK_KEY
SOCIAL_AUTH_FACEBOOK_SECRET
SOCIAL_AUTH_TWITTER_KEY
SOCIAL_AUTH_TWITTER_SECRET
As Pets uses Pillow, some extra packages are needed. In a Debian based Linux this should do the job:
sudo apt-get install python-dev python3.x-dev libjpeg8-dev
You just need to download and unzip the latest ChromeDriver and place it somewhere in your search path.
You can install the required packages with pipenv.
pipenv install --dev
Execute all tests, it will take some minutes.
cd pets
python manage.py test
Please, do not commit changes if any test fails. Ask for help here instead.