Skip to content

maamounhajnajeeb/ToDo-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

To-Do RestAPI

It's an API to schedule your tasks throughout your life.

Motivation

As a Developer who wakes up at 5 A.M. every morning and has tons of tasks needed to be done, you really need a tool that simplifies scheduling daily, weekly and monthly goals, and that's what I did. A simple To-Do RestAPI Django app with robust features.

Cloning this project

Initially, you need python 3.10 or higher installed on your local machine, then:

  • Open a folder and build virtual environment within it via these commands:
  1. virtualenv .venv
  2. .venv\scripts\activate for windows
    (if you user mac or linux, do this instead: source .venv/bin/activate)
  • Next, clone the repo:
    git clone https://github.com/maamounhajnajeeb/ToDo-App.git
  • Now it's dependencies' time:
    pip install -r requirements.txt
    here you have to wait for some time until the dependencies installed suucessfully
    actually the dependencies aren't that much (you can check them form requirements.txt file)
  • Write the desired environment variables. Actually, you need to add: SECRET_KEY, ALLOWED_HOSTS and Database Configuaration
  • After that, write Django magic commands:
    python manage.py migrate
    python manage.py runserver
    Note: there's gunicorn dependecy in the requirements, but it's for production not development.

Website & docs

  • Check Backend API docs from here:
  • Web app:
  • Mobile app:
  • Mobile app source code:

Project Features

The project has two apps: Users app which is responsible for authentication, and Todo app which is responsible for scheduling user tasks and other CRUD operations.

API hierarchy:
Users App APIs:
|- /api/v1/users/sign_up/
|- /api/v1/users/sign_in/
|- /api/v1/users/refresh_token/
|- /api/v1/users/<int:user_id>/ (for read, update and delete operations)
|- /api/v1/users/validate_current_password/
|- /api/v1/users/new_password/

ToDo App APIs:
|- /api/v1/todo/ (to create task)
|- /api/v1/todo/<int:task_id>/ (for task read, update and delete operations)
|- /api/v1/todo/bulk_delete/
|- /api/v1/todo/user_tasks/
|- /api/v1/todo/search/<str:search_term>/ (for searching in the user's tasks via task title)
|- /api/v1/todo/user_tasks/<int:year>/<int:month>/<int:day>/ (users tasks on specified date)

Tools used to deploy

I use Docker to aggregate project requirements in one image, and build the container on the production. To be honset, Docker eases a lot of production steps
I use Supabase to get external PostgreSQL Database, the actual Django application hosted on Render
Mobile application built with Flutter and deployed on Google Play
Web application built with HTML, CSS, JavaScript and hosted on GitHub Pages.

LICENSE

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published