Files
DentalManagementMH06/README.md

183 lines
4.4 KiB
Markdown

# 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 <your-repo-url>
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
.venv/bin/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