User Tools

Site Tools


cotrav_monorepo_package_creation_service_build_guide

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
cotrav_monorepo_package_creation_service_build_guide [2026/01/19 11:48] – created pradnyacotrav_monorepo_package_creation_service_build_guide [2026/01/27 08:38] (current) – [Cotrav Monorepo – Package Creation & Service Build Guide] pradnya
Line 1: Line 1:
 ====== Cotrav Monorepo – Package Creation & Service Build Guide ====== ====== Cotrav Monorepo – Package Creation & Service Build Guide ======
  
-This document describes **how to create shared packages and build/run services** in the Cotrav monorepo. It is **Confluence-ready** and can be pasted directly.+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 ===== ===== Repository Structure =====
  
 <code> <code>
- 
 cotrav-services/ cotrav-services/
- 
  
- 
 ├─ package.json (root – workspaces enabled) ├─ package.json (root – workspaces enabled)
- 
  
- 
 ├─ packages/ (shared libraries) ├─ packages/ (shared libraries)
- 
 │ ├─ logger/ │ ├─ logger/
- 
 │ ├─ errors/ │ ├─ errors/
- 
 │ ├─ middlewares/ │ ├─ middlewares/
- 
 │ └─ tsconfig.json (base TS config for packages) │ └─ tsconfig.json (base TS config for packages)
- 
  
- 
 ├─ workspace/ (runtime services) ├─ workspace/ (runtime services)
- 
 │ ├─ auth-service/ │ ├─ auth-service/
- 
 │ ├─ booking-service/ │ ├─ booking-service/
- 
 │ └─ payment-service/ │ └─ payment-service/
- 
  
- 
 └─ node_modules/ └─ node_modules/
  
 +</code>
 +
 +===== 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
 +<code>
 +
 +npm install
 +
 +</code>
 +
 +===== Install Dependencies =====
 +
 +==== Logger ====
 +
 +<code>
 +npm install pino
 +
 +npm install -D @types/node
 +
 +</code>
 +
 +Error
 +
 +<code>
 +npm install -D @types/node
 +
 +</code>
 +
 +==== Middleware ====
 +
 +<code>
 +npm install express
 +
 +npm install -D @types/express @types/node
 +
 +</code>
 +
 +==== Build Package ====
 +
 +package/logger
 +
 +cmd
 +
 +<code>
 +npm run build --workspace=packages/logger
 +
 +</code>
 +
 +package/errors
 +
 +cmd
 +
 +<code>
 +npm run build --workspace=packages/errors
 +
 +</code>
 +
 +==== 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
 +
 +<code>
 +cd workspace
 +mkdir auth-service
 +cd auth-service
 +npm init -y
 +
 +</code>
 +
 +Service ''package.json''
 +
 +<code>
 +{
 +"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": "*"
 + }
 +}
 +
 +</code>
 +
 +==== Install Dependencies ====
 +
 +<code>
 +npm install
 +
 +npm install -D typescript
 +
 +npm install express dotenv jsonwebtoken bcryptjs swagger-ui-express swagger-jsdoc pino
 +
 +</code>
 +
 +Type deps
 +
 +<code>
 +npm install -D
 +@types/express
 +@types/node
 +@types/jsonwebtoken
 +@types/bcryptjs
 +@types/swagger-ui-express
 +
 +</code>
 +
 +==== Build Services & Packages ====
 +
 +Execute below command on root folder "cotrav-services"
 +
 +<code>
 +npm run build
 +
 +npm run typecheck
 +
 +</code>
 +
 +==== Run auth service in dev ====
 +
 +<code>
 +npm run dev:auth
 +
 +</code>
 +==== Clean all builds ====
 +
 +<code>npm run clean
 +</code>
 +
 +==== Sanity check (must work) ====
  
 +<code>npm workspaces list
 </code> </code>
  
  
cotrav_monorepo_package_creation_service_build_guide.1768823324.txt.gz · Last modified: by pradnya