Skip to main content

A production-grade FastAPI template with support for PostgreSQL, SQLite, and MySQL.

Project description

FastAPI Server Kit

A production-grade FastAPI template and toolkit with support for PostgreSQL (Sync/Async), SQLite (Async), and MySQL (Async). Built for speed, scalability, and clean architecture.

Features

  • Multi-Database Support: Easily switch between SQLite, PostgreSQL, and MySQL.
  • SQLAlchemy 2.0 (Async): Modern ORM patterns with centralized session management.
  • Clean Architecture: Organized into Core, Models, Repositories, Services, and Routers.
  • Alembic Migrations: Ready-to-use async migration setup.
  • Environment Management: Robust configuration using pydantic-settings.

Installation & Quick Start

The easiest way to start a new project is to use uvx. No installation or pre-existing project is required.

# In an empty directory, run:
uvx fastapi-server-kit

This single command will trigger an interactive setup:

  1. Project Name: Choose your own folder name.
  2. Database Selection: Choose between SQLite, PostgreSQL, or MySQL.
  3. Auto-Initialization: The tool runs uv sync to set up your .venv.
  4. Instant Start: The FastAPI server launches immediately.

CLI Flags (Automation)

For non-interactive use or CI/CD:

uvx fastapi-server-kit my-app --db postgres --no-input

Alternative Installation

If you want to add the kit as a dependency to an existing project:

uv add fastapi-server-kit

Manual Setup

If you prefer to clone the repository or use it as a template:

git clone https://github.com/atnatewoshw/fastapi-starter-template
cd fastapi-starter-template/server

2. Configure Environment

Create and configure your .env file from .env_example:

cp .env_example .env

3. Install Dependencies

uv sync

4. Running Locally

uv run uvicorn app.main:app --reload

Project Structure

The kit follows a clean, modular directory layout:

server/
├── app/
│   ├── core/          # Configuration and security
│   ├── models/        # SQLAlchemy models
│   ├── repositories/  # Data access layer
│   ├── routers/       # API endpoints
│   ├── schemas/       # Pydantic models
│   └── services/      # Business logic
├── tests/             # Unit and integration tests
├── cli.py             # Scaffolding CLI logic
└── pyproject.toml     # Project dependencies

Database Migrations

Initialize your database:

uv run alembic upgrade head

Create a new migration:

uv run alembic revision --autogenerate -m "description"

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_server_kit-0.2.1.tar.gz (86.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_server_kit-0.2.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_server_kit-0.2.1.tar.gz.

File metadata

  • Download URL: fastapi_server_kit-0.2.1.tar.gz
  • Upload date:
  • Size: 86.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fastapi_server_kit-0.2.1.tar.gz
Algorithm Hash digest
SHA256 db6af5d2f414acf2aef0959e8ae07a51eaa2a1769bc9cbabea791d67261cda84
MD5 887ef970318339ba71e0c6fed4953243
BLAKE2b-256 11b5f648112db150d235bdc2e784fe53c4beb72488e5c3dc89707fa597160df0

See more details on using hashes here.

File details

Details for the file fastapi_server_kit-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: fastapi_server_kit-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fastapi_server_kit-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e1fdb6df782af49b74df64ddac24955e161fa8a4b88a657a951fa98ec860591
MD5 2623932757ed299c51b66a74c1fc21eb
BLAKE2b-256 f5ffe86910a078beabee458e72d39e5579b352b91cec49f49759e79f3d3bb2de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page