Skip to content

tyronejosee/project_drop_dash_api

Repository files navigation

Project: Drop Dash (API)

logo-light logo-dark

This API simulates a home delivery platform that allows users to search for and purchase products from local restaurants near their homes, place orders, and schedule deliveries. Similarly, restaurants can manage their menus, receive orders, and handle their meals through the platform. The API is inspired by platforms like Rappi, Uber Eats, PedidosYa, and Glovo.

Swagger UI / Redoc

python-version django-version django-version docker-version

⚙️ Installation

Clone the repository.

git clone git@github.com:tyronejosee/project_drop_dash_api.git

Create a virtual environment (Optional).

python -m venv env

Activate the virtual environment (Optional).

env\Scripts\activate

Install all dependencies.

pip install -r requirements/local.txt

Create an environment variable file .env.

SECRET_KEY=""
EMAIL_BACKEND=""
EMAIL_HOST=""
EMAIL_HOST_USER=""
EMAIL_HOST_PASSWORD=""
EMAIL_PORT=""
EMAIL_USE_TLS=""

Docker run.

(env) docker compose -f docker-compose.dev.yml up
(env) docker compose -f docker-compose.dev.yml up --build
(env) docker compose -f docker-compose.dev.yml stop
(env) docker compose -f docker-compose.dev.yml logs -f
(env) docker compose -f docker-compose.dev.yml start
(env) docker compose -f docker-compose.dev.yml restart <service>

Perform database migrations.

(env) docker compose -f docker-compose.dev.yml exec web bash
(env) docker compose -f docker-compose.dev.yml exec web python manage.py makemigrations*
(env) docker compose -f docker-compose.dev.yml exec web python manage.py migrate
(env) docker compose -f docker-compose.dev.yml exec web python manage.py migrate <app_label> <migration_name>
(env) docker compose -f docker-compose.dev.yml exec web python manage.py showmigrations

Note: Create the migrations in case Django skips any.

🚀 Usage

Create a superuser to access the entire site without restrictions.

(env) docker compose -f docker-compose.dev.yml exec web python manage.py createsuperuser

Log in to admin:

http://127.0.0.1:8000/admin/

Access to Swagger o Redoc.

http://127.0.0.1:8000/api/schema/swagger/
http://127.0.0.1:8000/api/schema/redoc/

🚨 Important Notes

Check the creation of migrations before creating them.

(env) docker compose -f docker-compose.dev.yml exec web bash
(env) docker compose -f docker-compose.dev.yml exec web python manage.py makemigrations users
(env) docker compose -f docker-compose.dev.yml exec web python manage.py makemigrations
(env) docker compose -f docker-compose.dev.yml exec web python manage.py migrate

Note: Checking migrations before their creation is necessary to avoid inconsistencies in user models.

💾 PostgreSQL

(env) docker compose -f docker-compose.dev.yml exec web python manage.py dumpdata > backup.json
(env) docker compose -f docker-compose.dev.yml exec web python manage.py loaddata
(env) docker compose -f docker-compose.dev.yml exec db psql -U postgres -d fandomhub_db
(dropdash_db=#) \dt
(dropdash_db=#) \d <table>

💾 Redis

(env) docker compose exec redis redis-cli
(127.0.0.1:6379) keys *

⚖️ License

This project is under the Apache-2.0 license.