Felipe Gazolla.
← Projects
Jul 2025

Medical Clinic System.

Healthcare management: patients, scheduling, medical records and finances — all fictitious.

  • Health
  • SaaS
  • Operations

Demos are interactive on desktop — on mobile, see the preview just below.

Navigable demo with fictitious data

Problem

Clinics need to organize scheduling, patients, medical records, finances and inventory with extra care for privacy.

Solution

Dashboard, patients, appointment scheduling, mocked medical records, payments, accounts payable/receivable, inventory, reports and teleconsultation — with 100% fictitious data.

My role

Modeling of the healthcare domain, architecture and development.

Outcome

The first strong administrative system, with attention to privacy and fictitious data.

Demo stack

Next.jsTypeScriptSCSS ModulesFictitious data

How it works.

Description of the real product (frontend + backend). The demo embedded above is its demonstration version, with fictitious data.

A management system for a medical clinic that covers the administrative and clinical cycle in one place: patients, appointment scheduling, medical records, payments, finances (accounts payable/receivable and doctor payouts), inventory, campaigns and reports — with role-based access profiles (administration, doctor, reception and finance). A Next.js frontend consumes a Fastify/Prisma API over PostgreSQL, with the healthcare domain modeled end to end. Because this is healthcare, the demo uses 100% fictitious data — no real patient data at all.

Architecture

  • Frontend in Next.js (App Router) consuming a REST API in Fastify 5 with Prisma over PostgreSQL.
  • Healthcare domain modeled in ~12 relational entities: Patient ↔ Appointment ↔ Payment/Teleconsultation (1:1), Medical Record per patient and Campaign ↔ Patient (N:N), plus Inventory, Accounts payable/receivable and Doctor payout.
  • JWT authentication (fastify-jwt) with four access roles — ADMIN, DOCTOR, RECEPTIONIST and FINANCE.
  • Business statuses modeled as enums: appointment (scheduled/completed/canceled), payment and payout (pending/paid) and campaign channel (email/SMS/WhatsApp).
  • Privacy at the center: because it handles sensitive health data, the demo works only with fictitious data and in read-only mode.

Modules

  • Dashboard: clinic indicators and the day's schedule
  • Patients: registration, contact and history
  • Appointment scheduling: scheduled/completed/canceled status
  • Medical records: clinical entries per patient
  • Payments: charges per appointment (pending/paid)
  • Accounts payable and accounts receivable
  • Doctor payouts: closing per doctor and period
  • Inventory: items with an alert level for restocking
  • Campaigns: email, SMS and WhatsApp with send status
  • Teleconsultations: room per appointment (start/end)
  • Reports: schedule, patients, billing and NPS

Engineering highlights

  • Healthcare domain modeled end to end in Prisma — appointment linked to payment and teleconsultation (1:1) and campaigns linked to patients (N:N).
  • Complete clinic finances: payments per appointment, accounts payable/receivable and doctor payouts per period.
  • Inventory control with an alert level (alertAt) to flag restocking.
  • Multichannel campaigns (email/SMS/WhatsApp) with send status per patient.
  • Role-based access control (ADMIN/DOCTOR/RECEPTIONIST/FINANCE) with JWT.
  • Explicit concern for privacy: sensitive data treated as fictitious, read-only demo.

Real product stack

Frontend
Next.js 15React 19TypeScriptTailwind CSSAxios
Backend
Fastify 5Node.jsTypeScriptPrismaPostgreSQL
Auth & access
JWTfastify-jwtRBAC (4 roles)
Quality
Biomestrict TypeScript