About the Builder
Medcord is built by Oluwaferanmi Adeniji, a senior software engineer formally recognised by the Nigerian Presidency. On 1 November 2020, at the maiden National Youth Day celebration at the State House Conference Centre in Abuja, President Muhammadu Buhari (represented by FCT Minister Muhammad Bello) recognised him as one of 10 national winners of the 60 Day App Challenge organised by the Federal Ministry of Youth and Sports Development under Minister Sunday Dare — selected from thousands of entries by technical partners, and awarded ₦1,000,000 and a laptop by the Federal Government of Nigeria. (Read the article.) Medcord brings that same engineering ambition to healthcare.
Problem Statement
Hospitals — especially smaller and mid-sized ones — run on a patchwork of disconnected tools and paper: patient records here, lab results there, asset/equipment tracking in a spreadsheet. Each hospital also needs its own isolated data and workspace. Building one platform that multiple hospitals can self-onboard onto (multi-tenant), covering patient management, EMR, labs, and assets, with the data isolation and reliability healthcare demands, is a large systems problem.
Proposed Solution
Medcord is a multi-tenant hospital management SaaS. A hospital signs up, provisions a workspace, and runs patient management, electronic medical records (EMR), lab workflows, and asset tracking from a single platform — backed by a Go API, a React 19 web app, and a dedicated marketing landing page.
Full Solution Details
- Multi-tenant onboarding — hospitals self-register and get an isolated workspace.
- Modules — patient management, EMR, labs, asset tracking (with QR/barcode scanning per the icon set).
- Three surfaces — backend API, reviewer/clinical web app, and a landing page; an admin build plan exists alongside the main app.
- i18n from day one — message keys with en/es/fr translations baked into the backend's shared constants.
- Phased delivery — the frontend is built in numbered phases (4/5/6, 7–10) against a spec that is pre-verified against the actual backend source before any code is written.
Technical Documentation
Backend — Go 1.25 + Gin, MongoDB via the official driver, structured logging with log/slog, rate limiting via ulule/limiter, security headers + CORS via gin-contrib, auth with golang-jwt/v5 + bcrypt, and request validation through go-playground/validator (Gin binding tags). Clean idiomatic layout: cmd/server (entry + graceful shutdown), internal/{app,configs,controllers,deps,middlewares,routes,shared,utils}, with deps/ wiring built once at startup and shared/types exposing generic ServiceResult[T] and Page[T]. It hard-fails on a missing JWT_SECRET (production safety, not a warning), and flips to Gin release mode + JSON logs when APP_ENV=production. Make targets cover run/dev (air live-reload)/build/test/lint/tidy.
Frontend — React 19 + Vite + TypeScript (strict) on Feature-Sliced Design, TanStack Query v5, React Router v6 (lazy), Tailwind, the author's own @medcord/ui, @medcord/api, @medcord/core packages, and meemaw utilities. The team enforces an unusually strict, spec-driven convention set (documented in phase specs): no .map()/&&/raw ternaries in JSX — instead meemaw's <Repeat>, <Show>, <Switch>/<Case>, and a <Loadable> wrapper around every data-fetching screen; readonly *Props interfaces co-located with components; named exports only; and EP/endpoint paths verified against the real backend routes before implementation.
Tech Stack
Go 1.25, Gin, MongoDB, slog, golang-jwt, bcrypt, go-playground/validator, ulule/limiter, gin-contrib/secure+cors (backend); React 19, TypeScript, Vite, TanStack Query v5, React Router v6, Tailwind, meemaw, internal @medcord/{ui,api,core} packages (frontend).
System Design
Hospital ──signup──► Workspace (tenant-isolated)
│
React 19 FE (FSD) ──@medcord/api (typed EP)──► Go/Gin API
<Loadable> screens │ JWT (hard-fail if no secret)
<Repeat>/<Show> (no raw JSX) │ slog · rate limit · CORS/secure
│ ▼
│ internal/: controllers → (services/repos) → MongoDB
│ shared/types: ServiceResult[T], Page[T] (generics)
▼ shared/constants: i18n message keys (en/es/fr)
Modules: Patients · EMR · Labs · Assets (QR/barcode)
Smart Architectural Decisions
- Fail fast on misconfiguration. Hard-failing on a missing
JWT_SECRET(rather than warning) is a deliberate production-safety stance — the app refuses to boot insecurely. - Generics for a uniform result/paging contract.
ServiceResult[T]andPage[T]give every endpoint a consistent, type-safe envelope and pagination shape across the Go codebase. - Spec-verified, phased frontend. Pre-verifying every API path, response-unwrap, and icon name against the actual backend before coding each phase eliminates the integration guesswork that usually causes FE/BE drift — a rigorous, almost contract-testing-like discipline.
- JSX as declarative components, enforced. Banning
.map()/&&/ternaries in favor of<Repeat>/<Show>/<Loadable>standardizes loading/empty/list rendering across a large app (and dogfoods meemaw). - i18n + multi-tenancy from the start — both are notoriously painful to retrofit; building them in early shows architectural foresight for a healthcare SaaS.
Impacts
A unified, multi-tenant platform that lets hospitals run patients, EMR, labs, and assets from one workspace — engineered with production-safety defaults, a type-safe Go core, internationalization, and a frontend built under strict, drift-proof conventions.
Demonstrated Skills
Go backend engineering (Gin, idiomatic internal/ layout, generics, slog, graceful shutdown, security middleware); multi-tenant SaaS + healthcare domain modeling (EMR/labs/assets); i18n; React 19 + Feature-Sliced Design + monorepo packages; contract-first FE/BE integration discipline; production-safety mindset (fail-fast config).