







Sign in
// Overview
Sea World Med is a marine medical intelligence platform that helps maritime medical providers keep every vessel's medical chest compliant with its flag state's regulations. Shipboard captains and shoreside clinicians record stock, consumption and monthly usage, while admins manage customers, fleets, vessels, regulatory scales, the SKU catalogue, supplier packaging imports and units of measure. I built the React frontend end to end on top of a .NET REST API: a strict three-layer architecture (components → containers → pages) enforced by lint rules, Zod validation on every API response, around 30 feature modules, and CI/CD to Azure. The hardest part was not the code but the product side. The client's domain knowledge lived in spreadsheets, regulations and conversations, so I ran sessions with them to pull out the real data rules (flag-state medical scales, unit conversions, packaging imports, user roles), turned their ideas into user stories and acceptance criteria, and agreed every API contract with the backend team before building it.
// Tech Stack
Frontend
Backend
Tooling
// Tags
Built the frontend end to end as a React 19 SPA over a .NET REST API, with a three-layer architecture (components → containers → pages) whose boundaries are enforced by oxlint import rules
Validated every API response with Zod at the API boundary and normalised backend errors in Axios interceptors, so contract changes fail loudly instead of silently breaking screens
Delivered the full auth suite: email-link onboarding, password policy with strength meter, two-factor authentication by authenticator app (QR / manual key) or email code, trusted browsers and token refresh
Built the data-dense operations modules — customers, fleets, vessels, flags, regulatory medical scales, medical items, SKU catalogue, packaging imports, UOMs, consumption and monthly usage — plus role-based access with per-user permission overrides and audit history
Worked on the PO/PM side with the client: ran requirement sessions, turned spreadsheets and loosely described ideas into user stories and acceptance criteria, and mapped business rules (flag-state scales, unit conversions, packaging) into clear specs
Aligned API contracts with the backend team through written backend requests and a shared bug log, and ran QA/UAT feedback rounds with the client before go-live
Set up CI/CD to Azure with GitHub Actions, gated by typecheck, lint and 270+ Vitest/Testing Library test files, plus Husky pre-commit hooks