MONAILabel
MONAI Label is an intelligent open source image labeling and learning tool.
Software de gestión de clínica dental gratis y open source: agenda, pacientes, odontograma, presupuestos y facturación. Te llevas el código, lo instalas donde quieras, sin cuotas por sillón ni por den
Translation pending
HealthPython · VueGitHub @dentalpinOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
The open source agentic dental software. Built for AI.
Taken from the repository README
Loading the full README.
Read the full README ↗Source-available (BSL 1.1) dental clinic management software, converting to Apache 2.0 four years after publication. Patients, odontogram, scheduling, treatment plans, billing and a built-in AI copilot — modular, self-hosted, API-first.
Sign in with [email protected] / demo1234 — full admin access to a seeded clinic.
Reset every night, so poke at anything.
Website · Docs · Telegram · More screenshots ↓
Dental clinics around the world share the same fundamental needs: managing patients, scheduling appointments, tracking treatments, and running their practice efficiently. Yet the software landscape is fragmented into dozens of localized, closed-source solutions that lock clinics into expensive contracts and outdated technology.
We believe it's time for a change.
DentalPin is built on a simple premise: one open platform for dental clinics everywhere. Not another regional solution, but a global foundation that any clinic can adopt, any developer can extend, and any community can localize.
AI has fundamentally changed what small teams can build. Features that once required large development departments can now be implemented in days. This is our window to create the source-available dental software (BSL 1.1, converting to Apache 2.0 four years after publication) that should have existed years ago—before clinics got locked into legacy systems they can't escape.
We're not just building software—we're building the foundation for an ecosystem. A platform where developers contribute modules, clinics share improvements, and the entire dental community benefits from collective innovation.
Clinics deserve better than closed, expensive software from the last decade. DentalPin is the open alternative.
DentalPin ships with a built-in agentic AI assistant that turns the whole clinic into something you can simply talk to. Ask it to find a patient, free up a slot, chase an unanswered budget, or brief you on the day ahead — in plain Spanish or English — and it acts on your real data.
This isn't a chatbot bolted on top. The Copilot is a true agent that plans and executes multi-step tasks by calling the same operations the UI does, across patients, schedule, recalls, budgets, payments, and reports.
Vendor-agnostic under the hood (an LLM-provider abstraction), with provider, model, and per-clinic token budgets configurable per deployment. Architecture: docs/technical/copilot-agentic-architecture.md.
Visit dentalpin.com for product info, features, and commercial details.
Join our Telegram channel for support, installation help, and questions.
Prebuilt images, no clone, no build. On any server with Docker:
curl -O https://raw.githubusercontent.com/dentalpin/dentalpin/main/docker-compose.prod.yml
curl -O https://raw.githubusercontent.com/dentalpin/dentalpin/main/Caddyfile
curl -o .env https://raw.githubusercontent.com/dentalpin/dentalpin/main/.env.prod.example
# Set PUBLIC_URL, POSTGRES_PASSWORD and SECRET_KEY in .env, then:
# BUDGET_PUBLIC_SECRET_KEY: openssl rand -hex 32
# AGENDA_PUBLIC_SECRET_KEY: openssl rand -hex 32
docker compose -f docker-compose.prod.yml up -d
Point a domain at the server, set PUBLIC_URL=https://your-domain, and TLS is
provisioned on first boot — Caddy fronts both services on a single origin, so
there is no CORS and no certificate to renew. Set SEED_ON_STARTUP=1 to load
the demo clinic and look around before going live.
Images: dentalpin-backend ·
dentalpin-frontend
Builds from source with hot reload:
# Start services
docker-compose up -d
# Seed demo data (English by default)
./scripts/seed-demo.sh
# Or seed in Spanish
./scripts/seed-demo.sh --lang es
# India GST demo clinic (Tamil UI, or English UI with --country in)
./scripts/seed-demo.sh --lang ta
# India GST demo clinic in Hyderabad, Telangana (Telugu UI)
./scripts/seed-demo.sh --lang te
# India GST demo clinic in New Delhi (Hindi UI)
./scripts/seed-demo.sh --lang hi
All users have password: demo1234
| Role | Name (EN) | Name (ES) | |
|---|---|---|---|
| [email protected] | admin | Admin Demo | Admin Demo |
| [email protected] | dentist | Dr. Sarah Johnson | Dra. María García López |
| [email protected] | hygienist | Michael Williams | Carlos López Martínez |
| [email protected] | assistant | Emily Davis | Ana Martínez Ruiz |
| [email protected] | receptionist | Jessica Brown | Laura Sánchez Pérez |
See docs/user-manual/en/demo.md for full details on demo data.
| Layer | Technology |
|---|---|
| Backend | FastAPI (Python 3.11+) |
| Frontend | Nuxt 4 + Nuxt UI |
| Database | PostgreSQL 15 |
| Auth | JWT with refresh tokens |
The interface ships in twelve languages — English, Español, Français, Português (Portugal and Brazilian), தமிழ் (Tamil), తెలుగు (Telugu), हिन्दी (Hindi), Deutsch, Magyar, Polski, Italiano and العربية (Arabic) — covering the core app and every module layer, with a CI-enforced key-parity test so locales can't silently drift. Polish uses its full three-form plural rules.
Patient-facing communications (email templates, PDFs) currently render in
every UI language, plus
pt-BR as an overlay that only ships the templates whose wording differs from pt;
each clinic picks its communication language independently of the staff UI language.
Want your language? Adding one is a translation-only contribution — see the i18n issues or open a new one.
Dockerfile.prod needs 6GB+ — see the
NODE_OPTIONS note there)# Start all services
docker-compose up
# Or run backend separately
cd backend
pip install -e ".[dev]"
uvicorn app.main:app --reload
# Or run frontend separately
cd frontend
npm install
npm run dev
# Reset database and run migrations
./scripts/reset-db.sh
# Seed demo data (English - default)
./scripts/seed-demo.sh
# Seed demo data (Spanish)
./scripts/seed-demo.sh --lang es
# Full setup (reset + seed in one command)
./scripts/setup-demo.sh
# Backend unit + integration (in Docker)
docker-compose exec backend python -m pytest -v
# Slow Alembic round-trip (opt-in, see docs/technical/creating-modules.md)
docker-compose exec backend python -m pytest -v -m alembic_roundtrip
# Frontend unit (vitest)
cd frontend
npm run test
Browser E2E (Playwright) lives in frontend/tests/e2e/ and drives
the full stack at localhost:3000 → :8000. Runs on the host because
the Alpine frontend container can't launch Chromium.
# One-time setup
(cd frontend && npm install && npx playwright install chromium)
# Make sure the stack is up + seeded first
docker-compose up -d
./scripts/seed-demo.sh
# Full E2E suite (nav + RBAC + patient detail smoke)
./scripts/e2e.sh
# Single file
./scripts/e2e.sh rbac
# Interactive UI
./scripts/e2e.sh --ui
Full runbook + fixture reference: docs/technical/e2e-testing.md.
DentalPin uses a modular plugin architecture. Each feature is a self-contained module that:
See ADR 0001 — modular plugin architecture and docs/technical/creating-modules.md for details.
Business Source License 1.1 (BSL 1.1)
Additional Use Grant: You may use DentalPin in production, as long as you do not offer it as a commercial SaaS for dental clinic management.
Change Date: 4 years from release
Change License: Apache 2.0
See LICENSE for full terms.
See CONTRIBUTING.md for guidelines.
Backed by Dentaltix