A comprehensive dental practice management system designed to streamline clinic operations, patient management, appointments, billing, and more.
- Complete patient records with medical history
- Document uploads and management
- Patient search and filtering
- Dental chart visualization
- Interactive calendar view
- Appointment status tracking
- Automated reminders
- Conflict detection
- Dental act catalog
- Tooth-specific treatment tracking
- Service management
- Treatment history
- Invoice generation
- Payment tracking
- Multiple payment methods
- Financial reports
- Product catalog
- Stock tracking
- Low stock alerts
- Supplier management
- Role-based access control
- Multi-user support
- License management
- Activity logs
Smiluster
βββ api/ # Backend API (Node.js + Express + TypeScript)
βββ front/ # Frontend Application (React + TypeScript + Vite)
βββ docker-compose.yml # Docker orchestration
- Runtime: Node.js 18
- Framework: Express.js
- Language: TypeScript
- Database: MariaDB 11.2
- ORM: Sequelize
- Authentication: JWT
- File Upload: Multer
- Framework: React 18
- Language: TypeScript
- Build Tool: Vite
- State Management: Redux Toolkit
- Routing: React Router v6
- Date Handling: Luxon
- UI Components: React Select, React DatePicker, SweetAlert2
- Docker (v20.10+)
- Docker Compose (v2.0+)
- Git
-
Clone the repository
git clone https://github.com/yourusername/smiluster.git cd smiluster -
Configure environment variables
cp .env.example .env # Edit .env with your configuration nano .env -
Start the application with Docker
docker-compose up -d
-
Access the application
- Frontend: http://localhost
- Backend API: http://localhost:3000
- Database: localhost:3306
-
Login with default credentials
Email: admin@smiluster.com Password: smilusterβ οΈ Important: Change the default password after first login for security!
After starting the containers:
- Wait for all services to be healthy (check with
docker-compose ps) - The database will be automatically initialized with a default admin user
- Access the frontend at http://localhost
- Login with the default credentials:
- Email:
admin@smiluster.com - Password:
smiluster
- Email:
- Change your password immediately in the profile settings
# Start all services
docker-compose up -d
# Stop all services
docker-compose down
# View logs
docker-compose logs -f
# Rebuild and restart
docker-compose up -d --build
# Stop and remove all data (β οΈ Warning: This deletes all data)
docker-compose down -vIf you prefer to run the application without Docker:
cd api
npm install
cp .env.example .env
# Configure your .env file
npm startcd front
npm install
npm run startInstall MariaDB locally and create a database:
CREATE DATABASE smiluster;
CREATE USER 'smiluster_user'@'localhost' IDENTIFIED BY 'smiluster_pass';
GRANT ALL PRIVILEGES ON smiluster.* TO 'smiluster_user'@'localhost';
FLUSH PRIVILEGES;smiluster/
βββ api/
β βββ controllers/ # Request handlers
β βββ models/ # Database models
β βββ routes/ # API routes
β βββ services/ # Business logic
β βββ middlewares/ # Custom middlewares
β βββ helpers/ # Utility functions
β βββ enums/ # Enumerations
β βββ public/ # Static files & uploads
β βββ app.ts # Application entry point
β βββ config.ts # Configuration
β
βββ front/
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ redux/ # State management
β β βββ routers/ # Route configuration
β β βββ hooks/ # Custom hooks
β β βββ utils/ # Utility functions
β β βββ assets/ # Images, styles, etc.
β βββ public/ # Static assets
β
βββ docker-compose.yml # Container orchestration
Key environment variables (see .env.example for complete list):
| Variable | Description | Default |
|---|---|---|
DATABASE_NAME |
Database name | smiluster |
DATABASE_USERNAME |
Database user | smiluster_user |
DATABASE_PASSWORD |
Database password | smiluster_pass |
TOKEN_SECRET_KEY |
JWT secret key | (must be changed) |
API_PORT |
Backend port | 3000 |
FRONTEND_PORT |
Frontend port | 80 |
The system comes with a pre-configured admin account for initial setup:
| Field | Value |
|---|---|
admin@smiluster.com |
|
| Password | smiluster |
| Role | Doctor (Admin) |
π Security Notice:
- Change the default password immediately after first login
- Update
TOKEN_SECRET_KEYin production environments - Use strong passwords for all users
- Enable HTTPS in production deployments
The application uses the following main entities:
- Users - System users and practitioners
- Licenses - Practice licenses
- Patients - Patient records
- Appointments - Appointment scheduling
- Services - Dental services catalog
- Acts - Dental procedures
- Teeth - Dental chart
- Factures - Invoices
- Payments - Payment records
- Products - Inventory items
- Stock - Stock management
- Documents - File uploads
- JWT-based authentication
- Password hashing with bcrypt
- Role-based access control (RBAC)
- CORS protection
- Environment variable configuration
- SQL injection prevention via ORM
- XSS protection headers
This project is licensed under the MIT License - see the LICENSE file for details.
- Ahmad - Initial work - YourGitHub
- Thanks to all contributors
- Dental professionals who provided valuable feedback
- Open source community
Interactive dental chart with treatment tracking and visualization
Made with β€οΈ for dental professionals
