Customer Portal
2026A multi-tenant customer portal with hub-scoped RBAC, invite-based onboarding and workflow automation.
An ASP.NET Core 10 REST API behind a React 19 SPA. Roles are computed from company membership rather than stored, per-module access is enforced by a dynamic authorization policy built at request time, and workflows are Lua-scripted state machines with email triggers. Onboarding is invite-only via Microsoft Graph, with data scoped per hub across five global regions.
Features
- Roles computed from company membership rather than stored, with dynamic per-module authorization policies
- Hub-scoped data isolation across five regions (EU/AU/LK/US/SI)
- Invite-based onboarding with transactional email via Microsoft Graph (app-only OAuth, locked to a shared mailbox)
- Lua-scripted workflow state machines with email triggers
C#.NET 10ASP.NET CoreEF CoreSQL ServerASP.NET IdentityReact 19TypeScriptViteMUIMicrosoft GraphCloudflare Pages
Unified Task Scheduler
2025A centralized scheduler that runs periodic jobs across many apps from one place.
A Windows Service worker plus a Blazor Server admin panel. Instead of every internal app carrying its own scheduled jobs, this service invokes REST endpoints on target applications on a defined schedule. Config changes take effect within 30 seconds without restarting the service, task 'buckets' run related jobs as sequential workflows, and execution logs are deliberately decoupled from tasks so history survives task deletion.
Features
- Replaces per-app scheduled jobs with one scheduler that invokes REST endpoints on target apps
- Quartz.NET worker with live config reload (polls the DB every 30s, no restart needed)
- Task 'buckets' run related jobs as sequential workflows; groups auto-disable on failure with email alerts
- Decoupled execution logs survive task deletion for historical analysis; worker heartbeat health monitoring
C#.NET 9Quartz.NETBlazor ServerMudBlazorEF CoreMySQLSerilogWindows Service
Inventory Analytics Platform
2025An inventory snapshot and usage-trend platform bridging regional Syspro ERP data into a central analytics store.
A Blazor Server + WebAssembly platform that periodically captures inventory state across five regional Syspro ERP databases, calculates daily usage, and surfaces warehouse-level projections. A shared DTO/enum library keeps types honest between client and server, and an xUnit test suite pins down query correctness, including tests that compare async and LINQ implementations of the same join for parity.
Features
- Captures periodic inventory snapshots across five regional Syspro databases
- Calculates daily usage trends and warehouse-level projections
- Excel export via ClosedXML; dual Blazor Server + WebAssembly delivery
- Repository and service layers backed by an xUnit test suite
C#.NET 9Blazor ServerBlazor WebAssemblyMudBlazorEF CoreSQL ServerClosedXMLxUnit
Enterprise Data Sync Platform
2025A data-sync platform that pulls M-Files enterprise records into SQL Server via CLI, web UI, or background service.
One sync engine, three execution models: a command-line tool, a web UI, and a Windows Service, all sharing the same core. Generic base entities keep the code extensible across 9+ M-Files entity types, and incremental sync is driven by per-class last-sync timestamps so each run only pulls what changed. Every operation is written to an audit log for compliance and troubleshooting.
Features
- Syncs 9+ M-Files entity types (sales opportunities, quality incident reports, compliance applications, supplier non-conformance reports, and more)
- Incremental sync via per-class last-sync timestamps with a full audit log
- One sync engine shared across three execution models: CLI, web UI, and Windows Service
- Generic base-entity patterns for extensibility without duplication
C#.NET 9ASP.NET CoreRazor PagesQuickGridEF CoreSQL ServerM-Files REST APICsvHelperWindows Service
Inventory Demand Forecast
2024A multi-hub inventory demand-forecasting app that ingests EDI data and projects demand across five global regions.
A Blazor WebAssembly frontend over an ASP.NET Core API, live in production. Users generate new demand forecasts and review historical ones, working across five regional SQL Server databases (AU, EU, US, SI, LK) plus a shared MySQL app database. The app ingests EDI files, projects consumption from historical movement data, and tracks in-flight long-running generation with a ConcurrentDictionary-based state manager.
Features
- Coordinates five regional SQL Server databases (AU/EU/US/SI/LK) plus a shared app database
- Ingests and parses EDI files to drive consumption analysis and forecast generation
- Thread-safe concurrent state tracking via a ConcurrentDictionary-based state manager
- Documented OpenAPI surface; live in production
C#.NET 8ASP.NET CoreBlazor WebAssemblyRadzenEF CoreSQL ServerMySQLOpenAPI
Partner Certification Management System
2024A certification-management portal for accredited partner organisations, integrated with M-Files document management.
A three-tier design (Blazor WebAssembly client, ASP.NET Core Web API, SQL Server) that manages the lifecycle of partner-organisation applications and compliance certifications. The same M-Files sync logic runs in two hosts (an interactive Blazor Server UI for operator-triggered sync and a Windows Service for automated background sync), sharing a common library. Includes JWT auth with role-based access, template-based transactional emails with a safe test mode, and multi-language UI in English, German and Dutch.
Features
- Manages the lifecycle of partner organisation applications and compliance certifications
- Two-way sync with M-Files, runnable both manually (UI) and automatically (Windows Service) from shared logic
- JWT auth with role-based access; template-based transactional emails
- Multi-language UI (EN/DE/NL) and rich-text clarification threads
C#.NET 8ASP.NET CoreBlazor WebAssemblyMudBlazorEF CoreSQL ServerJWTM-Files REST APISerilogClosedXML
Engineering Drawing Management System
2023A centralized technical-drawing repository with revision control, granular permissions and Azure-backed storage.
A Blazor Server web application that acts as the single source of truth for thousands of technical drawings, with full revision control and search by number, title and metadata. Users sign in with their Microsoft 365 credentials via Microsoft Entra ID, and access is controlled per role and per group. Revision numbers are validated against strict formats (x.x, x.xx, x.x.x), and folder names are inferred from the format rather than stored, flexible enough to handle legacy numbering inconsistencies.
Features
- Centralized search and revision management for thousands of technical drawings
- Strict revision-number validation and drawing-variant grouping
- Microsoft Entra ID (Azure AD) auth with role- and group-based permissions
- Secure file upload/download against Azure File Share with full audit logging
C#.NET 7Blazor ServerRadzenEF CoreMySQLMicrosoft Entra IDAzure File Share