{"id":20345778,"url":"https://github.com/izzypt/no_shortcuts_django","last_synced_at":"2026-06-05T12:31:22.972Z","repository":{"id":208674987,"uuid":"722214058","full_name":"izzypt/No_Shortcuts_Django","owner":"izzypt","description":"Build a functional API with Docker, Celery, Redis, Flower, Nginx, Nginx Proxy manager, Portainer and more...","archived":false,"fork":false,"pushed_at":"2023-12-04T21:00:56.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T21:45:45.369Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/izzypt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-11-22T17:18:45.000Z","updated_at":"2023-11-22T18:13:33.000Z","dependencies_parsed_at":"2023-11-22T18:31:25.411Z","dependency_job_id":"9b0c7562-f989-47b9-94a6-e8a55a2a0549","html_url":"https://github.com/izzypt/No_Shortcuts_Django","commit_stats":null,"previous_names":["izzypt/no-shortcuts-to-django-restful-apis-with-docker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izzypt%2FNo_Shortcuts_Django","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izzypt%2FNo_Shortcuts_Django/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izzypt%2FNo_Shortcuts_Django/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izzypt%2FNo_Shortcuts_Django/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/izzypt","download_url":"https://codeload.github.com/izzypt/No_Shortcuts_Django/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241876606,"owners_count":20035396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T22:09:45.562Z","updated_at":"2026-06-05T12:31:22.965Z","avatar_url":"https://github.com/izzypt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# No_ShortCuts_Django\n\n### What we are going to build\n\nWe are going to make a clone of medium (https://medium.com/flutter/whats-new-in-flutter-3-16-dba6cb1015d1), but just the API (exclude frontend/UI stuff).\n\nAuth related functionality like :\n- register\n- login\n- logout\n- password\n- reset\n- verify user\n- get acess\n- refresh tokens\n\nArticle functionality:\n\n- Search using elasticsearch\n- Followers\n- Article Date and read time\n- Likes\n- Responses\n\n### Some of the concepts touched upon on this repo :\n\n![image](https://github.com/izzypt/No-Shortcuts-to-Django-RESTful-APIs-with-Docker/assets/73948790/c954ee89-c3f5-42bb-9c1b-99a5872ab201)\n\n\n![image](https://github.com/izzypt/No_Shortcuts_Django/assets/73948790/a6620e49-2f1e-42a0-a839-adfcd2fc75aa)\n\n\n### Mailhog and Mailgun\n- In development and testing purposes , I'am going to use mailhog, which is a web and API based SMTP testing tool (https://github.com/mailhog/MailHog)\n- (Mailhog should not be used in production purposes, only development... on production we are going to use ***MailGun***, which is an email delivery service.)\n\n### Docker\n- For all our services in development and production , I'am going to be using ***Docker*** (To manage the containers on development environment we will use ***Docker Desktop*** and ***Portainer*** on production environment).\n\n### Nginx\n- In development and also in production , I'am going to be using Nginx as our web server and reverse proxy.\n- In production we are going to be using an open source tool called Nginx proxy manager which will give us a nice GUI and help us to easily set up SSL certificates.\n\n### Celery and Redis\n- To make Django behave asyncronously we can use:\n  - A package called ***django-channels*** .\n  - Or , we can use ***celery*** in combination with ***Redis*** or ***RabbitMQ***.\n\n### JWT\n - For authentication we are going to use ***JWT***(JSON web tokens)\n\n### pytest\n- For testing, a library that help us write test for Django, Flask, Fast API....\n\n### Project setup steps\n\n- Create a working dir and virtual env\n- Install packages\n- Django settings\n- Django apps\n\n### Logging in Django\n\nKey components are:\n\n- Log levels\n  - **Describes the severity of the mesage**:\n    - Error -\u003e Major Problem occured\n    - Warning -\u003e Minor Problem occured\n    - Info -\u003e General system information\n    - Debug -\u003e Low level system information\n    - Critical - Critical Problem\n- Handlers\n  - **Responsible for dispatching log message to the appropriate destination**:\n    - Console\n    - Files\n    - e-Mail\n- Formatters\n  - Define the format of the log.\n  - Logs are in a log record format and need to be converted before being sent.\n- Filters\n  - **Filter log messages based on some criteria**:\n    - log levels for example\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizzypt%2Fno_shortcuts_django","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fizzypt%2Fno_shortcuts_django","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizzypt%2Fno_shortcuts_django/lists"}