← Back to projects

Professional project · Ongoing

NexDocs

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

Live
NexDocs cover

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

AreaTechnologies
FrontendNext.js, Tailwind CSS, TanStack Query, shadcn/ui
BackendNode.js, NestJS, TypeScript, REST APIs, gRPC, Kafka
DataPostgreSQL, Prisma, Redis, object storage
Search and AIElasticsearch, RAG, AI-powered metadata extraction
DeploymentAWS, 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.