https://github.com/clawnify/open-dentist
Open-source dental practice management — multi-room agenda, patient charts, treatment plans, clinical notes, billing.
https://github.com/clawnify/open-dentist
appointment-scheduling archy-alternative carestack-alternative clawnify-template clinical-notes dental dental-chart dental-practice-management dental-software dentist dentrix-alternative healthcare hono odontogram open-source practice-management-software react sqlite tailwindcss typescript
Last synced: 6 days ago
JSON representation
Open-source dental practice management — multi-room agenda, patient charts, treatment plans, clinical notes, billing.
- Host: GitHub
- URL: https://github.com/clawnify/open-dentist
- Owner: clawnify
- License: mit
- Created: 2026-04-28T20:43:19.000Z (about 2 months ago)
- Default Branch: master
- Last Pushed: 2026-06-04T20:10:26.000Z (20 days ago)
- Last Synced: 2026-06-04T22:06:41.305Z (20 days ago)
- Topics: appointment-scheduling, archy-alternative, carestack-alternative, clawnify-template, clinical-notes, dental, dental-chart, dental-practice-management, dental-software, dentist, dentrix-alternative, healthcare, hono, odontogram, open-source, practice-management-software, react, sqlite, tailwindcss, typescript
- Language: TypeScript
- Size: 122 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Open Dentist
Open-source dental practice management — an alternative to CareStack and Archy for solo practices, group practices, and DSOs.

> Built on the [Clawnify](https://clawnify.com) template format. Deploy your own copy in minutes, customize freely, own the data.
## Features
### Agenda
- **Multi-room day view** — operatories as columns, 15-minute time slots, drag-friendly card geometry
- **Color-coded appointments** by treatment type, with patient name, DOB, time range, and status
- **Break / lunch / block** placeholders alongside patient appointments
- **Live "now" indicator** on the current day
- Click empty slot → create dialog · click card → edit / delete · prev / today / next navigation
### Patients
Searchable list with a tabbed detail page per patient:
- **Overview** — contact, computed age, medical-alert badges, free-form notes
- **Tooth Chart** — interactive odontogram (FDI numbering) powered by [`react-odontogram`](https://github.com/biomathcode/react-odontogram). Pick a brush (caries / restoration / crown / endo / implant / missing), click teeth to apply, click again to clear. Each condition renders in its own color, with a counted legend
- **Treatment Plan** — items with treatment, tooth, fee, status (planned / accepted / completed / declined). Totals card per status
- **Clinical Notes** — composer + reverse-chronological timeline, attributed to a practitioner
- **Billing** — invoices with billed / paid / balance summary, status dropdown (open / paid / void)
### Behind the scenes
- **Treatment types** — code, default duration, default fee, color
- **Practitioners** — dentist / hygienist / assistant
- **Operatories** — color-coded treatment rooms
- **Waiting list & appointments-to-make** — schema and API in place; UI panels next
## Stack
- React 19 + Vite + TypeScript
- Tailwind CSS v4 + shadcn/ui (Radix primitives)
- Hono on Cloudflare Workers (D1-native — same code locally and in production)
- `react-odontogram` for the interactive tooth chart
- `lucide-react` for icons
- pushState URL routing
## Develop
```bash
pnpm install
pnpm dev # Vite at :5173, Wrangler at :8787 (D1 schema applied automatically)
pnpm typecheck
pnpm build
```
The dev script applies `src/server/schema.sql` to the local D1 database, then runs Vite and Wrangler in parallel. The schema seeds 3 operatories, 3 practitioners, and 6 treatment types so the agenda is usable on first boot.
## Deploy
If you have the Clawnify CLI installed:
```bash
clawnify deploy
```
Or wire it up to Cloudflare Workers + D1 directly using the bindings in `wrangler.toml` (binding `DB`, database name `open-dentist-db`).
## Project layout
```
src/
server/
index.ts Hono routes for every entity
db.ts D1 adapter (query / get / run)
schema.sql Tables + seed data
client/
app.tsx Shell + routing
components/
agenda/ Day view, day toolbar, appointment card + dialog
patients/ List, detail page, 5 tabs (overview/chart/plan/notes/billing)
ui/ Vendored shadcn primitives
hooks/ use-router, use-app-state
lib/utils.ts cn helper, color palette, date/time helpers
```
## License
MIT