Skip to main content

🚀 Quick Start

Create FastAPI App for more visit https://fastapi.tiangolo.com/

⚙️ Installation

pip install fast-mu-builder

🚀 Setting Up a Custom User Model in FastAPI with Tortoise ORM + FastAPI-Builder

This guide explains how to create a package module for your User model, extend it from AbstractUser, configure it in Tortoise ORM, and generate GraphQL + migrations.


📂 Project Structure

myapp
  ├── mymodel_package
  │   ├── __init__.py
  │   └── models
  │       └── ..
  ├── config
  │   ├── __init__.py
  │   └── tortoise.py
  ├── main.py
  └── ...

🗄️ 3. Create Tortoise ORM Config

Inside config/tortoise.py:

from decouple import config

db_url = f"postgres://{config('DB_USER')}:{config('DB_PASSWORD')}@{config('DB_HOST')}:{config('DB_PORT')}/{config('DB_NAME')}"

TORTOISE_ORM = {
    "connections": {"default": db_url},
    "apps": {
        "models": {
            "models": [
                "fast_mu_builder.models",   # built-in models
                "mymodel_package.models",    # your custom models
                "aerich.models",             # migration tracking
            ],
            "default_connection": "default",
        },
    },
    "use_tz": True,  # Enable timezone-aware datetimes
    "timezone": "Africa/Dar_es_Salaam",  # Set to EAT (Dar es Salaam)
}

🔧 4. Generate CRUD APIs via GraphQL

Run the following to scaffold GraphQL CRUD APIs:

# For your custom User model
graphql gen:crud-api user_management --module-package=mymodel_package.models --model User

# For fast_mu_builder built-in models
graphql gen:crud-api user_management --module-package=fast_mu_builder.models --model Group,Permission,Headship
graphql gen:crud-api workflow --module-package=fast_mu_builder.models --model Workflow,WorkflowStep,Transition,Evaluation

For your Models

# 
graphql gen:crud-api <module-name> --model Model1,Model2,Model3

# generating graphql schemas with attachments

graphql gen:crud-api <module-name> --model ModelName --with-attachment

# generating graphql schemas with transition
graphql gen:crud-api <module-name> --model ModelName --with-transition

📦 5. Initialize Aerich (DB migrations)

# Initialize Aerich with your Tortoise ORM config
aerich init -t config.tortoise.TORTOISE_ORM

# Create initial migration & database tables
aerich init-db

📖 Documentation

Coming soon...


🤝 Contributing

Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.


📜 License

This project is licensed under the MIT License.

Thanks

Thanks for all the contributors that made this library possible, also a special mention to Japhary Juma, Shija Ntula and Juma Nassoro.

Metadata

Release files for fast-mu-builder 0.1.0.32

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fast-mu-builder 0.1.0.32
File Size Uploaded
fast_mu_builder-0.1.0.32.tar.gz 83.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fast-mu-builder 0.1.0.32
File Interpreter ABI Platform
fast_mu_builder-0.1.0.32-py3-none-any.whl Python 3 none any Details

Total release size: 189.4 kB

Release files / fast_mu_builder-0.1.0.32.tar.gz

Download URL fast_mu_builder-0.1.0.32.tar.gz
Size 83.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8df8f673a0bee6633e4dbfa3c0dfc1a0a30a5111fb5bf8cad8c0f55767091adb
BLAKE2b-256 checksum
How to use checksums
140514553fa00c009f31063621e077a1f5fb2bdfc0e4b0404dc24ce39fc24b30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / fast_mu_builder-0.1.0.32-py3-none-any.whl

Download URL fast_mu_builder-0.1.0.32-py3-none-any.whl
Size 105.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9fc8ec7b0be178f10f8cd9cd16ac54f934e699a24a7a24c6db8a209b70f6021
BLAKE2b-256 checksum
How to use checksums
5a56a55a653b694db8087ce2b37c61f95ed553b412f0b8fc32fd27a12f6b03f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page