Back to Portfolio

Enterprise SaaS

OpsCanvas

One place for requests, approvals, and handoffs so operations teams stop playing detective in email threads.

Project Overview

OpsCanvas is internal software for companies where work still dies in inboxes and side chats. Teams file requests, the right people approve or send them forward, and everyone can see where things sit without asking for a status meeting. Automations handle the repetitive parts: nudges when a step sits too long, routing rules when a ticket matches a pattern, hooks into Slack or email when a human actually needs to see it. Dashboards are simple on purpose: volume, age of open items, and bottlenecks, not fifty charts nobody opens. We built it as a real B2B product: roles, audit history, and APIs that fit how your org already thinks about departments and ownership, not a toy Kanban with a logo slapped on.

Problem

Approvals were real, but the system of record was a thread. Someone forwarded a PDF, three people replied, and nobody could tell which version was current. When something slipped, the postmortem started with "who had the ball?" Data lived in different tools: CRM here, spreadsheets there, finance in something else. Operations sat in the middle translating, which meant delays and mistakes that were not anyone's bad intent, just bad plumbing. Visibility was always backward. You could see what already broke, not what was about to stall. Managers learned to chase people instead of reading a dashboard. IT did not want another fragile RPA script. They wanted something they could deploy, secure, and extend: TypeScript services, a real database, and a path toward audits like SOC 2 without pretending security is a checkbox on a slide.

Solution

We built a workflow engine around explicit states and transitions: a request moves from draft to review to approved or rejected, with rules that match how the client actually operates, not a generic template. The API layer is GraphQL so different screens can fetch the shape they need without six round trips. The React app focuses on queues, detail views, and actions people take every day: assign, comment, approve, escalate. Integrations meet people where they work: Slack or email for notifications, with deep links back into OpsCanvas so the system of record stays in one place. Kubernetes runs the services so we can roll out by region, scale under load, and roll back a bad deploy without a hero weekend. Postgres holds the truth: workflow instances, assignments, comments, and audit rows you can export when someone asks.

Technology Stack

TypeScriptGraphQLKubernetesReactPostgreSQL

Architecture

Services are split so the workflow engine, API, and notification workers can scale independently. Events drive side effects: when a step completes, subscribers update search indexes, send webhooks, or notify channels without blocking the user click. GraphQL sits in front of Postgres through a careful data layer: authorization is enforced per field and per row, not only at the edge. That matters when one tenant or department should not see another's requests. Kubernetes handles deploys, health checks, and horizontal scaling. Stateful work still lands in Postgres with transactions, not in memory on a random pod. Observability and audit logs are first-class: who changed a rule, who approved what, and when. That is the boring work that makes SOC 2 conversations possible later, not a spreadsheet you update by hand every quarter.

Results

  • 40% faster approval cycles
  • Unified visibility across 5+ departments
  • Enterprise SOC 2 compliance achieved

Interested in a similar project?

Let's discuss your requirements.

Book a Free Consultation