Skip to content
/ Monglo Public

Powerful MongoDB admin library with intelligent relationship detection. Built for modern Python applications with FastAPI, Flask, and Django support.

License

Notifications You must be signed in to change notification settings

mE-uMAr/Monglo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

48 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Monglo - Framework-Agnostic MongoDB Admin Library

The MongoDB admin interface that's actually magical to use.

Python License


โœจ Why Monglo?

โŒ Other MongoDB admin tools:

  • Require tons of boilerplate code
  • Manual template setup, routing, serialization
  • Framework-locked or ORM-dependent
  • Complex configuration

โœ… Monglo:

  • 10 lines of code - that's it!
  • Library handles EVERYTHING automatically
  • Works with FastAPI, Flask, Django
  • Auto-detects collections, schemas, relationships
  • Production-ready UI included

๐Ÿš€ Quick Start (< 5 minutes)

Installation

pip install monglo motor fastapi  # or flask, or django

Setup (Literally 10 lines!)

from fastapi import FastAPI
from motor.motor_asyncio import AsyncIOMotorClient
from monglo import MongloEngine
from monglo.ui_helpers.fastapi import create_ui_router

# 1. Connect to MongoDB
client = AsyncIOMotorClient("mongodb://localhost:27017")

# 2. Create FastAPI app
app = FastAPI()

# 3. Initialize Monglo
engine = MongloEngine(database=client.mydb, auto_discover=True)

@app.on_event("startup")
async def startup():
    await engine.initialize()
    app.include_router(create_ui_router(engine))

# That's it! ๐ŸŽ‰

Run it:

uvicorn app:app --reload

Visit: http://localhost:8000/admin

You now have a full-featured admin interface with:

  • โœ… Collection browsing
  • โœ… Document viewing/editing
  • โœ… Search and filtering
  • โœ… Relationship navigation
  • โœ… Auto-detected schemas
  • โœ… Professional UI

๐ŸŽฏ Features

๐Ÿ”ฎ Magical Auto-Detection

# Just initialize - Monglo does the rest
engine = MongloEngine(database=db, auto_discover=True)
await engine.initialize()

# Automatically discovers:
# - All collections
# - Field types and schemas
# - Relationships (user_id โ†’ users collection)
# - Indexes

๐Ÿ”— Intelligent Relationships

# Your MongoDB document:
{
    "user_id": ObjectId("..."),      # โ†’ Automatically links to users collection
    "tags": [ObjectId("...")],       # โ†’ Automatically links to tags collection  
    "category": "electronics"
}

# Monglo automatically:
# - Detects these relationships
# - Creates clickable navigation
# - Resolves related documents
# - Shows relationship graphs

๐Ÿ“Š Dual Views

Table View - Browse and filter thousands of documents

  • Sortable columns
  • Advanced filtering
  • Global search
  • Bulk operations
  • Export (CSV, JSON)

Document View - Inspect and edit individual documents

  • Full JSON tree structure
  • Relationship navigation
  • Field validation
  • Nested document support

๐ŸŽจ Production-Ready UI

  • Modern, responsive design
  • Dark/light modes
  • Customizable branding
  • Mobile-friendly
  • Professional aesthetics

๐Ÿ“š Framework Support

FastAPI (Recommended)

from monglo.ui_helpers.fastapi import create_ui_router

app.include_router(create_ui_router(engine))

Flask

from monglo.ui_helpers.flask import create_ui_blueprint

app.register_blueprint(create_ui_blueprint(engine))

Django

# In urls.py
from monglo.ui_helpers.django import create_ui_urlpatterns

urlpatterns = [
    *create_ui_urlpatterns(engine, prefix="admin"),
]

๐Ÿ› ๏ธ Customization (Optional!)

Everything works out of the box, but you can customize:

Branding

create_ui_router(
    engine,
    title="My Admin Panel",
    logo="https://example.com/logo.png",
    brand_color="#ff6b6b"
)

Collection Configuration

from monglo import CollectionConfig, TableViewConfig

await engine.register_collection(
    "products",
    config=CollectionConfig(
        list_fields=["name", "price", "stock"],
        search_fields=["name", "description"],
        table_view=TableViewConfig(
            per_page=50,
            default_sort=[("created_at", -1)]
        )
    )
)

Authentication

from monglo.auth import SimpleAuthProvider

engine = MongloEngine(
    database=db,
    auth_provider=SimpleAuthProvider(users={
        "admin": {
            "password_hash": SimpleAuthProvider.hash_password("admin123"),
            "role": "admin"
        }
    })
)

๐Ÿ“– Documentation


๐ŸŽ“ Examples

Check out examples/ for complete working examples with FastAPI (Flask and Django support coming in future versions):


๐Ÿ’ป Development

Setup

# Clone the repo
git clone https://github.com/me-umar/monglo.git
cd monglo

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install development dependencies
pip install -e ".[dev]"

Run Tests

pytest tests/ --cov=monglo --cov-report=html

Run Linters

ruff check monglo/
black monglo/ tests/
mypy monglo/ --strict

Run Examples

cd examples/fastapi_example/basic_example
python app.py

๐Ÿค Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.


๐Ÿ“ License

MIT ยฉ 2025


โญ Star History

If Monglo saves you time, give it a star! โญ


๐Ÿ™ Acknowledgments

Built with:


Before Monglo: 380 lines of boilerplate (templates, routing, serialization, filters...)

After Monglo: 10 lines. Everything just works. โœจ

About

Powerful MongoDB admin library with intelligent relationship detection. Built for modern Python applications with FastAPI, Flask, and Django support.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published