NimbusVault Backend — Design Docs¶
NimbusVault is an enterprise content management platform: multi-tenant document management, workflow automation, reporting, and integrations with SharePoint, Power BI, Azure, Keycloak, and more. Built on Django 5.2 + Django REST Framework, packaged as a containerised service with Celery workers behind it.
This site documents two things:
- How the platform is designed — the request lifecycle, middleware, multi-tenancy, orchestrators, the data layer, plugin loading, async processing, deployment, and configuration.
- How to add new APIs — a strict, opinionated contract every new endpoint must follow. See API Creation Guide → The contract.
Start here¶
| If you are… | Read… |
|---|---|
| New to the codebase | Getting Started → Architecture overview |
| Adding a new API | The contract → Worked example |
| Writing performant code | Good practices |
| Reviewing someone else's PR | Review checklist |
| Debugging a request | Request lifecycle |
| Building a new plugin | Plugins overview → Development guide |
| Looking up what a plugin does | Active plugins |
| Feeding the docs to an LLM | LLM manifest |
The one rule you must internalise¶
No function ever touches a Django Model directly. All ORM access goes through a domain-scoped
service.py. Thatservice.pyexposes onlycreate,get,filter,update,delete,bulk_create,bulk_update,bulk_delete. No business logic inservice.py. NoModel.objects.…calls outsideservice.py.
Everything else in this site is in service of that rule. See Data layer for the why and The contract for the how.
Repository layout snapshot¶
NimbusVaultBackend/
├── NimbusVault/ # Django project (settings, root urls, celery, middleware)
├── VaultManagement/ # Core app: views, serializers, urls
│ ├── urls/ # One module per domain — each included in NimbusVault/urls.py
│ ├── views/ # DRF views (class-based, one module per domain)
│ └── serializers/ # DRF serializers, mirrors views/ structure
├── Orchestrators/ # Workflow engine + domain orchestrators
├── bll/ # Business-logic layer (one folder per domain)
├── VaultModels/ # Django ORM models + central ModelRegistry
├── Plugins/ # Dynamically loaded plugins (urls auto-mounted)
├── VaultWorkflow/ VaultRules/ VaultErrors/ VaultWebSockets/ VaultJournal/ VaultActions/
├── NimbusVaultConstants/ # Centralised enums, model names, formula engine
├── VaultSettings.json # Runtime config (NOT committed)
├── docs/ # ← you are here
└── mkdocs.yml