Skip to content
Back to Portfolio

V5 Hub

In DevelopmentCustom SystemUI/UX Design

End-to-end drone operations management platform

48
DB Models
Prisma models covering the whole operation: users, jobs, deliverables, geospatial, AI
23
Feature Modules
Frontend with functional modules: admin, AI chat, analytics, auth, calendar, clients, dashboard, jobs, map, organizations, products, viewers...
2,830+
Tests
Unit and integration tests, ~12% to ~55% coverage in one hardening session
V5 Hub
Problem

A drone company ran on fragmented tools: planning in spreadsheets, communication over email, manual deliveries.

Every stage of the business lived in a different tool — planning on WhatsApp, tracking in generic Kanban, deliveries by email with no traceability, analytics with no dashboards. The drone sector has unique demands: geospatiality (GPS jobs, geofences, LAANC/FAA restrictions), multi-stage pipelines (bids → scheduled → processing → deliver → bill → completed), specialized visualization plugins (georeferenced mosaics, point clouds, 3D models), and multi-role access (admin, pilot, processor, client, AI agent). The legacy tech debt was unsustainable: no testing, basic security, and every new feature touched multiple systems.

Process
  1. 01

    Research & Architecture

    Mapped the full drone operation flow: 5 roles, multiple pipeline states, 4 kinds of geospatial visualization. Monorepo design with clear separation: React frontend, Express backend, shared types package, and an MCP server for AI.

  2. 02

    Database

    48 Prisma models covering users, organizations, sites, products, multi-stage jobs, flight logs, recurring scheduling, geospatial tiles, AI conversations, and notifications. PostGIS for geospatial queries.

  3. 03

    Industrial Design System

    Forced dark palette with industrial orange accents. Precision-technical aesthetic, glass panels, 4-level surface hierarchies, Open Sans typography. ~56 reusable UI components with Shadcn UI.

  4. 04

    Backend & API

    33 API routes by domain, 35 business services. Redis for caching, BullMQ for queues, Socket.IO for real time. JWT auth with refresh token rotation, TOTP 2FA, rate limiting. LAANC integration for airspace restrictions.

  5. 05

    Frontend & Geospatial Viewers

    23 feature modules. Viewer system with an extensible plugin framework: LandscapeViewer (georeferenced mosaics), ConstructViewer (temporal comparison), CommunityViewer (community data), ArbolViewer (forestry analysis). Loaded on demand.

  6. 06

    AI Integration

    MCP server with 24 AI-invocable tools. Chat with SSE streaming, DB persistence, per-user rate limiting, per-model cost tracking, and a write executor with undo tokens for reversible operations.

  7. 07

    Testing & Hardening

    2,830+ unit and integration tests. Security audit with multiple findings fixed. Full RBAC on MCP tools. Coverage from ~12% to ~55%.

The rewrite had to modernize everything without losing the operational workflows the company depended on — and add capabilities the business didn't have.
Build

33 API routes by domain, 35 business services.

Frontend with 23 feature modules and a viewer system with an extensible plugin framework — each drone deliverable type gets its own specialized viewer (Landscape, Construct, Community, Arbol), loaded on demand.

MCP server with 24 AI-invocable tools, chat with SSE streaming, persistence, rate limiting, and undo tokens.

Testing: 2,830+ tests, coverage from ~12% to ~55%.

Security audit with full RBAC on MCP tools.

Outcome

A platform unifying the entire drone operation in one interface, from planning to delivery, with integrated AI and professional-grade geospatial visualization.

23 feature modules, 48 DB models, extensible geospatial viewers, AI chat with 24 MCP tools, a client portal, and 2,830+ automated tests.

Visuals
System Artifacts

Monorepo Architecture

Four-package monorepo with pnpm workspaces + Turborepo for incremental builds: frontend (apps/web), backend (packages/server), shared types (packages/shared), and MCP server (packages/mcp-server).

pnpm-workspace.yamlyaml
packages:
  - "apps/*"      # Frontend React
  - "packages/*"  # Server, Shared, MCP Server

Viewer Plugin System

Lazy-loaded plugin framework: each drone deliverable type registers its own viewer. Plugins load on demand via dynamic import, shrinking the initial bundle. Four plugins: Landscape, Construct, Community, Arbol.

registry.tstypescript
const pluginRegistry = new Map<string, () => Promise<{ default: ViewerPlugin }>>();

export function registerPlugin(
  deliverableTemplate: string,
  loader: () => Promise<{ default: ViewerPlugin }>,
): void {
  pluginRegistry.set(deliverableTemplate, loader);
}

Multi-Stage Job Pipeline

5-state pipeline with validated transitions. Each state has business rules — forward only, never backward. Transitions recorded in a complete audit log.

constants.tstypescript
PIPELINE_STAGES = [
  'bids',              // Cotización
  'scheduled',         // Programado
  'processing_deliver', // Procesando/Entregando
  'bill',              // Facturación
  'completed'          // Completado
]

MCP Server with 24 Tools

The MCP server exposes system functionality as AI-invocable tools. Each tool has Zod validation, RBAC, and organization scoping. The AI can browse, query, and modify data safely.

Tech Stack
React 18TypeScript (strict)ViteTailwind CSSShadcn UI / Radix UITanStack QueryTanStack TableZustandReact Hook Form + ZodMapLibre GL JSOpenSeadragonFullCalendarApexChartsSocket.IOFramer MotionExpressPrisma ORMPostgreSQL 16 + PostGISRedisBullMQMCP ServerResendSentryDocker Composepnpm + TurborepoJWT + TOTP

Interested in building something like this?

[Start a Project]