Fastapi App

screenshot of Fastapi App

Fastapi-app is an opinionated modular FastAPI app boilerplate inspired by NestJS and Flask's Blueprint.

Overview

Fastapi-app is a versatile and modular boilerplate designed for building FastAPI applications. Drawing inspiration from frameworks like NestJS and Flask's Blueprint, it caters to developers looking to create small to medium-sized API-oriented microservices with ease. With its well-thought-out architecture, Fastapi-app streamlines the development process, allowing you to focus on creating robust and scalable applications.

Whether you are efficiently managing database operations, implementing authentication, or scheduling background jobs, Fastapi-app provides a solid foundation. Its opinionated structure helps maintain consistency across your projects, making it an excellent choice for developers seeking a reliable starting point.

Features

  • ASGI Server with Uvicorn: Fastapi-app leverages Uvicorn as the ASGI server to ensure high-performance and asynchronous capabilities for your applications.

  • Active Record ORM with Tortoise: This feature simplifies database interactions, allowing developers to work with Python objects while managing data effortlessly.

  • Database Migration with Aerich: Aerich provides a smooth migration process, making it easy to manage changes in your database schema over time.

  • Authentication with OAuth2: Built-in support for OAuth2 ensures secure authentication, allowing users to authenticate easily while protecting sensitive data.

  • Access Control with Casbin: Casbin integration helps enforce fine-grained access control, making it easier to manage user permissions and roles.

  • Job Scheduling with Arq: Schedule and handle background jobs seamlessly using Arq, facilitating the execution of asynchronous tasks at specified intervals.

  • CLI with Typer: Fastapi-app includes a command-line interface built with Typer, allowing developers to run scripts and manage applications with ease.

  • Built-in Pagination Support: The built-in pagination feature simplifies managing large datasets, providing a straightforward way to retrieve and display data in manageable chunks.