This project is a Blog site written with python3.9 and Django3.2 and Django_rest_framework_3.12 which is for using api.
The purpose of this project was to see how a blog with otp authentication can be implemented using the django-rest-framework.
- Authentication with phone number and Otp code.
- Send otp code to user's phone.
- Two-step verification for authentication.
- Use cache to temporarily store otp code.
- The presence of throttling in authentication.
- Generate tokens using simple-jwt after authentication.
- Production-ready configuration for Static Files, Database Settings, Gunicorn, Ngnix, Docker.
- Easy installation.
- Ability to comment on blogs.
- Ability advanced filter of articles.
- Use the PostgreSQL database to store data.
- Existence of logger for debugging.
- Automated execution of unit tests with GitHub Actions.
- Python 3.9 , Programming Language.
- Django 3.2 , Web Framework.
- Django Rest Framework 3.12 , Web API's.
- JWT, JSON Web Tokens.
- Nginx , Web Server.
- Docker , Container Platform.
- PostgreSQL , Database.
- Gunicorn , WSGI HTTP Server.
- Git , VCS(Version Control System).
- GitHub Actions , CI/CD.
install Docker
To run this project, you must install Docker.
and also install docker-compose.
Clone the project
git clone https://github.com/amirpsd/drf_blog_api.git && cd drf_blog_api
Please enter the required information in the .env and .env.db files before running the project.
Run project
create docker network
docker network create nginx_network
docker network create blog_network
create docker volume
docker volume create db_data
run project
docker-compose up -d
You currently have 3 containers running:
- web
- nginx
- db
Now create a super user with a web container to access the Django admin panel.
docker exec -it web python3 manage.py createsuperuser
After creating a super user, go to http://127.0.0.1:80/account/api/login/.
And after authentication, create the super user two-step password. http://127.0.0.1:80/account/api/create-two-step-password/
Finally, go to the admin panel. http://127.0.0.1:80/admin/
You can see the endpoints.yaml file to see the exact details of the endpoints.
or you can go to http://127.0.0.1:80/api/schema/swagger-ui/ or http://127.0.0.1:80/api/schema/redoc/ to see the endpoints after running the project.
see the LICENSE file for details.