====== Cotrav Monorepo – Package Creation & Service Build Guide ====== This document describes **how to create shared packages and build/run services** in the Cotrav monorepo. This is a centralizes multiple distinct projects, libraries, and apps into a single, unified repository, enabling easier code sharing, dependency management, and consistent tooling/standards across teams. Git - [[https://github.com/novusvinod/cotrav-services.git|https://github.com/novusvinod/cotrav-services.git]] ===== Repository Structure ===== cotrav-services/ │ ├─ package.json (root – workspaces enabled) │ ├─ packages/ (shared libraries) │ ├─ logger/ │ ├─ errors/ │ ├─ middlewares/ │ └─ tsconfig.json (base TS config for packages) │ ├─ workspace/ (runtime services) │ ├─ auth-service/ │ ├─ booking-service/ │ └─ payment-service/ │ └─ node_modules/ ===== Prerequisites ===== ^Tool^Version| |Node.js|>= 18.x| |npm|>= 9.x| |TypeScript|>= 5.x| |VS Code|Recommended| ===== Root Workspace Setup ===== Root ''package.json'' The root enables **npm workspaces** so shared packages can be consumed without publishing. cmd npm install ===== Install Dependencies ===== ==== Logger ==== npm install pino npm install -D @types/node Error npm install -D @types/node ==== Middleware ==== npm install express npm install -D @types/express @types/node ==== Build Package ==== package/logger cmd npm run build --workspace=packages/logger package/errors cmd npm run build --workspace=packages/errors ==== Creating Error & Middleware Packages ==== Repeat the same steps for: * ''@cotrav/errors'' * ''@cotrav/middlewares'' Only **business logic differs**, structure remains identical. ====== Creating a Service ====== Example: ''auth-service'' Folder Creation cd workspace mkdir auth-service cd auth-service npm init -y Service ''package.json'' { "name": "auth-service", "version": "1.0.0", "private": true, "type": "commonjs", "scripts": { "dev": "ts-node src/app.ts", "build": "tsc", "start": "node dist/app.js" }, "dependencies": { "express": "^5.0.0", "dotenv": "^17.0.0", "@cotrav/logger": "*", "@cotrav/errors": "*", "@cotrav/middlewares": "*" } } ==== Install Dependencies ==== npm install npm install -D typescript npm install express dotenv jsonwebtoken bcryptjs swagger-ui-express swagger-jsdoc pino Type deps npm install -D @types/express @types/node @types/jsonwebtoken @types/bcryptjs @types/swagger-ui-express ==== Build Services & Packages ==== Execute below command on root folder "cotrav-services" npm run build npm run typecheck ==== Run auth service in dev ==== npm run dev:auth ==== Clean all builds ==== npm run clean ==== Sanity check (must work) ==== npm workspaces list