About this software
About ClinicCare – Clinic Management System
ClinicOS is a React 18, TypeScript and Vite web app with an optional Supabase backend (Auth and PostgreSQL with row-level security). Without Supabase it runs as a browser-only fictional demo; with Supabase it becomes a shared multi-user system for one clinic. It covers four roles (admin, doctor, reception, patient) across 16 sections: dashboard, appointments, patients, consultations, prescriptions, lab, billing, pharmacy, doctors, services, expenses, reports, settings, signups, notices and a patient care portal. Access rules are enforced in the database and checked by a 126-test allow/deny SQL suite, though the authors note this was run on plain PostgreSQL 16 with a stand-in for Supabase Auth, not on a real Supabase project. It is administrative software, not a medical device; no payment gateway, SMS/email reminders or insurance claims are included.
Why ClinicCare – Clinic Management System
What makes it better
than the alternatives
- 01
Database-enforced roles
Row-level security in schema.sql decides access; reception cannot read consultations or prescriptions, and doctors see only their own patients and no billing.
- 02
6 Allow/deny database tests
A SQL suite covers patient isolation, cross-clinic isolation, double-booking, overpayment, negative stock and sign-up spoofing, run in a rolled-back transaction.
- 03
Patient portal with approval flow
Patients self-register as pending, an admin approves them, and they then request or cancel appointments and see summaries, prescriptions, released lab results and bills.
- 04
Runs as a demo or a live system
Fictional demo logins work with no backend, and are disabled when Supabase is configured; the build refuses demo auto-login combined with a Supabase URL.
- 05
Ready-to-deploy packaging
Includes a Dockerfile with Nginx, docker-compose, and Vercel and Netlify configs, plus setup guides, a security-scan script and a CI workflow.
Patients
- Registration and demographics
- Allergies and long-term conditions
- Search and directory
- Portal-account approval via the signups screen
Appointments
- Booking by doctor and time slot
- Check-in and status tracking including completed
- no-show and cancelled
- Patient booking requests and cancellations
- Double-booking prevented in browser and database
Consultations
- Complaint
- diagnosis and notes
- Vitals: BP
- pulse
- temperature
- weight
- SpO2
- Follow-up date
- Vitals range checks in the database
Prescriptions
- Itemised medicines with dose
- frequency
- days and instructions
- Allergy warning
- Printable prescription sheet
Lab
- Order tests and collect samples
- Enter results
- Release results to the patient
Billing
- Itemised invoices with discounts
- Partial payments recorded as a ledger
- Automatic paid/partial status and outstanding balance
- Overpayment blocked by the database
Pharmacy
- Medicines
- batches and expiry
- Reorder levels
- Low-stock and expiring alerts
- Stock cannot go negative
Reports and Admin
- Collections versus expenses and visit outcomes
- Completed visits per doctor and unpaid invoices
- CSV export
- Doctors
- services and prices
- expenses
- clinic profile and currency
- Notices to everyone
- staff only or patients only
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| SQL | — | — | Database | 36.4% |
| TypeScript (React) | — | — | Front-end | 35.3% |
| TypeScript | — | — | Front-end | 14.8% |
| CSS | — | — | Styling | 12.2% |
| PowerShell | — | — | Scripts | 1% |
| HTML | — | — | Front-end | 0.3% |
- Primary language
- TypeScript 5.9 (React 18.3 frontend)
- Framework
- React 18.3 + Vite 6.4, with optional Supabase backend
- Database
- PostgreSQL 16 (via Supabase; tested on PostgreSQL 16)
- Authentication
- Supabase Auth email and password, with role-based access; demo logins for browser-only preview
- Licence
- Single-site
- Screens
- 19
- Database tables
- 15
- Supported languages
- English only; no RTL support evidenced
- Browser support
- Modern evergreen browsers (responsive layout; no explicit browser matrix in the digest)
| Minimum | Recommended | |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB (static Nginx container; database hosted on Supabase) | 2 GB (Docker build plus Nginx) |
| OS | Node.js 22+ and npm 10+ for build; Nginx on Alpine Linux for runtime | Node.js 22+ and npm 10+ for build; Nginx on Alpine Linux for runtime |
| Est. monthly hosting | $25 | $25 |
Create the database first, then build and run the container.
cp Project/.env.example .env
# edit .env: set VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY
docker compose up -d --build
The app is served on port 8080 by default (set PORT to change it).Run the Docker steps above on a Linux server with Docker and Compose installed. Put a TLS reverse proxy in front of port 8080.
The repository includes vercel.json and netlify.toml.
cd Project
npm ci
npm run build
npx vercel --prod
Set VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY in the hosting dashboard before building.psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f database/schema.sql
npm run test:db # on a disposable database onlyQuality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (4 minor)
No real credentials found; one public demo password ships in source (weak default); rls-based authz is well designed, but the schema and policies were not visible and demo logins are public; no injection paths visible, but schema and cloudstorage were not provided, so db rules cannot be fully verified; build mostly reproducible; minor doc and config inconsistencies, howtosetup.md not verified. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.