Case study 02 / 03
Fisio Nexus
Management of patients and therapy sessions.
- Status
- Deployed web application
- Year
- 2026
- Role
- Full Stack Developer · Software Architecture
- Repository
- Private repository.

Written from the project’s documentation and code; pending the author’s confirmation.
Source: Code, history and tests of the project repository.
01
Context
Spanish-language web application for the person who runs a therapy practice in La Fortuna de San Carlos, Costa Rica.
Responsibilities
- System design and architecture: a single-page application on Supabase, deployed on Cloudflare
- Frontend development with React, TypeScript and Vite: records, schedule, timed sessions and payments
- Backend development in PostgreSQL and PL/pgSQL, with Supabase Auth authentication
- Data modelling and management with versioned SQL migrations and row-level security (RLS) policies
- Design of data access and its role-based permissions
- Integration between the interface, authentication, the database and account invitations
- Interface and user experience design for the practice’s day-to-day operation
- Testing, validation and technical maintenance with Vitest and Playwright
02
Problem
The practice needed to digitise the management of its patients and its day-to-day operations in a single tool.
03
Solution
Built
- Patient records with history and notes
- Schedule and session logging with a timer
- Payments, history and reports
- Configurable rates; each session keeps its historical amount
- Account invitations and access recovery
04
Architecture
Single-page application built with React, TypeScript and Vite, deployed on Cloudflare. Data lives in PostgreSQL and authentication is handled by Supabase Auth; access is controlled through row-level security (RLS) policies per role.
- 01
Interface
React · TypeScript · Vite
- 02
Authentication
Supabase Auth
- 03
Data
PostgreSQL · RLS
05
Technologies
- React
- TypeScript
- JavaScript
- Vite
- PostgreSQL
- PL/pgSQL
- Supabase
- Node.js
- Vitest
- Playwright
- Cloudflare
06
Technical decisions
- Separate roles: administration without clinical access; reception with access to payments.
- Authorization enforced in the database through RLS policies, not only in the interface.
- Public sign-up disabled: access is by invitation.
- Schema changes through versioned SQL migrations.
07
Verifiable results
167
unit tests passing
Project’s local state (8 October 2026)
- 167 unit tests pass on the project’s local state (8 October 2026).
- End-to-end tests with fictitious data, including security and responsive-layout tests in WebKit.
08
Screenshots and evidence
Interface on desktop and mobile
Open full size ((opens in a new tab))
Open full size ((opens in a new tab))Screen gallery
Open full size ((opens in a new tab))Home · Sessions in progress with a timer and today’s appointments.
Open full size ((opens in a new tab))Patients · Search by ID, name or phone.
Open full size ((opens in a new tab))Record · Patient details, preferences and history.
Open full size ((opens in a new tab))Sessions · Timer, alerts and session list.
Open full size ((opens in a new tab))Schedule · The day’s appointments by date and therapist.
Real screenshots of the application in a local environment with a test account and fictitious patients. The interface shows the practice’s brand.
Documentation and tests
- The repository’s unit and end-to-end test suites.