DogeAPI
API with high performance built with FastAPI & SQLAlchemy, help to improve connection with your Backend Side to create a simple blog and Cruds with OAuth2PasswordBearer
Getting Started
Prerequisites
- Python 3.8.6 or higher
- FastAPI
- Docker
Project setup
# clone the repo
$ git clone https://github.com/yezz123/DogeAPI
# move to the project folder
$ cd DogeAPI
Creating virtual environment
- Create a virtual environment using virtualenv.
# creating virtual environment
$ virtualenv venv
# activate virtual environment
$ source venv/bin/activate
# install all dependencies
$ pip install -r requirements.txt
Running the Application
- To run the Main we need to use uvicorn a lightning-fast ASGI server implementation, using uvloop and httptools.
# Running the application using uvicorn
$ uvicorn main:app --reload
Environment variables
SECRET_KEY
: A secret key for signing Json Web Token.SQLALCHEMY_DATABASE_URL
: The database url to connect to the database.ACCESS_TOKEN_EXPIRE_MINUTES
: The access token expire minutes.
change all the environment variables in the
.env.sample
and don't forget to rename it to.env
.
Configured Enviromment
Models
- Here for the Models.py, i create 2 tables based on the requirements for this project
blogs
andusers
Running the Docker Container
- We have the Dockerfile created in above section. Now, we will use the Dockerfile to create the image of the FastAPI app and then start the FastAPI app container.
- Using a preconfigured
Makefile
tor run the Docker Compose:
# Pull the latest image
$ make pull
# Build the image
$ make build
# Run the container
$ make start
Preconfigured Packages
Includes preconfigured packages to kick start DogeAPI by just setting appropriate configuration.
Package | Usage |
---|---|
uvicorn | a lightning-fast ASGI server implementation, using uvloop and httptools. |
Python-Jose | a JavaScript Object Signing and Encryption implementation in Python. |
SQLAlchemy | is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL. |
starlette | a lightweight ASGI framework/toolkit, which is ideal for building high performance asyncio services. |
passlib | a password hashing library for Python 2 & 3, which provides cross-platform implementations of over 30 password hashing algorithms |
bcrypt | Good password hashing for your software and your servers. |
python-multipart | streaming multipart parser for Python. |
yapf
packages for linting and formatting
Contributing
- Join the DOGEAPI Creator and Contribute to the Project if you have any enhancement or add-ons to create a good and Secure Project, Help any User to Use it in a good and simple way.
- Check all information here at docs's Folder to understand to how to contribute or to Read the Code of Conduct.
License
This project is licensed under the terms of the MIT license.