Development commands
QeetMart provides pnpm scripts for running services individually or in combination. All commands are executed from the repository root.
Running services
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)
Build commands
Build all services
Build the entire platform in the correct dependency order:
This runs:
pnpm build:shared
pnpm build:gateway
pnpm build:web
pnpm build:admin
pnpm build:docs
Build individual services
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:
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:
Mobile development
Linting and type checking
pnpm lint:mobile
pnpm typecheck:mobile
Docker workflow
Start full backend
Launch all microservices and databases:
This uses docker-compose.dev.yml with --build flag to rebuild images.
Stop and clean up
Stop all services and remove volumes:
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:
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:
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
| Path | Purpose |
|---|
apps/web | Customer-facing Next.js app |
apps/admin | Admin React app (Vite) |
apps/mobile | Expo mobile app |
apps/docs | Documentation portal |
micros/api-gateway | Node.js Express gateway |
micros/auth-service | Spring Boot auth service |
micros/user-service | Spring Boot user service |
micros/product-service | Spring Boot product service |
micros/inventory-service | Go inventory service |
packages/shared | Shared workspace package |
packages/openapi-clients | Generated 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