Technical Documentation

DevOps & CI/CD

Auto Glass uses a GitOps-based CI/CD pipeline powered by GitHub Actions, Docker, and Kubernetes. Every code change flows through automated linting, testing, security scanning, and a staged canary deployment before reaching 100% production traffic.

CI/CD Pipeline

Loading diagram…

Environments

EnvironmentTriggerURLPurpose
LocalDeveloper machinelocalhost:3000Feature development with hot-reload
PreviewEvery PR (Vercel)*.autoglass-preview.vercel.appPer-PR visual review; read-only staging DB
StagingMerge to mainstaging.autoglass.ioFull system integration testing with anonymized prod data
ProductionManual approval gateapp.autoglass.ioLive customer traffic; 99.9% SLA

Docker & Kubernetes Setup

# Service Dockerfile pattern (multi-stage)
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

FROM node:22-alpine AS runner
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3001
USER node
CMD ["node", "dist/server.js"]

# K8s HPA config
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: booking-service-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: booking-service
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 60

SLIs, SLOs & Alerting

SLISLO TargetAlert ThresholdEscalation
API Availability≥ 99.9% per month< 99.5% in 1h windowPagerDuty P1
API p95 Latency≤ 300ms> 500ms sustained 5minPagerDuty P2
Error Rate≤ 0.1% of requests> 0.5% in 5min windowPagerDuty P1
Quote Generation Time≤ 2 seconds p99> 4s p99Slack #alerts
Dispatch Assignment Time≤ 30 seconds> 60sSlack #ops
DB Replication Lag≤ 1 second> 5sPagerDuty P2
On-Call Rotation: Primary on-call (Monday–Sunday, 24/7) rotates weekly among 4 senior engineers. PagerDuty escalation: 5 min → Primary → 10 min → Secondary → 20 min → Engineering Manager. Runbooks for all P1 scenarios are maintained in Notion under the Incident Response section.