docs: rewrite README with complete step-by-step setup guide

Adds ordered setup steps (Node.js, Python, Chrome, PostgreSQL, Redis,
pip dependencies) so a fresh machine can be fully configured from
git clone to running the app without guessing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ff
2026-04-13 22:20:58 -04:00
parent 71b28c613c
commit e10126f772

158
README.md
View File

@@ -1,15 +1,21 @@
# Dental Manager - Starter
A monorepo setup to manage both Backend and Frontend of the Dental Manager application. A monorepo setup to manage both Backend and Frontend of the Dental Manager application.
## Prerequisites ## 🖥️ Setup Guide (Fresh Machine)
Before running the project, make sure the following are installed on your machine: Follow these steps in order after cloning the repository.
- **Node.js** v18+ ### Step 1 — Clone the repository
- **Python** 3.10+
- **PostgreSQL** (primary database)
- **Redis** (job queue for Selenium and OCR tasks)
### Install Node.js (Ubuntu/Debian) ```sh
git clone <your-repo-url>
cd DentalManagementMHAprilgg
```
### Step 2 — Install Node.js
Required to run the Backend and Frontend.
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
@@ -20,7 +26,9 @@ node -v # should print v20.x.x
npm -v npm -v
``` ```
### Install Python (Ubuntu/Debian) ### Step 3 — Install Python
Required to run the Selenium and OCR services.
```sh ```sh
sudo apt-get install -y python3 python3-pip python3-venv sudo apt-get install -y python3 python3-pip python3-venv
@@ -29,21 +37,32 @@ sudo apt-get install -y python3 python3-pip python3-venv
python3 --version # should print 3.10 or higher python3 --version # should print 3.10 or higher
``` ```
> The Selenium service also requires its Python dependencies. Install them once: ### Step 4 — Install Chrome
> ```sh
> cd apps/SeleniumService
> pip3 install -r requirements.txt
> ```
Required for the Selenium service to control a browser.
### Install PostgreSQL (Ubuntu/Debian) ```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 ```sh
sudo apt-get install -y postgresql postgresql-contrib sudo apt-get install -y postgresql postgresql-contrib
sudo systemctl enable postgresql sudo systemctl enable postgresql
sudo systemctl start postgresql sudo systemctl start postgresql
# Create a database and user (replace with your own values) # Create a database and user (replace values as needed)
sudo -u postgres psql -c "CREATE USER dental_user WITH PASSWORD 'yourpassword';" sudo -u postgres psql -c "CREATE USER dental_user WITH PASSWORD 'yourpassword';"
sudo -u postgres psql -c "CREATE DATABASE dental_db OWNER dental_user;" sudo -u postgres psql -c "CREATE DATABASE dental_db OWNER dental_user;"
@@ -56,120 +75,101 @@ psql -U dental_user -d dental_db -c "\conninfo"
> DATABASE_URL="postgresql://dental_user:yourpassword@localhost:5432/dental_db" > DATABASE_URL="postgresql://dental_user:yourpassword@localhost:5432/dental_db"
> ``` > ```
### Install Redis (Ubuntu/Debian) ### Step 6 — Install Redis
Used as the job queue for Selenium and OCR background tasks.
```sh ```sh
sudo apt-get install -y redis-server sudo apt-get install -y redis-server
sudo systemctl enable redis-server sudo systemctl enable redis-server
sudo systemctl start redis-server sudo systemctl start redis-server
# Verify it's running # Verify
redis-cli ping # should print: PONG redis-cli ping # should print: PONG
``` ```
> Both PostgreSQL and Redis are system services, not npm packages. `npm install` handles all Node.js dependencies automatically — these must be installed separately at the OS level. ### Step 7 — Install Node.js dependencies
# 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:
1. Install dependency
```sh ```sh
npm install npm install
``` ```
2. Copy Environment Variables ### Step 8 — Install Python dependencies
Create `.env` files from the provided `.env.example` templates: Each Python service has its own dependencies:
Change the required ones env in .env files.
```sh
# Selenium automation service
cd apps/SeleniumService
pip3 install -r requirements.txt
cd ../..
# Payment OCR service
cd apps/PaymentOCRService
pip3 install -r requirements.txt
cd ../..
```
### Step 9 — Set up environment variables
Copy the `.env.example` files and fill in the required values.
```sh ```sh
npm run setup:env npm run setup:env
``` ```
3. Generate Prisma, and its Types. ### Step 10 — Set up the database
- Migrate the db:
```sh ```sh
# Run migrations
npm run db:migrate npm run db:migrate
```
- Generate the db types: # Generate Prisma types
```sh
npm run db:generate npm run db:generate
# Insert seed data
npm run db:seed
``` ```
- insert seed data ### Step 11 — Run the app
```sh
npm run db:seed
4. To Simply run all the app(Backend + Frontend). Open two terminals:
**Terminal 1** — Backend + Frontend:
```sh ```sh
npm run dev npm run dev
``` ```
**Terminal 2** — Selenium service:
5. Now you need to run the selnium service as well in new terminal.
```sh ```sh
cd apps/SeleniumService cd apps/SeleniumService
python3 agent.py python3 agent.py
``` ```
---
## 📖 Developer Documentation ## 📖 Developer Documentation
- [Setting up server environment](docs/server-setup.md) — the first step, to run this app in environment. - [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 - [Development Hosts & Ports](docs/ports.md) — which app runs on which host/port
---
## This in a Turborepo. What's inside? ## This is a Turborepo. What's inside?
This Turborepo includes the following packages/apps:
### Apps and Packages ### Apps and Packages
- `docs`: a [Next.js](https://nextjs.org/) app with [Tailwind CSS](https://tailwindcss.com/) - `apps/Backend` — Express.js API server
- `web`: another [Next.js](https://nextjs.org/) app with [Tailwind CSS](https://tailwindcss.com/) - `apps/Frontend` — React + Vite frontend
- `ui`: a stub React component library with [Tailwind CSS](https://tailwindcss.com/) shared by both `web` and `docs` applications - `apps/SeleniumService` — Python FastAPI service for browser automation (insurance eligibility, claims)
- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) - `apps/PaymentOCRService` — Python service for payment OCR extraction
- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo - `@repo/eslint-config` — shared ESLint configuration
- `@repo/typescript-config` — shared `tsconfig.json`s
Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). Each package/app is 100% [TypeScript](https://www.typescriptlang.org/) (except the Python services).
### 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.ts` to 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 `ui` package uses a `ui-` 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](packages/tailwind-config/tailwind.config.ts):
```js
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 ### Utilities
This Turborepo has some additional tools already setup for you:
- [Tailwind CSS](https://tailwindcss.com/) for styles - [Tailwind CSS](https://tailwindcss.com/) for styles
- [TypeScript](https://www.typescriptlang.org/) for static type checking - [TypeScript](https://www.typescriptlang.org/) for static type checking
- [ESLint](https://eslint.org/) for code linting - [ESLint](https://eslint.org/) for code linting