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.0.tar.gz (85.9 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.0-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_server_kit-0.2.0.tar.gz
  • Upload date:
  • Size: 85.9 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.0.tar.gz
Algorithm Hash digest
SHA256 da4de15199025aae0c0254cb1f953121751d85c343a4cac50a7b8e216cc75058
MD5 a83d66b8c678001036eea67f1a3fe79f
BLAKE2b-256 4e01a1c934d87d19e6b339677b7f8523a9d3e55bb8db8fc2136bb5f98b92b8e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fastapi_server_kit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.3 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a41264aaa80f5f9f0912e0834f18df718c30a2887a870104571f0fa2ae98fea3
MD5 e781d0e5d5c120becc78930a37d76401
BLAKE2b-256 fa2197bf1bd4764abef5c4cc6c6d238b75a18707b5f3f12fad4a81c78a9d06bb

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