A monorepo setup to manage both Backend and Frontend of the Dental Manager application.
Prerequisites
Before running the project, make sure the following are installed on your machine:
- Node.js v18+
- Python 3.10+
- PostgreSQL (primary database)
- Redis (job queue for Selenium and OCR tasks)
Install Node.js (Ubuntu/Debian)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Verify
node -v # should print v20.x.x
npm -v
Install Python (Ubuntu/Debian)
sudo apt-get install -y python3 python3-pip python3-venv
# Verify
python3 --version # should print 3.10 or higher
The Selenium service also requires its Python dependencies. Install them once:
cd apps/SeleniumService pip3 install -r requirements.txt
Install PostgreSQL (Ubuntu/Debian)
sudo apt-get install -y postgresql postgresql-contrib
sudo systemctl enable postgresql
sudo systemctl start postgresql
# Create a database and user (replace with your own values)
sudo -u postgres psql -c "CREATE USER dental_user WITH PASSWORD 'yourpassword';"
sudo -u postgres psql -c "CREATE DATABASE dental_db OWNER dental_user;"
# Verify
psql -U dental_user -d dental_db -c "\conninfo"
Then update
DATABASE_URLin your.envfile:DATABASE_URL="postgresql://dental_user:yourpassword@localhost:5432/dental_db"
Install Redis (Ubuntu/Debian)
sudo apt-get install -y redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
# Verify it's running
redis-cli ping # should print: PONG
Both PostgreSQL and Redis are system services, not npm packages.
npm installhandles all Node.js dependencies automatically — these must be installed separately at the OS level.
Dental Manager - Starter
A monorepo setup to manage both Backend and Frontend of the Dental Manager application.
🚀 Getting Started
Follow the steps below to set up and run the project:
- Install dependency
npm install
- Copy Environment Variables
Create .env files from the provided .env.example templates:
Change the required ones env in .env files.
npm run setup:env
- Generate Prisma, and its Types.
- Migrate the db:
npm run db:migrate
- Generate the db types:
npm run db:generate
- insert seed data
npm run db:seed
4. To Simply run all the app(Backend + Frontend).
```sh
npm run dev
- Now you need to run the selnium service as well in new terminal.
cd apps/SeleniumService
python3 agent.py
📖 Developer Documentation
- Setting up server environment — the first step, to run this app in environment.
- Development Hosts & Ports — which app runs on which host/port
This in a Turborepo. What's inside?
This Turborepo includes the following packages/apps:
Apps and Packages
docs: a Next.js app with Tailwind CSSweb: another Next.js app with Tailwind CSSui: a stub React component library with Tailwind CSS shared by bothwebanddocsapplications@repo/eslint-config:eslintconfigurations (includeseslint-config-nextandeslint-config-prettier)@repo/typescript-config:tsconfig.jsons used throughout the monorepo
Each package/app is 100% TypeScript.
Building packages/ui
This example is set up to produce compiled styles for ui components into the dist directory. The component .tsx files are consumed by the Next.js apps directly using transpilePackages in next.config.ts. This was chosen for several reasons:
- Make sharing one
tailwind.config.tsto apps and packages as easy as possible. - Make package compilation simple by only depending on the Next.js Compiler and
tailwindcss. - Ensure Tailwind classes do not overwrite each other. The
uipackage uses aui-prefix for it's classes. - Maintain clear package export boundaries.
Another option is to consume packages/ui directly from source without building. If using this option, you will need to update the tailwind.config.ts in your apps to be aware of your package locations, so it can find all usages of the tailwindcss class names for CSS compilation.
For example, in tailwind.config.ts:
content: [
// app content
`src/**/*.{js,ts,jsx,tsx}`,
// include packages if not transpiling
"../../packages/ui/*.{js,ts,jsx,tsx}",
],
If you choose this strategy, you can remove the tailwindcss and autoprefixer dependencies from the ui package.
Utilities
This Turborepo has some additional tools already setup for you:
- Tailwind CSS for styles
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting