Selected projects demonstrating end-to-end delivery, complex system design, and production-grade implementation.
A peer-to-peer borrowing and rental platform designed to allow users to safely lend and rent everyday items. Developed from initial concept through to a fully production-ready platform, including mobile apps, payments, identity verification, and complex rental workflows.
Peer-to-peer marketplaces carry inherent risk: payments between strangers, identity verification, fraud prevention, and complex lifecycle state management. Early prototypes validated the idea, but production required a complete rethink around security and reliability.
Rebuilt with a production-first mindset. Designed auditable rental state transitions, integrated Stripe with careful webhook handling, implemented KYC checks, and built AI-powered search. Delivered a single coherent platform across web, iOS, Android, and admin tooling.
A fully production-ready marketplace platform with secure payment flows, identity verification, clear operational tooling via an admin dashboard, and a system designed to evolve without rewrites.
An open-source, multi-tenant academic research library designed to allow institutions to manage, distribute, and explore academic documents via a public interface. Developed from conception through to a production-ready system.
Academic platforms require clear tenant separation, robust access controls, scalable document delivery, and clean public-facing UX that remains fast and discoverable. The system needed to balance institutional control with public accessibility.
Designed a multi-tenant architecture with clear isolation boundaries. Built administrative tooling for managing institutions, documents, and metadata. Delivered a public-facing interface optimised for exploration using server-rendered architecture.
A flexible academic distribution platform with clear separation of concerns between tenants and users. A maintainable, extensible system suitable for open-source collaboration.
Hydro International relied on an internal project management and time-tracking system originally built in 2003 using a mix of C# ASP and Ruby. Brought in to modernise the system without disrupting active users or business operations.
Business-critical internal tooling with an extremely old codebase. No tolerance for downtime. Existing users depended on current workflows. A full rewrite would have been risky and disruptive.
Incremental, piecemeal migration rather than a big-bang rewrite. Rebuilt functionality gradually in modern Ruby on Rails with Hotwire. Ran old and new systems in parallel during transitions. Improved UX while preserving familiar workflows.
A modern Rails 7 application running on Windows infrastructure. Zero downtime for users during migration. Improved usability and maintainability. Reduced long-term operational risk.
Ydentity was preparing to launch its platform and needed improvements across payments, integrations, and overall stability. Joined to extend an existing React application and backend services.
Inheriting an unfamiliar codebase. Implementing secure payment flows. Integrating with a SAML-based Experian platform. Maintaining a clean user experience under security constraints.
Implemented Stripe subscription and one-off payment systems. Integrated SAML authentication with external partners. Focused on security-first design without harming UX. Stabilised existing functionality in preparation for launch.
Reliable subscription and billing flows. Secure third-party authentication. A platform ready for real customers.
I primarily work with Ruby on Rails, Hotwire, React, React Native, C#, and Node.js, and have delivered systems across AWS, GCP, and Azure. I've worked with relational and non-relational databases including PostgreSQL, MySQL, SQL Server, MongoDB, and DynamoDB.
I favour server-rendered architectures such as Hotwire where appropriate, as they provide excellent performance, accessibility, and SEO without unnecessary complexity.
Let's discuss your technical challenges. No pitch, no pressure—just an honest conversation about what you're facing and whether I can help.
Even if we don't end up working together, you'll leave with a clearer picture of your options.