Skip to main content

Development commands

QeetMart provides pnpm scripts for running services individually or in combination. All commands are executed from the repository root.

Running services

pnpm dev

What pnpm dev runs

The main dev command runs these services in parallel:
  • @qeetmart/shared (shared package)
  • @qeetmart/api-gateway (Node.js gateway)
  • web (Next.js customer app)
  • admin (React admin app)
pnpm dev

Build commands

Build all services

Build the entire platform in the correct dependency order:
pnpm build
This runs:
  1. pnpm build:shared
  2. pnpm build:gateway
  3. pnpm build:web
  4. pnpm build:admin
  5. pnpm build:docs

Build individual services

pnpm build:gateway
The build:auth-service command uses Maven Wrapper and skips tests with -DskipTests for faster builds.

Spring Boot services

Development mode

Run the auth service in development mode with hot reload:
pnpm dev:auth-service
This command:
  • Changes directory to micros/auth-service
  • Loads environment variables from .env if present
  • Runs ./mvnw spring-boot:run

Production mode

Start the auth service from the built JAR:
pnpm start:auth-service

Mobile development

Platform-specific commands

pnpm mobile:android

Linting and type checking

pnpm lint:mobile
pnpm typecheck:mobile

Docker workflow

Start full backend

Launch all microservices and databases:
pnpm docker:up
This uses docker-compose.dev.yml with --build flag to rebuild images.

Stop and clean up

Stop all services and remove volumes:
pnpm docker:down
This removes all data from databases and caches.
The docker:down command includes the -v flag, which deletes all volumes. Any data in local databases will be lost.

Web development tips

Clean Next.js cache

If you encounter Next.js caching issues:
pnpm dev:web:clean
This command:
  • Kills any running Next.js processes
  • Removes the .next build cache
  • Starts a fresh development server

Documentation commands

QeetMart includes several documentation automation commands:
pnpm docs:sync:openapi

Service architecture

Clients
  ├─ Next.js Web (apps/web)
  ├─ Admin SPA (apps/admin)
  └─ Expo Mobile (apps/mobile)


API Gateway (micros/api-gateway :4000)
  ├─ Auth Service (Spring Boot :4001)     -> Postgres (auth_db)
  ├─ User Service (Spring Boot :8082)     -> Postgres (user_db)
  ├─ Product Service (Spring Boot :8083)  -> Postgres (product_db)
  └─ Inventory Service (Go/Gin :8080)     -> Postgres (inventory) + Redis

Monorepo structure

PathPurpose
apps/webCustomer-facing Next.js app
apps/adminAdmin React app (Vite)
apps/mobileExpo mobile app
apps/docsDocumentation portal
micros/api-gatewayNode.js Express gateway
micros/auth-serviceSpring Boot auth service
micros/user-serviceSpring Boot user service
micros/product-serviceSpring Boot product service
micros/inventory-serviceGo inventory service
packages/sharedShared workspace package
packages/openapi-clientsGenerated TypeScript clients

Hot reload behavior

  • Node.js/TypeScript: Uses tsx watch for instant reload
  • Spring Boot: Uses spring-boot:run with DevTools for reload
  • Go: Manual restart required (no hot reload in current setup)
  • Next.js/React: Vite and Next.js provide built-in HMR

Next steps

Build docs developers (and LLMs) love