Skip to content

abinauv/dental-erp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DentalERP - Free Open Source Dental Clinic Management Software for India

A comprehensive, AI-powered dental hospital management system built with Next.js 16, designed for dental clinics and multi-branch hospital chains in India. Includes GST-compliant billing, Razorpay/PhonePe/Paytm payments, patient portal, tele-dentistry, 16 AI skills, and more — completely free and open source.

Looking for dental practice management software in India? DentalERP is a free alternative to expensive proprietary dental software. Self-host it on your own server with full control over your patient data.

Features

Core Modules

  • Patient Management — Records, medical history, dental charting, document uploads
  • Appointment Scheduling — Calendar view, slot management, reminders, no-show prediction
  • Treatment Plans — Treatment tracking, procedure catalog, AI-assisted treatment advice
  • Billing & Invoicing — GST-compliant invoicing, payment tracking, payment plans (EMI)
  • Prescriptions — Digital prescriptions, medication database, print/PDF export
  • Inventory Management — Stock tracking, low-stock alerts, AI-powered demand forecasting
  • Lab Integration — Lab order management, status tracking, work coordination
  • Staff Management — Roles & permissions, attendance, doctor schedules

Advanced Features

  • AI Skills (16 built-in) — Treatment advisor, smart scheduler, billing agent, patient intake, inventory forecaster, cashflow forecaster, patient segmentation, claim analyzer, consent generator, dynamic pricing, and more
  • Patient Portal — Online booking, medical records access, digital intake forms
  • Insurance & Claims — Insurance verification, claim submission, auto-adjudication
  • CRM & Loyalty — Patient segmentation, loyalty points, referral tracking
  • Communications — SMS/Email/WhatsApp messaging, campaign management, marketing automation
  • Tele-Dentistry — Video consultations via Jitsi Meet integration
  • Sterilization Tracking — Instrument management, sterilization logs, compliance reporting
  • Dental Imaging — Interactive SVG dental arch viewer with condition mapping
  • IoT Device Integration — Medical device data logging and monitoring
  • Payment Gateways — Razorpay, PhonePe, Paytm integration (encrypted credentials)
  • Reports & Analytics — Revenue, appointments, treatment stats, exportable to Excel
  • Audit Logging — Full audit trail for compliance
  • Multi-branch Support — Hospital-scoped data isolation via NextAuth

Tech Stack

Layer Technology
Framework Next.js 16 (App Router)
Language TypeScript 5
Database MySQL 8 via Prisma 5 ORM
Auth NextAuth v5 (beta) with credentials provider
UI Tailwind CSS 3 + Radix UI + shadcn/ui
Charts Recharts
Forms React Hook Form + Zod validation
AI OpenRouter (multi-model gateway)
Email Nodemailer (SMTP)
Testing Vitest + Playwright + Testing Library
CI/CD GitHub Actions

Prerequisites

  • Node.js 20 or later
  • MySQL 8.0 or later
  • npm 10 or later

Getting Started

Prerequisites Check

Make sure MySQL is running before you start:

# Verify MySQL is accessible
mysql -u root -p -e "SELECT 1"

# Create the database
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS dental_erp"

1. Clone the repository

git clone https://github.com/abinauv/dental-erp.git
cd dental-erp

2. Install dependencies

npm install

3. Configure environment variables

cp .env.example .env

Edit .env with your database credentials and other settings. See Environment Variables for details.

4. Set up the database

# Push the schema to your MySQL database
npx prisma db push

# Seed with sample data (optional)
npx prisma db seed

5. Start the development server

npm run dev

Open http://localhost:3000 in your browser.

Default Credentials (after seeding)

Role Email Password
Super Admin admin@demo-dental.com Admin@123

Warning: Change the default password immediately in production.

Environment Variables

See .env.example for all available variables. Key ones:

Variable Required Description
DATABASE_URL Yes MySQL connection string
NEXTAUTH_URL Yes App URL (e.g., http://localhost:3000)
NEXTAUTH_SECRET Yes Random secret for session encryption
ENCRYPTION_KEY Yes 64-char hex string for AES-256-GCM encryption
CRON_SECRET Yes Secret for securing cron job endpoints
OPENROUTER_API_KEY No Required for AI features
SMTP_HOST / SMTP_USER / SMTP_PASSWORD No Required for email features
SMS_API_KEY No Required for SMS features

Available Scripts

npm run dev          # Start development server
npm run build        # Production build
npm run start        # Start production server
npm run lint         # Run ESLint
npm run test         # Run unit/integration tests (Vitest)
npm run test:watch   # Run tests in watch mode
npm run test:coverage # Run tests with coverage report
npm run test:e2e     # Run end-to-end tests (Playwright)
npm run test:all     # Run all tests

# Database
npm run db:generate  # Generate Prisma client
npm run db:push      # Push schema to database
npm run db:migrate   # Run migrations (development)
npm run db:seed      # Seed sample data
npm run db:studio    # Open Prisma Studio (DB GUI)

Project Structure

dental-erp/
├── app/                    # Next.js App Router
│   ├── (auth)/             # Authentication pages (login, signup, etc.)
│   ├── (dashboard)/        # Dashboard pages (all modules)
│   └── api/                # API routes
├── components/             # Reusable React components
│   ├── layout/             # Dashboard shell, sidebar, header
│   ├── ui/                 # shadcn/ui components
│   └── imaging/            # Dental imaging components
├── config/                 # App configuration (navigation, etc.)
├── lib/                    # Utilities, helpers, AI skills
│   ├── ai/                 # AI skill definitions
│   ├── api-helpers.ts      # Auth & API utilities
│   └── prisma.ts           # Prisma client singleton
├── prisma/
│   ├── schema.prisma       # Database schema
│   └── seed.ts             # Database seeder
├── __tests__/              # Test files
│   ├── unit/               # Unit tests
│   ├── integration/        # Integration tests (API routes)
│   ├── components/         # Component tests
│   ├── e2e/                # Playwright E2E tests
│   └── accessibility/      # Accessibility tests
├── .github/
│   └── workflows/ci.yml    # CI pipeline
└── public/                 # Static assets

Testing

The project has comprehensive test coverage:

  • Unit tests — Business logic, utilities, AI skills
  • Integration tests — API route handlers with mocked Prisma
  • Component tests — React components with Testing Library
  • E2E tests — Full user flows with Playwright
  • Accessibility tests — WCAG 2.1 compliance with axe-core
# Run all unit/integration tests
npm test

# Run with coverage
npm run test:coverage

# Run E2E tests (requires running server)
npm run test:e2e

Deployment

Docker (recommended)

docker build -t dental-erp .
docker run -p 3000:3000 --env-file .env dental-erp

Manual

npm run build
npm start

Environment Requirements

  • Node.js 20+
  • MySQL 8.0+ (with a dedicated database)
  • Reverse proxy (nginx/Caddy) for HTTPS in production

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Security

If you discover a security vulnerability, please follow our Security Policy. Do not open a public issue for security vulnerabilities.

License

This project is licensed under the MIT License — see the LICENSE file for details.

Acknowledgments

About

Free, open-source dental hospital management system for India. AI-powered, GST billing, patient portal, tele-dentistry. Built with Next.js 16 + Prisma + MySQL.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages