ORBE

Enterprise access-control and operations platform for Printpack Medical — 17 plants, 3,200+ people. Built end to end as the sole developer.

Role
Sole Developer
Year
2025
Stack
.NET 8Angular 19SQL ServerSignalR
Private repository Get in touch

Available on request — happy to walk through it.

Overview

ORBE is an enterprise platform built for Printpack Medical, a medical manufacturer with a network of 17 plants and more than 3,200 employees. It centralizes the things a plant floor needs to run safely and on the record: who is allowed where, how incidents and suggestions are submitted and resolved, how technical documentation is kept, and how access credentials are issued.

It was designed to operate across every plant in the network, and was delivered ready to roll out. I was the only developer on it, from the database to the interface.

The problem

Medical manufacturing runs on paper and patience. Before ORBE, issuing a single employee credential meant photos, spreadsheets, printing one badge at a time, cutting, and laminating — a process measured in days. Complaints and suggestions travelled on paper and had no reliable trail. Each plant was its own island of process.

The company needed one system that treated the whole network as a single operation, without losing the strict access rules each plant depends on.

What it covers

  • Access control — a four-level model (plant → module → submodule → permission) where a user’s rights cascade through the hierarchy and are validated on every request.
  • Digital credentials — automated badge generation that replaced the multi-day manual flow with a batch process that finishes in minutes.
  • Complaints & suggestions — structured intake with routing by category, SLA tracking, and escalation when a case runs long.
  • Technical documentation — a single, searchable home for plant procedures.
  • Authentication — multiple entry modes (QR scanning, credentials, and anonymous visitor access) matched to different plant-floor scenarios.

Architecture

The system follows a clean, layered architecture with CQRS, separating reads from writes through MediatR pipelines. That separation keeps the access-control checks consistent and testable, and keeps a large domain from turning into a tangle. The backend is layered .NET; the frontend is Angular, with server-side rendering, a progressive-web-app shell, and a fully bilingual (English / Spanish) interface.

ORBE/
├── src/
│   ├── Orbe.Api/          # .NET Web API — Clean Architecture layers
│   ├── Orbe.Angular/      # Angular standalone components
│   └── Orbe.Shared/       # Shared DTOs, constants, types
├── database/
│   └── schema/            # relational schema (access, complaints, docs)
└── docker/                # containerized deployment

Why it’s built this way

Permissions cascade through a deep hierarchy, so the expensive part is checking them on every action. Rather than hammer the database, an in-memory cache (IMemoryCache) holds authorization results and is invalidated on change — fast checks without sacrificing correctness. Real-time updates use SignalR so a plant sees a status change the moment it happens, instead of refreshing a page and hoping.

Status

Delivered and ready to operate across all 17 plants, including the completed and planned modules. It did not reach production deployment because the company lacked the infrastructure to host it at the time, and the engagement ended there. The software was finished; the runway was not.

What I learned

Building a system for thousands of people, alone, forced me to plan before typing: design the data model, understand how permissions actually behave at scale, and choose technology for the operational reality — not the résumé. It is also where I learned that “done” and “shipped” are different words, and that a good engineer plans for both.