Connected operational workflows
Built patient, appointment, queue, consultation and billing APIs with shared TypeScript contracts and role-aware workspaces. The interface reads real persisted state instead of decorative dashboard metrics.
Connecting each step of a patient visit.
abox connects patient registration, appointments, queue coordination, consultation notes and billing through a Next.js workspace and a NestJS/PostgreSQL API.
Healthcare administration / independent engineering project
Administrative staff coordinating patient records, appointments, queues and billing; the local showcase uses fictional patient records only.
An appointment, a queue position, a clinical note and a payment record describe different parts of the same visit. Keeping them connected requires explicit transitions, role boundaries, persistent records and interfaces that make the next action clear.
Built patient, appointment, queue and billing workflows, PostgreSQL data paths, revocable cookie sessions, server-side role checks and mutation audit trails; integrated supplied abox branding and prepared delivery infrastructure.
Built patient, appointment, queue, consultation and billing APIs with shared TypeScript contracts and role-aware workspaces. The interface reads real persisted state instead of decorative dashboard metrics.
Added transactional queue coordination, server-side role and session checks, mutation audit records, and explicit restrictions around completed visits and paid charges.
Organized the pnpm/Turbo application, Docker packages and PostgreSQL migrations. Prepared a separate EC2/Compose path with a nonpublishing image workflow and backup/restore safeguards; historical Kubernetes and monitoring configurations remain source evidence.
Fresh captures from the current abox production frontend, a local API container and isolated migrated PostgreSQL 17. Login, records, queue transitions and payment persistence use real application paths. All patient records are fictional. The consultation image is retained from the prior Phase 5 capture and is labeled separately. No cloud runtime is implied.
Choose a detail step to use zoom and dimming.
Three demo appointments coexist with two waiting visits and one in care. These are different measures, not interchangeable counts or real clinical activity.
Guided inspection
Step 1 of 6
The administration dashboard combines today's schedule and queue state with links to patient registration and billing. The visible counts reflect actual records created through the local API.
Authentic application captures. These controls explore screenshot evidence; they do not operate the app. Use Zoom to evidence, dim the surroundings, or open the full-resolution image. The text transcript below works without JavaScript.
The administration dashboard combines today's schedule and queue state with links to patient registration and billing. The visible counts reflect actual records created through the local API.
Three demo appointments coexist with two waiting visits and one in care. These are different measures, not interchangeable counts or real clinical activity.
Inspect corresponding screenshot (opens in a new tab)The patient directory provides search and explicit links into queue and consultation workflows. Contact and demographic details remain collapsed until requested.
Add to Queue and Consult target the selected patient. This is a fresh capture of the current abox application, not the earlier Pulse Medical interface.
Inspect corresponding screenshot (opens in a new tab)Appointments keep the patient, clinician, time, reason and explicit visit state together. These three confirmed visits were created through the real API and loaded from PostgreSQL.
Scheduling and queue status are separate workflows. Confirmation does not mean the patient is already in care; polling refreshes the mounted schedule every five seconds.
Inspect corresponding screenshot (opens in a new tab)The fresh queue separates waiting visits, care in progress and completed visits. Two fictional visits are waiting in this capture. Foreground polling refreshes the mounted view every five seconds.
Call Next and per-patient actions belong to the actual queue. This capture shows the waiting state; the separate earlier transition evidence and transaction design remain inspectable.
Inspect corresponding screenshot (opens in a new tab)A doctor-session API request created this SOAP note. The administration session can inspect its subjective, objective, assessment and plan sections; the captured view correctly shows read-only access.
Every section contains fictional verification text. The screenshot demonstrates persisted structure and the admin reading state, not a real clinical assessment or doctor-form submission.
Inspect corresponding screenshot (opens in a new tab)The browser confirmed Mark paid on the synthetic consultation charge. The record changed to PAID, the outstanding amount became PHP 750, and the paid state survived a page reload.
This records a payment received by staff. It does not charge a card or connect to a payment processor. The remaining overdue charge stays outstanding.
Inspect corresponding screenshot (opens in a new tab)Local standalone abox frontend and cached Phase 3A API; real cookie session and disposable migrated PostgreSQL. All patients, appointments and charges are fictional.
Read the Phase 5D capture and verification report


Patient, appointment, queue and billing records cross workflow boundaries. Server-side relationship validation and authorization complement the interface; a convenient UI alone cannot enforce them.
Billing distinguishes legacy amounts requiring review from explicit PHP minor units. The captured frontend refreshes by five-second polling; gateway source does not prove WebSocket use.
Historical Kubernetes, Terraform, CI/CD and monitoring definitions remain source evidence. The newer EC2/Compose preparation adds file secrets, bounded services and backup/restore tooling, but the intended deployment environment has not passed its eligibility gate. No running AWS or Kubernetes system is claimed.
Login establishes an HttpOnly cookie. Cookie-authenticated mutations validate the browser origin, while backend role guards enforce access beyond the frontend navigation.
apps/backend/src/auth/session.ts (opens in a new tab)Adding a patient uses an advisory transaction lock to allocate the next queue number and reject a duplicate active visit. Calling next locks the selected waiting row and skips rows already claimed by another transaction.
apps/backend/src/queue/queue.service.ts (opens in a new tab)The Drizzle database service commits each audited mutation and its audit event together. Audit details record changed field names while filtering password/token names rather than copying clinical contents or credentials.
apps/backend/src/database/database.service.ts (opens in a new tab)The new Compose path isolates database access, loads file secrets, bounds services and makes migration/backup/restore steps explicit. Local amd64 preparation does not verify the intended cloud account, ARM64 runtime or full instance recovery.
deploy/aws-demo/README.md (opens in a new tab)Upstream results below are attributed to their recorded checks. This portfolio change does not rerun every application suite.
Seven abox screens/states were captured from the real local application. The synthetic PHP 1,250 charge changed to PAID and stayed paid after reload. The isolated PostgreSQL fixture contained four patients, three appointments, one note and 17 audit events. These are test records, not adoption metrics.
The Phase 1A report records 32 backend unit tests, 42 PostgreSQL end-to-end tests and eight browser cases including all six roles. The later branding report records 19 rendering states using synthetic API stubs; those establish branding only. Frontend lint/format wrapper failures and the successful direct Biome fallback remain documented.
The current preparation report records offline safety tests, Compose checks, amd64 image builds and a disposable local runtime/restore rehearsal. The intended account eligibility gate is unresolved; native ARM64, remote bootstrap, live HTTPS and full instance recovery are not established.
Working implementation and release readiness have different evidence requirements.
Source links use inspected revision 21d9b79. The workflow screenshots were recaptured for this portfolio change with genuine sessions and a disposable database. Branding-only stub captures and historical infrastructure reports are identified separately.