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) ```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 ``` ### Install Python (Ubuntu/Debian) ```sh 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: > ```sh > cd apps/SeleniumService > pip3 install -r requirements.txt > ``` ### Install PostgreSQL (Ubuntu/Debian) ```sh 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_URL` in your `.env` file: > ``` > DATABASE_URL="postgresql://dental_user:yourpassword@localhost:5432/dental_db" > ``` ### Install Redis (Ubuntu/Debian) ```sh 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 install` handles 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: 1. Install dependency ```sh npm install ``` 2. Copy Environment Variables Create `.env` files from the provided `.env.example` templates: Change the required ones env in .env files. ```sh npm run setup:env ``` 3. Generate Prisma, and its Types. - Migrate the db: ```sh npm run db:migrate ``` - Generate the db types: ```sh npm run db:generate ``` - insert seed data ```sh npm run db:seed 4. To Simply run all the app(Backend + Frontend). ```sh npm run dev ``` 5. Now you need to run the selnium service as well in new terminal. ```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 in a Turborepo. What's inside? This Turborepo includes the following packages/apps: ### Apps and Packages - `docs`: a [Next.js](https://nextjs.org/) app with [Tailwind CSS](https://tailwindcss.com/) - `web`: another [Next.js](https://nextjs.org/) app with [Tailwind CSS](https://tailwindcss.com/) - `ui`: a stub React component library with [Tailwind CSS](https://tailwindcss.com/) shared by both `web` and `docs` applications - `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) - `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). ### 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 This Turborepo has some additional tools already setup for you: - [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