← Back to projects
Case Study

SaaS Platforms

Full-stack commercial applications built for live clients: a SKU management system, an e-commerce platform, and a secured internal business API with OAuth2 authentication.

ReactTypeScript.NETDjango REST FrameworkPostgreSQLDockerJWTOAuth2

Client-owned commercial software. No screenshots or links. This page documents my individual contributions as a graduate developer on a commercial engagement.

SKU management platform

A full-stack SaaS application built for a product-based business that needed to manage complex SKU hierarchies across their catalogue and storefront. I built the React TypeScript frontend and the .NET API layer from scratch, with PostgreSQL handling the relational product data.

  • ·React TypeScript frontend with a product catalogue management UI for creating, editing, and bulk-updating SKUs across categories
  • ·.NET REST API handling product CRUD, variant management, and category relationships
  • ·PostgreSQL schema designed to accommodate hierarchical product structures without sacrificing query performance
  • ·JWT authentication and per-tenant data isolation built in from day one

E-commerce platform

A separate client project: a full e-commerce application built to go live with real transactions. Involved building the storefront, cart, and checkout flow on the frontend alongside the order management API on the backend.

  • ·React TypeScript storefront with product browsing, cart state, and checkout flow
  • ·.NET API handling orders, inventory, and payment integration
  • ·Containerised with Docker for consistent local and production environments

Internal business API

A Django REST Framework API built to serve an internal business application, with a focus on access control and security.

  • ·Django REST Framework with token-based OAuth2 authentication and role-based access control
  • ·Endpoint design to serve a React frontend with varying permission levels per user
  • ·Containerised deployment via Docker with environment-specific configuration

What this period taught me

Building for live clients with real data raised the standard for everything. Data integrity, access control, and handling failure cases stop being optional when real users are depending on the system. Working across .NET and Django in parallel also sharpened my sense of where the two ecosystems make different trade-offs. .NET is faster to reach for when strong typing and a mature ORM matter most. Django wins when you need an API up quickly with opinionated structure baked in.