Metadata-Version: 2.1
Name: fastapi-basekit
Version: 0.4.1
Summary: Utilities and base classes for FastAPI async projects (Beanie, SQLAlchemy or SQLModel)
Author-email: Jerson Moreno <jerson.ml820@hotmail.com>
License: MIT
Project-URL: Homepage, https://github.com/mundobien2025/fastapi-basekit
Project-URL: Repository, https://github.com/mundobien2025/fastapi-basekit
Project-URL: Issues, https://github.com/mundobien2025/fastapi-basekit/issues
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3
Classifier: Framework :: FastAPI
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.116.1
Requires-Dist: pydantic<3,>=2.13.0
Requires-Dist: fastapi-restful[all]>=0.6.0
Requires-Dist: pyjwt>=2.12.1
Provides-Extra: beanie
Requires-Dist: beanie<3,>=2.0; extra == "beanie"
Provides-Extra: sqlalchemy
Requires-Dist: SQLAlchemy[asyncio]<3,>=2.0.30; extra == "sqlalchemy"
Requires-Dist: psycopg2>=2.9.0; extra == "sqlalchemy"
Provides-Extra: sqlmodel
Requires-Dist: sqlmodel>=0.0.37; extra == "sqlmodel"
Provides-Extra: init
Requires-Dist: cookiecutter>=2.5.0; extra == "init"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6.0; extra == "docs"
Requires-Dist: mkdocs-material>=9.5.0; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.27.0; extra == "docs"
Requires-Dist: pymdown-extensions>=10.10; extra == "docs"
Requires-Dist: mike>=2.1.0; extra == "docs"
Provides-Extra: all
Requires-Dist: beanie<3,>=2.0; extra == "all"
Requires-Dist: SQLAlchemy[asyncio]<3,>=2.0.30; extra == "all"
Requires-Dist: psycopg2>=2.9.0; extra == "all"
Requires-Dist: sqlmodel>=0.0.37; extra == "all"
Requires-Dist: cookiecutter>=2.5.0; extra == "all"
Requires-Dist: mkdocs>=1.6.0; extra == "all"
Requires-Dist: mkdocs-material>=9.5.0; extra == "all"
Requires-Dist: mkdocstrings[python]>=0.27.0; extra == "all"

<div align="center">

<img src="docs/assets/logo-mark.svg" width="120" alt="fastapi-basekit">

# fastapi-basekit

**FastAPI toolkit con repos, services y controllers listos para producción.**
**Multi-ORM · CLI scaffolder · plugin Claude Code.**

[![PyPI](https://img.shields.io/pypi/v/fastapi-basekit?style=flat-square&color=009485&logo=pypi&logoColor=white)](https://pypi.org/project/fastapi-basekit/)
[![Python](https://img.shields.io/badge/python-3.11+-2c5282?style=flat-square&logo=python&logoColor=white)](https://pypi.org/project/fastapi-basekit/)
[![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=flat-square&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/)
[![SQLAlchemy](https://img.shields.io/badge/SQLAlchemy-2.0-c41616?style=flat-square)](https://www.sqlalchemy.org/)
[![Beanie](https://img.shields.io/badge/MongoDB-Beanie-47A248?style=flat-square&logo=mongodb&logoColor=white)](https://beanie-odm.dev/)
[![License](https://img.shields.io/badge/license-MIT-009485?style=flat-square)](./LICENSE)

[**Docs**](https://mundobien2025.github.io/fastapi-basekit) ·
[**PyPI**](https://pypi.org/project/fastapi-basekit/) ·
[**Issues**](https://github.com/mundobien2025/fastapi-basekit/issues) ·
[**Changelog**](./CHANGELOG.md)

</div>

---

## Quickstart

```bash
pip install fastapi-basekit[init]
basekit init                                    # cookiecutter prompts
cd <project_slug>
cp .env.example .env
make up-d
make migrate-create && make migrate-up
make seed
```

Abre http://localhost:8000/docs. Login con `admin@example.com` / `ChangeMe2026!`.

## ¿Qué incluye?

- **Repository / Service / Controller** base async para SQLAlchemy 2.0, SQLModel y Beanie
- **Paginación, filtrado, búsqueda, ordenamiento** vía query string out-of-the-box
- **JWT middleware** + `BasePermission` classes + soft-delete
- **`basekit init`** — scaffolder cookiecutter (multi-ORM, multi-DB, redis, s3, license)
- **Plugin Claude Code** — la skill `fastapi-basekit-crud` enseña el patrón a Claude

## Documentación

**[mundobien2025.github.io/fastapi-basekit](https://mundobien2025.github.io/fastapi-basekit)**

| Sección | Contenido |
|---|---|
| [Primeros pasos](https://mundobien2025.github.io/fastapi-basekit/getting-started/installation) | Instalación, `basekit init`, primer CRUD |
| [Guía de usuario](https://mundobien2025.github.io/fastapi-basekit/user-guide/controllers) | Controllers, services, repositories, paginación, filtros |
| [Avanzado](https://mundobien2025.github.io/fastapi-basekit/advanced/permissions) | Permisos, soft-delete, logging, performance |
| [Referencia API](https://mundobien2025.github.io/fastapi-basekit/api-reference/base-controller) | Docstrings de `BaseController`, `BaseService`, `BaseRepository`, `Schemas` |
| [Ejemplos](https://mundobien2025.github.io/fastapi-basekit/examples/basic-crud) | CRUD básico, filtros complejos, relaciones, auth |

## Como plugin de Claude Code

Dentro de Claude Code (terminal) corre:

```bash
/plugin marketplace add mundobien2025/fastapi-basekit
/plugin install fastapi-basekit@fastapi-basekit
/plugin list                                       # verifica instalación
```

Eso registra el marketplace `fastapi-basekit` desde el repo de GitHub e
instala el plugin (que incluye la skill `fastapi-basekit-crud`). Luego
pide: *"Crea el recurso `Invoice` con CRUD completo siguiendo
fastapi-basekit"* — Claude detecta la skill y aplica el patrón canónico
(model → repo → service → schema → controller con `@cbv`).

Para actualizar a una versión nueva:

```bash
/plugin update fastapi-basekit@fastapi-basekit
```

## Instalación por ORM

```bash
pip install fastapi-basekit[sqlalchemy]   # Postgres / MySQL / SQLite
pip install fastapi-basekit[beanie]       # MongoDB
pip install fastapi-basekit[sqlmodel]
pip install fastapi-basekit[init]         # solo scaffolder
pip install fastapi-basekit[all]          # todo
```

## Contribuir

PRs bienvenidos. Setup local en [docs/contributing](https://mundobien2025.github.io/fastapi-basekit/contributing).

## Licencia

[MIT](./LICENSE) — © Jerson Moreno
