Metadata-Version: 2.4
Name: fastapi-tenants
Version: 0.0.2
Summary: A multi-tenancy solution for FastAPI (database-per-tenant, schema-per-tenant, and row-level-tenants strategies). COMMING SOON!!!
Project-URL: Homepage, https://github.com/KapilDagur/fastapi-tenants
Project-URL: Repository, https://github.com/KapilDagur/fastapi-tenants
Project-URL: Documentation, https://github.com/KapilDagur/fastapi-tenants#readme
Project-URL: Changelog, https://github.com/KapilDagur/fastapi-tenants/blob/main/CHANGELOG.md
Author-email: Kapil Dagur <kapildagur1306@gmail.com>
Maintainer-email: Kapil Dagur <kapildagur1306@gmail.com>
License: MIT
License-File: LICENSE
Keywords: async,fastapi,multi-tenancy,saas,sqlalchemy,tenants
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.12
Requires-Dist: fastapi>=0.116.1
Requires-Dist: pyjwt>=2.10.1
Requires-Dist: sqlalchemy>=2.0.43
Provides-Extra: alembic
Requires-Dist: alembic>=1.10.0; extra == 'alembic'
Provides-Extra: auth
Requires-Dist: pyjwt[crypto]>=2.10.1; extra == 'auth'
Provides-Extra: dev
Requires-Dist: black>=25.1.0; extra == 'dev'
Requires-Dist: coverage>=7.4.0; extra == 'dev'
Requires-Dist: mkdocs-material>=9.6.19; extra == 'dev'
Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
Requires-Dist: mypy>=1.17.1; extra == 'dev'
Requires-Dist: pre-commit>=4.3.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
Requires-Dist: pytest>=8.4.2; extra == 'dev'
Requires-Dist: ruff>=0.12.12; extra == 'dev'
Provides-Extra: postgres
Requires-Dist: asyncpg>=0.27.0; extra == 'postgres'
Description-Content-Type: text/markdown


---

# fastapi-tenants

*A multi-tenancy solution for FastAPI with support for database-per-tenant, schema-per-tenant, and row-level tenancy strategies.*

---

## ✨ Features

* **Flexible strategies** → database-per-tenant, schema-per-tenant, row-level.
* **Tenant-aware middleware** → resolve tenant from headers, subdomains, or tokens.
* **DB session management** → per-tenant scoped sessions.
* **Pluggable design** → extend strategies or authentication as needed.
* **FastAPI-first** → built for dependency injection and async support.

---

## 📦 Installation

```bash
pip install fastapi-tenants
```

Optional extras:

```bash
pip install "fastapi-tenants[postgres]"
pip install "fastapi-tenants[mysql]"
```

---

## 🚀 Quick Start

```python
from fastapi import FastAPI, Depends
from fastapi_tenants import TenancyMiddleware, get_tenant_session

app = FastAPI()

# Enable tenancy
app.add_middleware(
    TenancyMiddleware,
    strategy="schema",   # or "database", "row"
    header="X-Tenant-ID"
)

@app.get("/users")
def list_users(session = Depends(get_tenant_session)):
    return session.query(User).all()
```

---

## 📚 Roadmap

* [ ] Schema-based tenancy ✅
* [ ] Database-per-tenant support
* [ ] Row-level tenancy
* [ ] Multi-backend support (Postgres, MySQL, SQLite)
* [ ] Example apps & docs

---

## 🤝 Contributing

Contributions are welcome!
Check out [CONTRIBUTING.md](CONTRIBUTING.md) (coming soon).

---

## 📜 License

MIT License © 2025 [Kapil Dagur](https://github.com/KapilDagur)

---
