DEV3 Technologies home

DEV3 Curavane – Multi-Branch Hospital Management System (OPD, IPD, Pharmacy, HR, Billing) on Next.js + MongoDB

Self-hosted hospital system for a group of branches on Next.js and MongoDB: OPD, admissions, bed board, OT, lab, pharmacy, billing, HR and payroll, a hospital website and a patient portal. Try the live demo (read-only). Web only.
by DEV3 TechnologiesVerified Author(0) 0 sales 6 viewsUpdated 13 Nov 2026

Video tour. Pick a section below to browse 24 screenshots in 1 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Mobile web0:16

DEV3 Curavane is a self-hosted hospital management system for a group of hospitals or clinics, built by DEV3 Technologies on Next.js 16 (App Router and Server Actions) and MongoDB. One installation runs a hospital group with many branches. Each branch has its own timezone, currency, tax, letterhead, wards and stock, and staff see only the branches they are allowed to. It is a responsive web app: it works in a phone browser, and there is no native mobile app.

Try the live demo: it is read-only, with one-click logins for 19 roles on the sign-in page (password demo-pass-2026). All names, hospitals and data are fictional (the Larkmoor Health demo group, three branches). Payments, SMS and email are simulated: nothing is charged or sent.

Front desk and OPD

  • Patient registration with a duplicate check, one MRN across branches, a printable MRN card, merge of duplicates, consents and policies.
  • Appointments with a doctor calendar, live slots, schedules and leave blocks, a waiting list, token queue, kiosk check-in and a TV display that shows no patient names.
  • Consultation workspace: vitals, history, ICD diagnosis (a starter list, with a note to load your licensed code set), orders, prescriptions with allergy and interaction warnings and an audited override, prescription PDF.

Inpatient care

  • Six-step admission wizard (patient, payer, package, bed, consent, deposit) and a wristband.
  • Ward, room and bed masters with day and hourly tariffs, a live bed board, reservations with expiry, transfers between beds, wards and branches, room booking.
  • Inpatient chart with rounds, nursing notes, vitals trends, orders, diet and I/O, a nurse station and a 24-hour MAR with late and missed doses and witnessed controlled doses.
  • Emergency board with triage levels, unknown-patient registration and an MLC register.
  • Operation theatre calendar with room, surgeon and anaesthetist conflict checks, a WHO-style safety checklist and consumables issued from the OT store.
  • Discharge with a checklist, summary PDF and a bill-clearance rule: discharge with unpaid dues is blocked unless a permitted role approves.

Diagnostics, pharmacy and store

  • Laboratory: collect, in-lab and verify queues, reference ranges by sex and age, critical values, outsourced tests between branches, signed report links.
  • Radiology: modality schedule, report templates and image attachments.
  • Pharmacy: first-expiry-first-out dispensing, substitution, POS with split payment, returns, a controlled-drug register with witness, expiry and low-stock alerts, ward drug indents.
  • Store and procurement: stores, indents, requisitions, purchase orders, goods receipts by batch and expiry, supplier invoices and payments, inter-branch transfers, stock counts and adjustments, reorder suggestions.

Billing, insurance and accounts

  • OPD counter bills, a live bill for each admission, packages with absorbed and excluded items, deposits, interim and final bills, discount, write-off, refund and re-open approvals with role limits, credit notes and cash close by cashier.
  • Insurance and TPA: pre-authorisations, payer split with approved ceilings, claims, settlement and deductions, insurer receivables.
  • Doctor revenue share and referral commission, simple accounts (day book, expenses, other income, profit and loss).

HR and payroll

  • Employees, documents, contracts, licence expiries, onboarding and exit checklists, duty roster with conflict rules, attendance with CSV import, leave with two-level approval, overtime, loans.
  • Payroll with salary structures, a monthly run, approve, lock and pay, branded payslip PDFs. A locked month refuses changes.

Support services

Blood bank (donors, screening, cross-match, issue), ambulance fleet and trips with charges posted to the bill, housekeeping tasks created on discharge, linen ledger, maintenance tickets and assets with AMC dates, diet orders and a kitchen list.

Reports and dashboards

A group dashboard (census, occupancy, revenue and payroll across branches), a branch dashboard with the Census Strip, a "My day" view for roles without module access, and about 60 reports with date and branch filters and CSV and PDF export.

Access, safety and audit

  • 19 built-in roles plus custom roles, a permission matrix with own, department, branch or all scope, and branch-scoped staff.
  • Two-factor sign-in, lockout, password age, session list with remote sign-out, an audit log with before and after values, break-glass access.
  • Every module has list, view, add, edit and delete. When a delete is blocked, the app tells you why.

Public website and patient portal

  • A hospital website with departments, doctors, branches, online booking with a simulated SMS code, contact form and pages managed in a built-in editor.
  • A patient portal: appointments, reports, prescriptions, bills with online payment (simulated gateway), documents and family links.

What's in the package

  • Full TypeScript source of the web app and the background worker, .env.example, the HTML documentation and a START-HERE guide.
  • 1,600+ automated tests (Vitest), including race tests on real MongoDB, static checks on access control, and browser smoke flows.
  • A demo seeder: three branches, about 100 staff, 300 patients, six months of activity and live today's data.

Requirements

  • Node.js 20.9 or newer and npm
  • MongoDB 6 or newer (a single node works; a replica set is recommended)
  • Your own SMTP account and payment gateway keys if you want real email and payments. Out of the box, email goes to a log and payments are simulated.

Good to know

  • It is not a certified clinical system. You are responsible for clinical content, licensed code sets and local regulations. Controlled drugs in the demo use generic class labels.
  • SMS is simulated and has no provider connector. Payments use a simulated gateway until you connect your own.
  • Web only: responsive for phones and tablets, with no native iOS or Android app.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Curavane passed before release.

The engineering behind Curavane: one hospital group with many branches, a permission matrix with scope, bed-day billing on a midnight census, one stock kernel and race tests on real MongoDB.

The problem it solves

A hospital system must keep many branches apart while sharing one patient number, charge a bed correctly across midnight, never double-post a payment on a double click and never let two nurses dispense the same dose. Every change has to leave an audit trail, and a locked payroll month must stay locked.

Architecture and approach

Curavane is one Next.js 16 application on MongoDB, written in TypeScript, with a background worker. Every branch record carries a branch id and every read goes through a scope filter built from the signed-in user's role. Patients and staff are group-wide, so one MRN works in every branch.

Roles and permissions

There are 19 built-in roles and custom roles. A permission is a module and action with a scope: own, department, branch or all. Menus, buttons and server actions use the same check.

Money

Amounts are whole cents with half-up rounding in one place. Each invoice stores the currency rate it was created with. All charges go through one posting service that refuses duplicates by request key.

Beds and stock

Bed-days follow a midnight census with a configurable discharge cut-off. Stock moves only through one kernel, by batch and expiry, first-expiry-first-out, shared by pharmacy, store, OT and ward indents.

Concurrency and audit

The app does not need MongoDB transactions. Writes that must not race use conditional single-document updates, unique and partial indexes and short locks. Every write records who, when and a before and after diff, and locked periods refuse changes.

Quality gates and results

The package ships with more than 1,600 Vitest tests, race tests on real MongoDB (double-clicked payments, parallel refunds, parallel dispense), static checks for server-action guards and headless browser flows at phone and tablet widths. Known limits: it is not a certified clinical system, SMS is simulated, payments use a simulated gateway until you connect your own, and there is no native mobile app.

Tech stack

Area Technologies
App Next.js 16, React 19, TypeScript
Data MongoDB, Mongoose 9
Documents React PDF, date-fns

Inside the build

Hospital website: Departments, doctors and branches with a book-an-appointment call to action. Hospital website — Departments, doctors and branches with a book-an-appointment call to action.

Role sign-in: One-click demo sign-in for every hospital role, from doctor to auditor. Role sign-in — One-click demo sign-in for every hospital role, from doctor to auditor.

Guides & articles

Practical guides and engineering write-ups for DEV3 Curavane.

Hospital management system: 7 things to check before you pick one

Last updated
Hospital management system: 7 things to check before you pick one: DEV3 Curavane

Hospital software is easy to demo and hard to trust. The questions that matter come after the first patient is registered. Here are seven things to check before you pick a self-hosted system, with DEV3 Curavane as the worked example. You can also try the live demo (read-only, with a demo login for each role).

The group dashboard across branches

1. Can it run many branches?

Check that each branch has its own timezone, currency, tax, wards and stock, that staff see only their branches, and that one patient number works across all of them.

The reports hub with branch and date filters

2. Is there a live bed board?

Look for wards, rooms and beds with tariffs, reservations that expire, transfers and bed-days that follow a clear midnight rule.

The live bed board

Video tour of Curavane

3. Do the bills add up?

OPD and admission bills, packages, deposits, insurer and patient split, refunds with approval limits and a cash close. Amounts should be whole cents with one rounding rule.

The pharmacy dispense screen

4. How is stock handled?

Pharmacy, store and operation theatre should share one stock ledger by batch and expiry, with a controlled-drug register and low-stock alerts.

5. Who can do what?

A permission matrix with own, department, branch or all scope, two-factor sign-in and an audit log with before and after values.

6. Can patients and visitors self-serve?

A hospital website with online booking and a patient portal for reports, prescriptions and bills. In Curavane the SMS code and the payment gateway are simulated until you connect your own.

7. Who keeps it running?

One Node process, MongoDB and a worker for reminders and expiry alerts. Race tests on real MongoDB show whether double clicks are safe.

Limits to weigh

It is not a certified clinical system, so clinical content, licensed code sets and local rules are your responsibility. It is a responsive web app with no native mobile app.

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Questions about this product (0)

Answers from the DEV3 team and the community.

Ask a question

No questions yet.

Wondering about setup, licensing or customisation? Ask, and the DEV3 team will help.

More from this author

View all

Related in Enterprise SaaS Starters

View all