Overview
Dentis is dental clinic management software, built for chambers in Bangladesh. It brings a clinic’s day into one calm workspace:
- the patient register, with medical alerts that can’t be missed
- the day’s serial queue and appointments
- visits with a tooth chart, treatment plans and clinical notes
- printable prescriptions, with instructions in Bangla
- invoices, payments in instalments, dues and reports
Dentis is in active development. The MVP is built and runs end to end. The plan is to launch with one pilot clinic and grow into a product for many chambers. The screenshots below show a demo clinic filled with made-up patients.
![]()
The challenge
Bangladeshi dental chambers work differently from the clinics most dental software is designed for:
- The day runs on a serial list. Patients take a number and wait, and many arrive without an appointment. The queue, not a calendar, is the heart of the day.
- The prescription is the main document. It’s printed on the chamber’s own pad, with tests, causes and the patient’s own words beside the medicines, and instructions in Bangla.
- Treatment is paid over time. Root canals and orthodontics run for weeks, so dues have to be tracked across visits.
- Allergies are life-or-death. A missed penicillin or latex allergy is the most dangerous mistake a clinic can make, so alerts have to stay visible everywhere.
- Each clinic’s data is private. Many chambers share one system, and none may ever see another’s patients.
The solution
Medical alerts that are never hidden
Alerts are always ordered allergy, medication, condition, other, so even a shortened list never hides an allergy. A red banner sits above every other detail on the patient’s page, and it isn’t hidden on small screens. Patients are registered with structured alerts, consent and a duplicate warning, and can be found by name, phone fragment or patient number, typed in Bangla or English digits.
![]()
![]()
Today, the serial queue and appointments
The Today screen runs the chamber’s day as a serial queue. It splits the day into morning and evening, shows who is in the chair, who is waiting, who is booked and who is done, and has a Call next button and a printable day list. Visits in progress sit on the side, ready to reopen.
![]()
Appointments have day, week and list views, filterable by chair and status. They’re booked from a full-screen view with the day’s appointments beside the form, so the receptionist can see the gaps while booking. Guests can be booked first and registered as patients later. Clinics set up their branches, chairs, working hours, holidays and appointment types, and stale bookings from earlier days are cancelled automatically.
![]()
![]()
Visits and clinical records
Each patient’s record has tabs for overview, visits, medical history, chart, treatment plan, prescriptions and billing, with the medical-alert banner above them all. The tooth chart uses FDI numbering, with a toggle for primary teeth. Findings, existing work, planned treatment and completed treatment each have their own colour and shape, so they’re readable without colour too. Whole-tooth marks show extractions, crowns, implants, root canals and missing teeth.
![]()
A visit records the chief complaint, the doctor, the next visit date and a clinical note. Once signed, the note can no longer be edited; corrections are added as addenda, so the record stays honest.
![]()
Prescriptions built like the paper pad
The prescription is a printable A4 sheet in four templates: Classic pad, Modern, Minimal letterhead and Compact. Each has a narrow column for tests, causes and the patient’s statement beside a wide Rx column.
- Allergies print above the medicines, in red, on every template.
- Dose schedules use the familiar
1+0+1notation (morning + noon + night), with a legend. - Medicines come from a drug catalogue, with presets for common treatments. The catalogue includes allergy classes, such as salicylates and NSAIDs.
- Instructions are typed in Bangla with phonetic typing, right in the editor.
- Saved prescriptions are versioned, and each clinic sets its own default layout.
![]()
Billing, dues and reports
Each visit’s invoice lists its procedures, with the tooth for each line, plus discount and total. It shows its status, such as Partly paid, and links back to the visit. Payments can be taken in cash, by bKash or by card.
![]()
The Dues list shows every patient who still owes money across long treatments, with the amount, the number of open invoices, the oldest invoice and the last payment, and a Take payment button on each row.
![]()
Reports show revenue, procedures, patients and dues ageing for today, this week, this month or a custom range: money collected, invoiced and still outstanding, and a chart of collections by day.
![]()
Roles the owner controls
Staff are owners, doctors or assistants. The owner decides what doctors and assistants may do, one permission at a time: for example, viewing, registering, editing or archiving patients, or managing the walk-in queue. Navigation hides what a role can’t use, and shows a clear no-access state if someone follows a link anyway.
![]()
Under the hood
- Go API (
net/http, pgx, sqlc, goose), with plain SQL queries compiled to typed Go. - PostgreSQL 18 with forced row-level security on every tenant table. The API runs as a database role that cannot bypass it, and tests try to read across clinics and must fail.
- Secure sessions: argon2id passwords, opaque server-side sessions in an
HttpOnlycookie (12-hour idle, 14-day limit), login rate limiting, and origin checks on every write. - Permissions are enforced on every route, and a test fails if a new route doesn’t declare one.
- An audit row is written for every change, in the same transaction, along with logins and failed logins.
- Web app: TanStack Start, React 19, Tailwind CSS v4 and shadcn/ui on Base UI, with custom date and time pickers.
- Skeleton loaders shaped from each page’s own content, so nothing jumps when data arrives.
- A public design system, with every component’s live variants and copyable code, including the app’s own medical alerts and prescription.
Key features
- Patient register with Bangla/English search, consent and duplicate warnings
- Medical alerts ordered by risk and never hidden
- Today view, serial queue, appointments and guest bookings
- Branches, chairs, working hours and holidays
- Visits with tooth chart, treatment plans and clinical notes with addenda
- Prescriptions: four print templates, a drug catalogue, presets, versions and Bangla instructions
- Invoices, instalment payments, dues and reports
- Owner-controlled role permissions
- Full audit trail, and clinic data isolated at the database level