Monglo - Framework-Agnostic MongoDB Admin Library
The MongoDB admin interface that's actually magical to use.
✨ 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):
- basic_example - Minimal FastAPI setup (10 lines)
- advanced_example - Full-featured FastAPI app with relationships
- advanced_auth_example - Authentication and authorization demo
💻 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. ✨
Release files for Monglo 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| monglo-0.1.1.tar.gz | 111.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| monglo-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 212.5 kB
Release files / monglo-0.1.1.tar.gz
| Download URL | monglo-0.1.1.tar.gz |
|---|---|
| Size | 111.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70c2cd9a836f918bc3381829df1dfe38b8f16c64f2bf64c2aac2fb43d1dca22c
|
|
BLAKE2b-256 checksum How to use checksums |
c51c73c4d424ca31b1eaabab39dd2be1fcc0e4d41d15c998d34ebb19dc12a380
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / monglo-0.1.1-py3-none-any.whl
| Download URL | monglo-0.1.1-py3-none-any.whl |
|---|---|
| Size | 100.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ef1467dedc35466a5f0171d6f6390c82ad80c8c926423fa8a3c3839cd6806254
|
|
BLAKE2b-256 checksum How to use checksums |
b4a83ab8051522b145e06adae6b68ed6e83a151743ae3093aa72fcde7c2e5840
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|