The original VMS was vendor-built and then abandoned — no documentation, no source handover, just a running production database. I reverse-engineered 7 core business modules through stakeholder interviews and database analysis, then rebuilt the entire system from zero in Clean Architecture with CQRS, serving 2,300+ employees, 700+ daily visitors, and 150+ tenant companies.
- Zero-documentation reverse engineering: mapped business workflows entirely from stakeholder interviews and live database analysis — no spec, no codebase, no handover from the original vendor
- Clean Architecture foundation: established centralized exception handling, CQRS command/query separation via MediatR, and a layered structure that reduced onboarding friction for new contributors
- Database migration with zero downtime: migrated and restructured a corrupted legacy database into a new normalized schema without interrupting operations for 2,300+ employees
- Dynamic RBAC: implemented role and permission system using ASP.NET Core Identity with custom claims, replacing a hardcoded access model that couldn't scale across 150+ tenant companies
- Production IIS deployment: handled full SSL setup (PFX binding, URL Rewrite HTTP→HTTPS redirect, app pool identity SQL permissions) on subdomain.empc.eg
A production-deployed REST API that handles delivery scheduling with complex business rules: category-specific time windows, day restrictions, per-slot capacity limits, and real-time availability — all computed on demand rather than persisted, so the data never goes stale.
- Domain-driven business rules: encoded category-specific time windows, day restrictions, and capacity limits directly into the domain layer — maintainable and independently testable without touching the database
- On-demand slot generation engine: computes delivery slot availability per product category in real time, automatically filters at-capacity slots, and returns only valid options — no pre-generation, no stale data
- CQRS with MediatR: full command/query separation on a personal project, proving the pattern without a team forcing it
- Comprehensive test coverage: xUnit tests across the entire application layer, not just happy paths — validates business rule enforcement under edge cases
- Live production deployment: deployed to a public endpoint with full Swagger documentation; API is callable right now
An analytics API built around one hard constraint: ingest large Excel/CSV uploads fast and cleanly, without corrupting the live dataset if the file is malformed. The ingestion pipeline went through three iterations before hitting 1M+ rows in 0.35 seconds.
- Pre-write schema validation: validates every uploaded Excel/CSV file against the expected schema before a single row touches the database — prevents data corruption against live production datasets under tight deadlines
- 1M+ rows in 0.35 s: achieved through streaming parsing (CsvHelper), 20K-row batching, and SqlBulkCopy via EFCore.BulkExtensions — not a single approach but a pipeline where each layer handles a different bottleneck
- Analytics endpoints: profit reporting, top/bottom-performing product rankings, and parameterized product search — designed for real business queries, not toy examples
A two-application healthcare platform for a celiac patient association: an admin management system and a member-facing mobile app backend. Led the backend team through the full delivery — architecture decisions, task breakdown, API design, and final integration.
- Two-app architecture: separate admin system and member mobile app backend, sharing domain logic but with distinct access models and API surfaces
- Full feature coverage: inventory management, appointment scheduling, insurance processing, and an e-commerce module with role-based access control across both apps
- Team lead: responsible for backend architecture decisions, task delegation, and integration — first time leading a team under academic deadline pressure