Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,16 @@ jobs:

- name: Run tests (fastapi_startkit)
working-directory: fastapi_startkit
run: uv run pytest tests/ -v
run: uv run pytest tests/ -v --cov --cov-report=xml

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: fastapi-startkit/fastapi-startkit-modules
files: fastapi_startkit/coverage.xml
flags: fastapi_startkit
fail_ci_if_error: false

# ── example/config-app ────────────────────────────────────────────────
- name: Install dependencies (config-app)
Expand Down
61 changes: 61 additions & 0 deletions fastapi_startkit/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# FastAPI Startkit

[![codecov](https://codecov.io/gh/fastapi-startkit/fastapi-startkit-modules/graph/badge.svg)](https://codecov.io/gh/fastapi-startkit/fastapi-startkit-modules)
[![PyPI version](https://img.shields.io/pypi/v/fastapi-startkit.svg)](https://pypi.org/project/fastapi-startkit/)
[![Python versions](https://img.shields.io/pypi/pyversions/fastapi-startkit.svg)](https://pypi.org/project/fastapi-startkit/)

A modular, provider-driven framework for building Python applications with FastAPI. It bundles a
service container, configuration system, an async-first ORM, facades, and a Cleo-powered console into
a single cohesive foundation.

## Installation

```bash
pip install fastapi-startkit
```

Optional extras enable additional capabilities:

```bash
fastapi-startkit[fastapi] # FastAPI + Starlette
fastapi-startkit[database] # SQLAlchemy async ORM
fastapi-startkit[postgres] # asyncpg driver
fastapi-startkit[sqlite] # aiosqlite driver
fastapi-startkit[mysql] # aiomysql driver
fastapi-startkit[vite] # Jinja2 for Vite integration
```

## Features

- **Service container** — IoC container with `bind`/`make`/`resolve` auto-wiring and lifecycle hooks.
- **Configuration** — dataclass-based config sourced from the environment with dotted-key access.
- **Providers** — two-phase (`register` / `boot`) service registration.
- **Routing** — a `Router` wrapper around FastAPI's `APIRouter` with a `resource()` CRUD shortcut.
- **ORM** — async-first Masonite ORM fork on SQLAlchemy async, with relationships and migrations.
- **Facades** — static-like access to container-resolved services (`Config`, `Auth`, ...).
- **Console** — Cleo-based CLI (`artisan`) for migrations, seeders, and code generation.

## Documentation

Full documentation is available at
[fastapi-startkit.github.io](https://fastapi-startkit.github.io).

## Development

```bash
# Install dependencies
uv sync --group dev --extra database --extra sqlite --extra fastapi --extra vite --extra postgres

# Run the test suite
uv run pytest tests/ -v

# Run tests with coverage
uv run pytest --cov --cov-report=term-missing
```

Coverage is collected in CI and reported to
[Codecov](https://codecov.io/gh/fastapi-startkit/fastapi-startkit-modules).

## License

See the repository root for license details.
Loading