Building a Custom ERP System

Client: A B2B & B2C product supplier and installer, expanding into SaaS and manufacturing.
Users: 100+ across multiple partner businesses
Tech Stack: Angular, .NET Core (Vertical Slice Architecture), SQL Server
Duration: Ongoing (paused)


The Problem

The client had been relying on a legacy Visual Basic 6 system that had become almost impossible to maintain. It was slow, fragile, and nearly uneditable. Even simple changes risked breaking core workflows — and they were spending a small fortune patching it.

They needed something modern, scalable, and easier to maintain — especially with plans to launch a new modular product line and expand their offering.

My Approach

After reviewing the codebase and database, I concluded that a rewrite was the only viable path forward. The legacy app was deeply entangled, with:

  • Obscured or inaccessible code (wrapped layers, no modern IDE compatibility)
  • A chaotic database (70+ tables, inconsistent naming, poor normalization, and redundant records)
  • Painful user experience (multi-minute screen loads and blocking behavior)

My plan was to design and build a modern Enterprise Resource Planning system from scratch — one that could scale and evolve with the business.

What I Built

Even though the full rollout was paused, I was able to deliver a significant portion of the system:

  • Core Admin Tools: Full CRUD for all key data types, including roles and permissions management, with blazing-fast load times
  • Multi-Tenancy & RBAC: Secure tenant isolation with fine-grained role control, managed directly through the UI
  • Booking Calendar: Interactive interface for scheduling jobs, ready for business logic integration
  • Custom Drawing App: Sketch job plans and automatically estimate required materials, labor, and costs at a granular level
  • Execution & Action Logging: Tracked user actions and execution times for better debugging and auditing
  • Modern Dashboard: A central operational hub tying all components together into one streamlined view

Technical Highlights

  • Architecture: Built on Jimmy Bogard’s Vertical Slice architecture for clear separation of concerns and scalability
  • Multi-Tenancy & RBAC: Powered by the AuthPermissions library (Jon P Smith) to handle secure tenant isolation, role management, and user permissions end-to-end
  • Data Migration: Cleaned and partially normalized millions of rows across ~70 legacy tables using SQL scripts and validation routines
  • Reverse Engineering: With no docs and limited code visibility, I reconstructed the system's logic by observing real usage and studying the data model

What I Learned

  • Designing without specs: I sharpened my ability to extract business logic from data, interviews, and observation
  • Big-picture thinking: Planning system-wide connections early helped the project stay flexible
  • Self-direction: This was my first large-scale solo project — I had to own everything from planning to debugging

What I'd Do Differently

  • Immerse myself in the user's world: If I had been embedded as a user for even a week, I could have understood requirements much faster
  • Refine the tech stack for even faster delivery: Today, I would consider using FastEndpoints to simplify setup even further.

Project Status

The project was put on hold, but the foundation is there. The system is fast, modular, and designed to scale.