The problem
Attachmore lets businesses send and receive large files. Its backend ran on .NET Framework 4.6.2: Web API 5.2, MVC5, a 52-page WebForms admin portal, Telerik controls and an EF6 EDMX model. The frontend needed a refresh, and billing needed modern PayPal support.
Backend: .NET Framework 4.6.2 → .NET 10
We migrated the 7-project, ~800-file solution in phases: isolate legacy code, convert batch by batch, and keep the solution building at every step.
- Web API 5.2 and MVC5 moved to ASP.NET Core with JWT Bearer auth, CORS and global exception handling (19 API controllers).
- The 52-page WebForms admin portal was rebuilt as ASP.NET Core MVC: about 50 controllers and 57 Razor views.
- Telerik, WebForms, System.Web, Ionic.Zip and EF6 EDMX were removed; AWS SDK and JWT/Twilio version conflicts were fixed; data access moved to Microsoft.Data.SqlClient.
- A deployment script now builds, publishes and deploys to IIS on AWS EC2.
Frontend: Angular 22 SSR
- A new landing site with a live upload box in the hero, a user dashboard and upload/download flows.
- A reusable design system, embeddable upload/download widgets customers place on their own sites, and a branded download page builder.
- Account features: sub-users, guest upload links, link settings, transfer history, stats, invoices and plans.
- Deployed with SSR behind Nginx on Ubuntu (AWS) with a server-side API proxy.
Payments: PayPal v2
Monthly and annual subscriptions with mid-cycle upgrades, one-time payments, verified webhooks and a saved-card billing scheduler. We also built a marketplace flow using PayPal's multiparty APIs, where sellers are paid directly and the platform takes an automatic commission (tested in sandbox).