← All work
Oron Limited — Dec 2025 — present
ConnectNext CRM Portal 2.0
Multi-tenant SaaS CRM for Forex and CFD brokerages
A CRM platform that brokerages run their operations on — onboarding, configuration, client records, and payments, isolated per tenant.
I work the whole traversal on this one. A feature starts as a table and a stored procedure and ends as an Angular component, and I write both ends of it.
Layers delivered
- schema — deliveredSQL Server tables, indexes, constraints
- stored procedure — deliveredTransactional guards, concurrency control
- repository — deliveredDapper, generic base repository
- service — deliveredDomain and application layers
- controller — deliveredREST endpoints, auth, validation
- interface — deliveredAngular components and state
Filled markers are the layers I personally delivered on this project.
Front end
- Built the admin portal and the shared component library inside an Angular 21 monorepo.
- Standalone components throughout, with the Signals API for state and OnPush change detection.
- Ten reusable components consumed across portals: DataTable, FilterTabs, TableToolbar, FormSelect, CustomSelect, Skeleton, Loader, Badge, Toggle, ConfirmDialog.
- Five functional HTTP interceptors, order-dependent: authentication, refresh token rotation, error handling, loading state, and opt-in GET caching.
- Functional route guards and canDeactivate protection against losing unsaved work.
- Light and dark theming through CSS variables, with focus traps, ARIA roles, and keyboard handling on every dialog.
Back end
- Built OrgSAASAPI, a .NET 8 modular monolith on Clean Architecture.
- Dapper with stored-procedure-only data access — no inline SQL, no generated queries.
- A generic BaseRepository and a Result wrapper carrying success and failure through every layer.
- JWT authentication with refresh token rotation, tenant isolation derived from claims rather than request bodies, and role-based authorization.
Database
- Around thirty-one stored procedures, each with transactional guards and rollback handling.
- Optimistic concurrency control via RowVersion, so two editors cannot silently overwrite each other.
- Soft deletes with filtered unique indexes, UTC-only timestamps, and idempotent deployment scripts.
- A diff-merge algorithm for screen updates that preserves foreign-key-referenced identifiers instead of deleting and reinserting.
Delivered
- Organization onboarding — a nine-step gated wizard backed by thirteen stored procedures.
- Module catalogue — fourteen platform modules with hierarchical screens, a layout editor, and stats aggregation.
- Organization edit, with validator parity against onboarding and concurrency-safe writes.
Production readiness
- Established a repeatable audit methodology now applied across modules.
- One pass surfaced ninety-three severity-classified findings across back end and front end, each with file, line, production impact, and remediation.
- Sequenced them into a five-stage dependency-ordered plan with build verification between stages.
- Wrote a nine-document architecture knowledge base and thirteen architecture decision records alongside it.
Front end
Back end and data