Professional project · Ongoing
NexDocs
An enterprise document management platform for secure file processing, fine-grained access control, configurable workflows, and intelligent document search.

Overview
NexDocs is an Enterprise Document Management System (EDMS) designed to manage documents throughout their lifecycle: uploading, processing, organization, review, retrieval, and controlled access.
The platform brings document records, metadata, versioning, permissions, workflows, and search into a centralized workspace. The goal is to help organizations manage their documents with traceability and clear control over who can access information and perform document operations.
This is a live professional project developed with a team. My contribution focuses on backend architecture, database development, access control, document processing, and retrieval.
My role and contributions
I take ownership of backend architecture and database development, working closely with the team to design services, define technical approaches, and coordinate backend implementation.
My responsibilities include:
- Backend architecture: design service boundaries and application layers using Clean and Hexagonal Architecture principles.
- Database development: model schemas and relationships for document records, metadata, permissions, and business workflows.
- Access control: develop RBAC and fine-grained data access mechanisms, including role assignments, function-level privileges, and access scopes.
- Backend coordination: align service responsibilities, API contracts, and integrations with teammates and frontend developers.
- Document processing: work on ingestion, file validation, AI-powered metadata extraction, and controlled document retrieval.
- Technical decisions: contribute to approaches that support maintainability, reliability, and the evolving needs of the application.
Key modules and capabilities
Document ingestion and processing
The document intake workflow covers resumable uploads using the TUS protocol, checksum validation, security scanning, and AI-powered metadata extraction. These stages connect the uploaded file to a document record that can be organized, searched, and accessed through the platform.
RBAC and data access
Authorization combines role-based permissions with function-level privileges, user-role assignments, and data access scopes. It needs to account for both the operation a user can perform and the documents or entities that user is permitted to access.
Document workflows
Workflow templates, stages, recipients, tasks, and configurable rules support document review and approval processes. The backend model needs to represent reusable workflow definitions as well as the progress of individual document workflows.
Search and retrieval
The platform implements both Elasticsearch-powered search and RAG-based search, alongside metadata-based retrieval, to help users locate documents and relevant information within their content. Both search approaches need to respect document permissions so that discovering information follows the same access rules as retrieving it.
Document lifecycle management
Document registry records, version history, audit trails, supplementary documents, and controlled retrieval provide context around how a document changes and moves through the system.
RAG-based document search
The implemented Retrieval-Augmented Generation (RAG) workflow uses embeddings and semantic retrieval to find relevant document content and provide context for AI-assisted search. It complements Elasticsearch-powered search with another way to discover information within documents.
Backend architecture
NexDocs uses a distributed microservices architecture built around NestJS backend services. REST APIs expose application capabilities, gRPC supports service-to-service communication, and Kafka supports event-driven integration.
The services follow Clean and Hexagonal Architecture principles, separating domain behavior, application workflows, persistence, and external integrations.
PostgreSQL and Prisma handle relational application data, Redis supports backend caching, and object storage handles document files. Elasticsearch and the RAG workflow support document search and information retrieval.
AWS provides cloud infrastructure, Docker packages backend services, and GitHub Actions supports CI/CD workflows.
Technology stack
| Area | Technologies |
|---|---|
| Frontend | Next.js, Tailwind CSS, TanStack Query, shadcn/ui |
| Backend | Node.js, NestJS, TypeScript, REST APIs, gRPC, Kafka |
| Data | PostgreSQL, Prisma, Redis, object storage |
| Search and AI | Elasticsearch, RAG, AI-powered metadata extraction |
| Deployment | AWS, Docker, GitHub Actions |
Engineering challenges
Flexible document metadata
Different document types have different metadata requirements. The challenge is to support that flexibility while preserving useful relationships, validation, and a maintainable database model.
A reliable upload lifecycle
An uploaded file passes through validation and processing before it becomes a usable document. Resumable uploads, checksum checks, scanning, and extraction make the transitions between these stages important parts of the backend design.
Fine-grained authorization
Permissions need to remain consistent across document operations, workflow actions, and retrieval. Modelling roles alone is not enough; access scopes and entity-level assignments also influence what a user should be able to do.
Configurable workflows
Workflow modelling needs to accommodate different document types, stages, recipients, and review rules. Separating workflow templates from their execution state helps represent those variations clearly.
Discovering document information
AI-powered metadata extraction, indexed search, and AI-assisted retrieval address different parts of document discovery. Bringing them together requires careful attention to processing state, document versions, and access control.
What this project demonstrates
NexDocs brings together the areas of backend engineering I work on most: architecture, relational data modelling, authorization, document processing, and integration across services.
It also reflects the collaborative side of professional engineering: taking ownership of technical areas, coordinating implementation with a team, and making decisions around real business workflows as the product develops.