Code Monkey home page Code Monkey logo

fastapi-template's Introduction

python version Build status version

Flexible general-purpose template for FastAPI.

Usage

⚠️ Git, Python and Poetry must be installed and accessible ⚠️

Poetry version must be greater or equal than 1.1.8. Otherwise it won't be able to install SQLAlchemy.

Templator in action

You can install it directly from pypi with pip.

python3 -m pip install fastapi_template
python3 -m fastapi_template
# or fastapi_template
# Answer all the questions
# 🍪 Enjoy your new project 🍪
cd new_project
docker-compose -f deploy/docker-compose.yml --project-directory . build
docker-compose -f deploy/docker-compose.yml --project-directory . up --build

If you want to install it from sources, try this:

python3 -m pip install poetry
python3 -m pip install .
python3 -m fastapi_template

Also you can use it with docker.

docker run --rm -it -v "$(pwd):/projects" s3rius/fastapi_template

Features

One of the coolest features is that this project is extremely configurable. You can choose between different databases and even ORMs, or you can even generate a project without a database! Currently SQLAlchemy1.4, TortoiseORM, Piccolo and Ormar are supported.

This project can run as TUI or CLI and has excellent code documentation.

Generator features:

  • You can choose between GraphQL and REST api;
  • Different databases support;
  • Different ORMs support;
  • Optional migrations for each ORM except raw drivers;
  • Optional redis support;
  • Optional rabbitmq support;
  • different CI\CD;
  • Optional Kubernetes config generation;
  • Optional Demo routers and models (This helps you to see how project is structured);
  • Pre-commit integration;
  • Generated tests with almost 90% coverage;
  • Tests for the generator itself;
  • Optional Prometheus integration;
  • Optional Sentry integration;
  • Optional Loguru logger;
  • Optional Opentelemetry integration.

This project can handle arguments passed through command line.

$ python -m fastapi_template --help

usage: FastAPI template [-h] [--version] [--name PROJECT_NAME]
                        [--description PROJECT_DESCRIPTION]
                        [--api-type {rest,graphql}]
                        [--db {none,sqlite,mysql,postgresql}]
                        [--orm {ormar,sqlalchemy,tortoise,psycopg,piccolo}]
                        [--ci {none,gitlab_ci,github}] [--redis] [--rabbit]
                        [--migrations] [--kube] [--dummy] [--routers]
                        [--swagger] [--prometheus] [--sentry] [--loguru]
                        [--opentelemetry] [--traefik] [--force] [--quite]

optional arguments:
  -h, --help            show this help message and exit
  --version, -V         Prints current version
  --name PROJECT_NAME   Name of your awesome project
  --description PROJECT_DESCRIPTION
                        Project description
  --api-type {rest,graphql}
                        API type
  --db {none,sqlite,mysql,postgresql}
                        Database
  --orm {ormar,sqlalchemy,tortoise,psycopg,piccolo}
                        ORM
  --ci {none,gitlab_ci,github}
                        Choose CI support
  --redis               Add Redis support
  --rabbit              Add RabbitMQ support
  --migrations          Add migrations support
  --kube                Add Kubernetes configs
  --dummy, --dummy-model
                        Add dummy model
  --routers             Add example routers
  --swagger             Enable self-hosted Swagger
  --prometheus          Add prometheus integration
  --sentry              Add sentry integration
  --loguru              Add loguru logger
  --opentelemetry       Add opentelemetry integration
  --traefik             Adds traefik labels to docker container
  --force               Owerrite directory if it exists
  --quite               Do not ask for features during generation

fastapi-template's People

Contributors

alisayyah avatar am1ru1 avatar bensebabillal avatar chandr-andr avatar codeleta avatar gpkc avatar s3rius avatar sorasful avatar wp-lkl avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.