Jul 24, 2026

Engineering Project Management Platform: Auctions, Real-Time Chat, and Document Workflow

A fullstack platform for engineering projects with a multi-round auction system, real-time chat, role-based access, and versioned document workflow — architected and shipped to MVP solo in three months.

Engineering Project Management Platform: Auctions, Real-Time Chat, and Document Workflow
TypeScriptJavaScriptNestJSNext.jsPostgreSQLRedisDrizzle ORMDockerFastifyBullMQMinIO / S3Node.jsGitlab CI/CDDDDCQRSClean Architecture Event-Driven

Context

The goal was a platform for managing engineering projects: clients put projects up for bidding, contractors compete through multi-round auctions, both sides negotiate and sign documents, and communicate in real time. I led the project solo, fullstack, from architecture to production — three months to MVP.

Architecture

The backend follows Clean Architecture with CQRS separating commands from queries. Core business modules:

  • Auctions — multi-round bidding with auto-completion and real-time state updates for every participant.
  • Chat — real-time messaging between the client and contractors.
  • Notifications — alerts for auction status changes, new messages, and document workflow events.
  • Document workflow — file versioning, a structured sign-off chain, and asynchronous PDF conversion.
  • CMS — platform content management.

Auction system

Built a multi-round bidding system: participant bids, automatic round/auction completion based on defined conditions, and instant updates pushed to every party over WebSocket — no manual page refresh needed.

Document workflow

A dedicated module for document handling: file versioning on re-upload, a structured sign-off chain (who approves a document and in what order), and asynchronous PDF conversion of uploaded files through a job queue, so it never blocks the main request path.

Infrastructure and deployment

Set up CI/CD in GitLab, containerized the stack with Docker, and built the deployment pipeline end to end — from commit to a running server.