Projects

Selected enterprise projects spanning cloud platforms, data systems, and large-scale transformations.

Fermentum

Feb 2025

Fermentum

fermentum.dev

A multi-tenant SaaS platform for micro-brewery chain management, covering the full production lifecycle from recipe formulation through batch tracking, equipment scheduling, inventory management, and customer operations. The system features schema-isolated multi-tenancy with row-level security in PostgreSQL, passwordless authentication via Stytch, Stripe payment processing, QuickBooks Online financial sync, and real-time notifications over SignalR. Two React frontends (operator and admin) communicate with a C#/.NET Core API layer, all deployed on Railway.

Team: 1
Regions: North America
C#.NET CoreASP.NET CorePostgreSQLReactTailwind CSSViteSignalRRedisStripeStytchQuickBooks OnlineEntity Framework CoreJWTOAuth 2.0DockerNginxNATSMulti-TenantRow-Level SecurityRailway

Fermentum is a brewery management SaaS platform designed for micro-brewery chains that need to coordinate production, inventory, equipment, and team operations across multiple locations. The system is built on a client-server architecture with a C#/.NET Core API backend, two React/Tailwind CSS frontends (operator and admin), and PostgreSQL as the primary data store.

Multi-Tenant

The platform implements a schema-per-tenant multi-tenancy model in PostgreSQL, where each brewery organization gets its own database schema provisioned automatically at signup. Row-level security policies enforce strict data isolation between tenants, with a custom EF Core interceptor injecting the tenant context on every query. The tenant schema contains over 30 tables covering the full brewery domain — recipes, batches, ingredients, equipment, inventory, customers, assignments, and notifications; while a shared public schema manages cross-tenant concerns like user accounts, subscription plans, and invitations.

Secure

Authentication is handled through Stytch, supporting passwordless magic links and OAuth 2.0 flows for Google and Apple sign-in. The API issues JWT tokens for session management, with Redis providing distributed caching and session storage. The authorization model supports role-based access control with configurable permissions per tenant, allowing brewery owners to define roles like Head Brewer, Shift Lead, or Sales Rep with granular access to different parts of the system.

Recipe Management

The recipe management system is one of the platform's core features, built around the BJCP (Beer Judge Certification Program) style guidelines. Brewers compose recipes by selecting from industry-standard databases of grains, hops, yeasts, and additives, then specifying recipe-specific quantities and parameters. The system calculates key brewing metrics — original gravity, final gravity, ABV, IBU, SRM color — and tracks ingredient costs per batch, per gallon, and per serving. Each recipe includes a configurable mash schedule with temperature targets and equipment assignments.

Production Tracking

Production batch tracking follows the full lifecycle from planning through completion. Batches are created from recipes, with each step tracked individually — mashing, boiling, fermentation, conditioning, packaging. The system records actual vs. planned measurements at each stage (gravity readings, temperature, pH) for quality control. Equipment scheduling uses PostgreSQL EXCLUDE constraints to prevent double-booking of fermenters, bright tanks, and other shared resources, with a maintenance tracking system for preventive and corrective maintenance records.

Inventory Management

Inventory management operates at the lot level, tracking individual ingredient receipts with expiration dates and quantities. The system monitors stock levels against configurable thresholds and generates real-time low-stock alerts delivered through SignalR WebSocket connections. A notification hub supports both targeted and broadcast messages, powering the in-app notification center and toast alerts.

Third-Party Integration

Third-party integrations include Stripe for subscription billing and payment method management across four plan tiers (trial, basic, premium, enterprise), and a QuickBooks Online plugin that syncs financial data through OAuth 2.0 for accounting workflows. The plugin architecture is extensible, with a registry system that allows tenants to install, configure, and manage integrations independently.

Responsive UX

The operator UI is a full-featured React SPA with 35+ pages covering every aspect of brewery operations — a guided onboarding flow, production dashboards, recipe builder with tabbed ingredient selection, batch tracking boards, equipment calendars, stock management with lot-level detail, customer records with Google Maps integration, and team task assignments with status workflows. The admin UI provides system-level management capabilities. Both frontends use Axios for API communication and React Context for state management.