Multi-Service Enterprise ERP Platform
One platform for customers, billing, approvals, and ops reporting — instead of five spreadsheets arguing with each other.
- My contribution
- I led the backend shape, data models, permissions, and background task setup.
- Technology
- Python, Django, PostgreSQL, Redis, REST APIs, Role-Based Access Control
- Links
- Not publicly available
01Problem
Teams outgrow disconnected tools. Customer data, billing, and approvals drift apart, and nobody trusts the numbers.
Approach. I built a modular Django ERP with shared data models, role-based access, and background jobs for the heavy work.
02Requirements
- Unify customer management, billing, and operational workflows under one authentication boundary.
- Enforce strict Role-Based Access Control (RBAC) across departments and approval stages.
- Maintain an immutable audit trail for financial and administrative state changes.
- Offload heavy report generation and notifications to asynchronous background workers.
03Architecture
Structured as a modular Django monolith with clear domain boundaries (Billing, CRM, Operations, Access Control) backed by PostgreSQL. Synchronous requests pass through an API layer with permission middleware, while long-running tasks (invoice PDFs, scheduled reminders, data exports) are dispatched through a Redis-backed task queue.
- Web Dashboard
- API Gateway
- Domain / Billing / Customer Services
- PostgreSQL
- Event Queue
04Technology choices
- Django & Django REST Framework
- Mature ORM, migration system, and security defaults suited for complex business domains.
- PostgreSQL
- Relational integrity, transactions, and indexing for multi-table financial queries.
- Redis + Background Workers
- Keeps dashboard response times predictable while processing batch jobs.
05Implementation
- Designed normalized schemas with transaction-safe state transitions for invoices and approvals.
- Implemented fine-grained permission decorators and audit logging middleware.
- Added optimized reporting queries with pagination and caching for daily operations.
06Security considerations
- Row- and role-level authorization checks on every API endpoint and export route.
- CSRF protection, secure session management, and parameterized ORM queries.
- Automated encrypted database backups with tested restore procedures.
07Challenges
- Modeling flexible approval workflows across departments without overcomplicating the schema.
- Keeping complex summary dashboards fast as historical transaction tables grow.
08Results and lessons learned
Departments work in one auditable system, with roles that match how people actually operate.
Delivered for real-world business operations. Well-defined module boundaries inside a unified codebase allowed faster iteration than premature microservice splitting.

