DjangoMOJO

Full-stack Django framework

Ship the product.
Skip the plumbing.

REST, identity, jobs, realtime, files, security, and metrics—already integrated, already speaking the same language.

Start building

Open source · Python 3.10+ · Django 5.2

request.pipelineLIVE
01
AUTHJWT · OAuth · Passkeys
verified
02
PERMISSIONSobject + group scope
allowed
03
RESTMETAgraph · filter · serialize
12ms
200{"status":true,"data":{…}}
172reference articles
2developer tracks
1consistent framework

Built in production, documented from the code, and designed for humans and coding agents alike.

One system, not a parts bin

The stack you assemble on every Django project—already assembled.

Define the data, state the permissions, choose the graph. Django-MOJO supplies the production surface around it.

You used to wire upDjango-MOJO ships

DRF · serializers · viewsets

Model-first RESTPermissions, graphs, filtering, pagination, exports.

JWT · allauth · MFA packages

Complete identityOAuth, TOTP, passkeys, API keys, devices, sessions.

Celery · cron · worker glue

Async jobsScheduling, retries, idempotency, heartbeats, webhooks.

Channels · custom routing

RealtimeAuthenticated topic pub/sub with the same permission model.

S3 wrappers · image tooling

Files + vaultUploads, renditions, durable URLs, encrypted storage.

Logs · counters · alert glue

OperationsMetrics, security events, incidents, rules, evidence.

The pattern

Model in. Production API out.

Django-MOJO keeps the important decisions together: data shape, access rules, and response graphs. The endpoint becomes a three-line adapter.

  1. Define a normal Django model.
  2. Declare permissions and graphs in RestMeta.
  3. Expose the model through one decorated view.
Explore MojoModel →
models/article.py
from django.db import models
from mojo.models import MojoModel

class Article(models.Model, MojoModel):
    title = models.CharField(max_length=200)
    body = models.TextField()
    author = models.ForeignKey("account.User", …)

    class RestMeta:
        VIEW_PERMS = ["view_articles"]
        SAVE_PERMS = ["manage_articles"]
        GRAPHS = {
            "list": {"fields": ["id", "title"]},
            "detail": {"fields": ["*"]},
        }

Start with the model

Your product is the custom part.

Let Django-MOJO handle the infrastructure every serious application needs.

Read the docsView on GitHub