Skip to content

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:

  1. How the platform is designed — the request lifecycle, middleware, multi-tenancy, orchestrators, the data layer, plugin loading, async processing, deployment, and configuration.
  2. 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 StartedArchitecture overview
Adding a new API The contractWorked example
Writing performant code Good practices
Reviewing someone else's PR Review checklist
Debugging a request Request lifecycle
Building a new plugin Plugins overviewDevelopment 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. That service.py exposes only create, get, filter, update, delete, bulk_create, bulk_update, bulk_delete. No business logic in service.py. No Model.objects.… calls outside service.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