Skip to content

Yezz123-Archive/Apollo

Repository files navigation

apollo

Apollo

A basic Application with multiple functionalities built with FastAPI aim to help Users Buy New Items Provided by PaypalAPI to Complete the Payment and Check it.

Getting Started

Apollo provide a Basic API Compose :

  1. Users
    1. login : http://localhost:8000 user/login
    2. Register : http://localhost:8000/user/register
    3. Get User : http://localhost:8000/user/get_user/{username}
  2. Items
    1. Add Item : http://localhost:8000/item/add_item
    2. Get Item : http://localhost:8000/item/get_item/{id}
    3. Delete Item : http://localhost:8000/item/get_item/{id}
  3. Payment
    1. Add Item to Cart : http://localhost:8000/cart/add_to_cart/{username}
    2. Provide Item to Payments : http://localhost:8000/cart/payment
    3. Money Callback : http://localhost:8000/cart/callback
    4. Delete Cart Item : http://localhost:8000/cart/delete_cart_item/{id}

I pre-configured the Cruds with the payment process based on PaypalAPI, you can read the Official docs here REST APIs / API Requests

Prerequisites

  • Python 3.9.2 or higher
  • FastAPI
  • Docker

Project setup

# clone the repo
$ git clone https://github.com/yezz123/Apollo.git

# move to the project folder
$ cd Apollo

Creating virtual environment

  • Install pipenv a global python project pip install pipenv
  • Create a virtual environment for this project
# creating pipenv environment for python 3
$ pipenv --three

# activating the pipenv environment
$ pipenv shell

# if you have multiple python 3 versions installed then
$ pipenv install -d --python 3.8

# install all dependencies (include -d for installing dev dependencies)
$ pipenv install -d

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

## To run the Application under a reload enviromment use -- reload
$ uvicorn main:app --reload

Configured Enviromment

  • To Provide a good work, i choose a SQLite Database using SQLAlchemy.

  • If you want to configure the Database with an other Provider like MySQL or PostgreSQL you can change the Database_URL here :

  • Database.py :

# here you need to insert the Connection URL.
SQLALCHEMY_DATABASE_URL = 'sqlite:///apollo.db'
  • For Example
SQLALCHEMY_DATABASE_URL = 'mysql://username:password@server/apollo'

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.
$ docker build
  • list all the docker images and you can also see the image apollo:latest in the list.
$ docker images
  • run the application at port 5000. The various options used are:
  • -p: publish the container's port to the host port.
  • -d: run the container in the background.
  • -i: run the container in interactive mode.
  • -t: to allocate pseudo-TTY.
  • --name: name of the container
$ docker container run -p 5000:5000 -dit --name Apollo apollo:latest
  • Check the status of the docker container
$ docker container ps

Preconfigured Packages

Includes preconfigured packages to kick start Apollo API by just setting appropriate configuration.

Package Usage
uvicorn a lightning-fast ASGI server implementation, using uvloop and httptools.
PaypalAPI exchange these credentials for an access token that authorizes your REST API calls. To test your web and mobile apps.
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.

yapf packages for linting and formatting

Contributing

  • Join the Apollo 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.

License

This program is free software under MIT license. Please see the LICENSE file in our repository for the full text.