Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/syedfaisalsaleeem/fastapi-strawberry-graphql-sqlalchemy-boilerplate
Boiler plate project for using GraphQL (Strawberry) with FastAPI and Async SQL Alchemy 🍓
https://github.com/syedfaisalsaleeem/fastapi-strawberry-graphql-sqlalchemy-boilerplate
async fastapi graphql-server postgresql python sqlalchemy strawberry-graphql
Last synced: 3 months ago
JSON representation
Boiler plate project for using GraphQL (Strawberry) with FastAPI and Async SQL Alchemy 🍓
- Host: GitHub
- URL: https://github.com/syedfaisalsaleeem/fastapi-strawberry-graphql-sqlalchemy-boilerplate
- Owner: syedfaisalsaleeem
- License: mit
- Created: 2022-07-08T21:44:58.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-07-11T21:31:45.000Z (over 2 years ago)
- Last Synced: 2024-10-11T13:22:26.027Z (3 months ago)
- Topics: async, fastapi, graphql-server, postgresql, python, sqlalchemy, strawberry-graphql
- Language: Python
- Homepage: https://graphql-stickynotes.herokuapp.com/graphql
- Size: 43.9 KB
- Stars: 141
- Watchers: 2
- Forks: 23
- Open Issues: 2
-
Metadata Files:
- Readme: Readme.md
- Contributing: CONTRIBUTING.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
Fast Api Strawberry GraphQL Async SQL Alchemy Boiler Plate
## Description
This code is a boiler plate for the implementation of GraphQL with Fast Api using Strawberry Library.
For GraphQL server we have used Strawberry.## Features
- Production ready Python web server using Uvicorn and Gunicorn.
- Python **FastAPI** backend
- Async Connection of SQL Alchemy with POSTGRESQL DataBase.
- CRUD Operations of GraphQL using Strawberry Library.
- Written Async Unit Tests using Pytest to test GraphQL queries and mutations.
- Boiler Plate directory struture for GraphQL Python.
- Get the data only from the columns using SQL Alchmey which are specified in GraphQL Query.
- Deployment using Docker Container through Docker Compose file.
- Deployed code at specific endpoint to test GraphQL.
- Alembic migrations.
- Jenkins (continuous integration).
## InstallationTo run the project in your local environment::
1. Clone the repository::
```
$ git clone https://github.com/syedfaisalsaleeem/FastApi-Strawberry-GraphQL-SqlAlchemy-BoilerPlate.git
$ cd FastApi-Strawberry-GraphQL-SqlAlchemy-BoilerPlate
```
2. Create and activate a virtual environment::
```
$ virtualenv env -p python3
$ source env/bin/activate
```
3. Install requirements::
```
$ pip install -r requirements.txt
```
4. Run the application::
```
$ python main_dev.py
```
To run the project using Docker Container:1. Clone the repository::
```
$ git clone https://github.com/syedfaisalsaleeem/FastApi-Strawberry-GraphQL-SqlAlchemy-BoilerPlate.git
$ cd FastApi-Strawberry-GraphQL-SqlAlchemy-BoilerPlate
```
2. Run this command on CMD::
```
$ docker-compose up -d --build
```
## Usage ExamplesLaunch the fast api server at specified port default 5000 (open the UI at http://localhost:5000/graphql): ::
$ python main_dev.py
Launch using docker: ::
$ docker-compose up -d --build
## Tests
Test are run with *pytest*. If you are not familiar with this package you can get some more info from `their website `_.
To run the tests, from the project directory, simply::
```
$ pip install -r requirements.txt
$ python test.py
```You should see output similar to::
```
----------- coverage: platform win32, python 3.8.8-final-0 -----------
Name Stmts Miss Cover
-------------------------------------------------------
tests\conftest.py 18 4 78%
tests\graphql\mutations.py 3 0 100%
tests\graphql\queries.py 2 0 100%
tests\graphql\test_stickynotes.py 0 0 100%
tests\graphql\test_user.py 43 0 100%
tests\load_test_env.py 4 4 0%
-------------------------------------------------------
TOTAL 70 8 89%=================== 8 passed in 0.59s =================
```
## MigrationsTo run the project in your local environment::
```
$ alembic revision --autogenerate -m "migration string"
$ alembic upgrade head
```
## LicenseThis project is licensed under the terms of the MIT license. If you have any question about this opinionated list, do not hesitate to contact me [@SyedFaisal](https://www.linkedin.com/in/syedfaisalsaleem/) on Linkedin or open an issue on GitHub.