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 petsThe 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/.envThen 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.devfor development andpets.settings.prodfor 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 thefromemail 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_KEYSOCIAL_AUTH_FACEBOOK_SECRETSOCIAL_AUTH_TWITTER_KEYSOCIAL_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-devYou 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 --devExecute all tests, it will take some minutes.
cd pets
python manage.py testPlease, do not commit changes if any test fails. Ask for help here instead.