Education Platform customization
Course Marketplace SaaS Cloud Re-Platforming
Re-platformed a licensed multi-tenant course-selling SaaS onto S3-compatible object storage, centralising how every part of the application stores and resolves files.
What we did
- A single URL-generator abstraction resolving local and object-storage files
- One consistent upload path across ~23 controllers instead of scattered storage calls
- Placeholder fallback when a tenant’s file is missing from storage
- Self-update mechanism and version upgrade ahead of the migration
- HTTPS enforcement and host configuration
Outcome
Replaced scattered per-controller storage calls with one abstraction, so a live multi-tenant platform degrades gracefully rather than breaking when a file hasn’t migrated.
This was engineering work on a licensed platform. The base product belongs to its vendor; the deployment, migration and hardening described here are ours.
Written up on the blog
Customise It, Then Keep It Patchable: Running a Licensed Platform After Launch
How to customise a licensed SaaS script and still apply vendor updates: a self-update path, isolated customisations and a clear shared workflow.
3 min read
Moving a Live Laravel Platform's Uploads to Object Storage: The Playbook We Reuse
The playbook we reuse to move a live Laravel app's uploads from local disk to S3-compatible object storage without breaking downloads or previews.
4 min read
One URL Generator Instead of Two Dozen Controllers: File Resolution in a Multi-Tenant SaaS
Why we replaced storage calls scattered across ~23 controllers with one URL generator, and how a placeholder fallback keeps a multi-tenant SaaS up.
3 min read
More work
Have something you need to build?
Whether you’re starting with an idea, improving an existing product, or trying to rescue unfinished software, we’ll help turn the next step into a clear plan.
No sales presentation. We start with the problem.