# Dental Manager - Starter A monorepo setup to manage both Backend and Frontend of the Dental Manager application. ## 🖥️ Setup Guide (Fresh Machine) Follow these steps in order after cloning the repository. ### Step 1 — Clone the repository ```sh git clone cd DentalManagementMHAprilgg ``` ### Step 2 — Install Node.js Required to run the Backend and Frontend. ```sh 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 ``` ### Step 3 — Install Python Required to run the Selenium and OCR services. ```sh sudo apt-get install -y python3 python3-pip python3-venv # Verify python3 --version # should print 3.10 or higher ``` ### Step 4 — Install Chrome Required for the Selenium service to control a browser. ```sh wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list sudo apt-get update sudo apt-get install -y google-chrome-stable # Verify google-chrome --version ``` > The `webdriver-manager` package (included in `requirements.txt`) automatically downloads the matching ChromeDriver — no manual driver setup needed. ### Step 5 — Install PostgreSQL Primary database for the application. ```sh sudo apt-get install -y postgresql postgresql-contrib sudo systemctl enable postgresql sudo systemctl start postgresql # Create the database the app uses sudo -u postgres psql -c "CREATE DATABASE dentalapp OWNER postgres;" # Set the postgres user password to match packages/db/.env sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'mypassword';" ``` #### Enable password authentication over TCP By default Debian uses `scram-sha-256` or `peer` auth for local connections, which blocks password login. Switch to `md5`: ```sh sudo sed -i 's/scram-sha-256/md5/g' /etc/postgresql/*/main/pg_hba.conf sudo systemctl restart postgresql ``` #### Verify ```sh psql -U postgres -d dentalapp -h 127.0.0.1 -W # Enter: mypassword # You should see: dentalapp=# ``` > The `DATABASE_URL` in `packages/db/.env` is already set to: > ``` > DATABASE_URL="postgresql://postgres:mypassword@localhost:5432/dentalapp" > ``` ### Step 6 — Install Redis Used as the job queue for Selenium and OCR background tasks. ```sh sudo apt-get install -y redis-server sudo systemctl enable redis-server sudo systemctl start redis-server # Verify redis-cli ping # should print: PONG ``` ### Step 7 — Install Node.js dependencies ```sh npm install ``` ### Step 8 — Install Python dependencies Python dependencies are installed automatically by `npm install` (Step 7) via each service's `postinstall` script. Each service creates its own `.venv` virtual environment — no manual pip commands needed. > This approach is required on Debian 13+ where system-wide pip installs are blocked (PEP 668). ### Step 9 — Set up environment variables Copy the `.env.example` files and fill in the required values. ```sh npm run setup:env ``` ### Step 10 — Set up the database ```sh # Run migrations npm run db:migrate # Generate Prisma types npm run db:generate # Insert seed data npm run db:seed ``` ### Step 11 — Run the app Open two terminals: **Terminal 1** — Backend + Frontend: ```sh npm run dev ``` **Terminal 2** — Selenium service: ```sh cd apps/SeleniumService python3 agent.py ``` --- ## 📖 Developer Documentation - [Setting up server environment](docs/server-setup.md) — the first step, to run this app in environment. - [Development Hosts & Ports](docs/ports.md) — which app runs on which host/port --- ## This is a Turborepo. What's inside? ### Apps and Packages - `apps/Backend` — Express.js API server - `apps/Frontend` — React + Vite frontend - `apps/SeleniumService` — Python FastAPI service for browser automation (insurance eligibility, claims) - `apps/PaymentOCRService` — Python service for payment OCR extraction - `@repo/eslint-config` — shared ESLint configuration - `@repo/typescript-config` — shared `tsconfig.json`s Each package/app is 100% [TypeScript](https://www.typescriptlang.org/) (except the Python services). ### Utilities - [Tailwind CSS](https://tailwindcss.com/) for styles - [TypeScript](https://www.typescriptlang.org/) for static type checking - [ESLint](https://eslint.org/) for code linting - [Prettier](https://prettier.io) for code formatting