Files
hr-portal/app/docker-compose.yml
TenX PM 87e9346d62 feat: complete HR portal full-stack application
- NestJS backend with 11 modules: Auth, Employees, Departments, Attendance, Leaves, Payroll, Reimbursements, Announcements, Tax, Reports, Admin
- JWT authentication with refresh tokens, role-based access (employee/hr_admin/super_admin)
- MongoDB schemas with Mongoose for all entities
- PDF payslip generation with pdfkit
- OpenTelemetry tracing to SigNoz
- Automatic database seeding on first startup
- Next.js 14 frontend with App Router, Tailwind CSS
- 25 pages covering all employee, HR admin, and super admin workflows
- Multi-stage Dockerfile with nginx proxy
- test-manifest.json for E2E testing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 19:32:52 +00:00

61 lines
1.4 KiB
YAML

version: '3.8'
services:
mongodb:
image: mongo:7
restart: always
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
environment:
MONGO_INITDB_DATABASE: hr_portal
backend:
build:
context: .
dockerfile: Dockerfile
target: backend-builder
ports:
- "3001:3001"
environment:
MONGODB_URI: mongodb://mongodb:27017/hr_portal
JWT_SECRET: dev-secret-key-change-in-production
JWT_REFRESH_SECRET: dev-refresh-secret-change-in-production
PORT: 3001
NODE_ENV: development
SIGNOZ_OTEL_ENDPOINT: http://100.64.0.10:4318/v1/traces
depends_on:
- mongodb
command: node dist/main.js
frontend:
build:
context: .
dockerfile: Dockerfile
target: frontend-builder
ports:
- "3000:3000"
environment:
NEXT_PUBLIC_API_URL: http://localhost:3001
command: node .next/standalone/server.js
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "80:80"
environment:
MONGODB_URI: mongodb://mongodb:27017/hr_portal
JWT_SECRET: dev-secret-key-change-in-production
JWT_REFRESH_SECRET: dev-refresh-secret-change-in-production
PORT: 3001
NODE_ENV: production
SIGNOZ_OTEL_ENDPOINT: http://100.64.0.10:4318/v1/traces
depends_on:
- mongodb
volumes:
mongo_data: