Implemented a checklist manager webapp by utilizing the Django REST framework to help users create, search, upvote and bookmark checklists, connect with other users and share lists on social media. The webapp is hosted on Heroku and uses AWS S3 for file storage and AWS Lambda to reduce profile image size upon upload. The project started with the idea to create a checkli.com style web app.
Heroku Website: https://django-checklist.herokuapp.com/
This project wouldn't have been possible without reference from the Django Tutorials playlist by Corey Schafer on YouTube.
- Email as well as social media based authorization along with password reset functionality
- Perform CRUD operations on own checklists
- View other users' checklists with no of upvotes
- Upvote/Bookmark checklists by other users and view them
- Search checklists by title and description
- Share checklists on social media such as Facebook, LinkedIn, Reddit, Twitter
- Save draft checklists and come back anytime to edit and publish them
- Follow other users and be notified when they publish a new checklist
- Save and edit others' published checklists to make them your own!
- Assign topics to checklists and view checklists by topics
- Notifications functionality - when a user follows you, checklist upvoted
- Follow a checklist and notify a user if a change is made by the author
- Recommendations for checklists displayed below each list
- Automatically infer category from checklist title and description
Note: The web-app is already hosted on Heroku for use by anyone so these steps are only required if you are cloning the project on local.
- Clone the project and navigate into the project directory.
- Create a new virtual environment with:
python3 -m venv <path_to_new_env>
- Activate the newly created virtualenv as:
source <path_to_new_env>/bin/activate
- If your operating system is
MacOS
, jump to step 8. If your OS isUbuntu
, proceed to the next step. The steps 5-7 have been tested forUbuntu Focal 20.04.2 LTS
andPython 3.8.5
. - Install
psycopg2-binary
package with:pip install psycopg2-binary==2.8.6
- Run command:
sudo apt install libpq-dev python3-dev
- Run command:
sudo apt install build-essential
- Run command:
pip install -r requirements.txt
- Set environment variables such as
SECRET_KEY, DEBUG_VALUE, etc.
in the bash profile file. - To create database tables based on the migrations, run:
python manage.py migrate
- To load categories data into the categories table in database, run the command:
chmod +x load_categories.sh && ./load_categories.sh
- To run the webapp on your local machine, execute the command:
python manage.py runserver