Apollo
A basic Application with multiple functionalities built with FastAPI aim to help Users Buy New Items Provided using PaypalAPI :rocket:
Install / Use
/learn @Yezz123-Archive/ApolloREADME
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 :
<ol> <li>Users</li> <ol> <li>login : <code>http://localhost:8000 user/login</code> </li> <li>Register : <code>http://localhost:8000/user/register</code></li> <li>Get User : <code>http://localhost:8000/user/get_user/{username}</code></li> </ol> <li>Items</li> <ol> <li>Add Item : <code>http://localhost:8000/item/add_item</code></li> <li>Get Item : <code>http://localhost:8000/item/get_item/{id}</code></li> <li>Delete Item : <code>http://localhost:8000/item/get_item/{id}</code></li> </ol> <li>Payment</li> <ol> <li>Add Item to Cart : <code>http://localhost:8000/cart/add_to_cart/{username}</code></li> <li>Provide Item to Payments : <code>http://localhost:8000/cart/payment</code></li> <li>Money Callback : <code>http://localhost:8000/cart/callback</code></li> <li>Delete Cart Item : <code>http://localhost:8000/cart/delete_cart_item/{id}</code></li> </ol> </ol>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
pipenva global python projectpip install pipenv - Create a
virtual environmentfor 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
-
Here we can Switch Between using SWAGGER UI or Redoc to Play around the API.
-
You can Now Start using the Application, i use a simple Template for the
indexfile to simply launch/docs: https://codepen.io/ma_suwa/pen/QWWqJBK
Configured Enviromment
-
To Provide a good work, i choose a
SQLiteDatabase usingSQLAlchemy. -
If you want to configure the Database with an other Provider like
MySQLorPostgreSQLyou can change theDatabase_URLhere :
# 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:latestin 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.
Related Skills
gh-issues
349.9kFetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
oracle
349.9kBest practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
taskflow-inbox-triage
349.9kname: taskflow-inbox-triage description: Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some w
taskflow
349.9kname: taskflow description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layer
