A web application for searching U.S. Department of Labor Prevailing Wage Determination (PWD) and PERM labor certification cases. Built with React, Express/Node.js, and MongoDB.
- PWD & PERM Search — filter by company, job title, case number, location, and year
- Case Detail View — full field breakdown for individual PWD and PERM records
- Excel Import — stream-process large DOL
.xlsxdisclosure files into MongoDB with real-time progress - Admin Auth — JWT-protected import and data management endpoints
docker-compose up --build -d| Service | URL |
|---|---|
| Frontend | http://localhost:3000 |
| Backend API | http://localhost:5001 |
| MongoDB | mongodb://localhost:27017 |
# Backend
cd backend
cp .env.example .env # fill in values
npm install
npm run dev
# Frontend (separate terminal)
cd frontend
npm install
npm run devSee backend/.env.example for all required variables:
| Variable | Description |
|---|---|
MONGO_URI |
MongoDB connection string |
JWT_SECRET |
Secret for signing JWT tokens |
ADMIN_INIT_PASSWORD |
Password for the initial admin account (used only when no admin exists) |
The project uses GitHub Actions + ArgoCD on k3s:
- Push to
main→ GitHub Actions builds and pushes images toghcr.io/blueandhack/laborlens-* - CI commits updated image tags to
k8s/ - ArgoCD detects the change and syncs the cluster automatically
To deploy your own instance:
- Edit
k8s/argocd-app.yamlwith your repo URL - Create the required secret on your cluster:
kubectl create secret generic laborlens-secrets \ --from-literal=jwt-secret='...' \ --from-literal=admin-init-password='...' \ -n pwd-lookup kubectl label secret laborlens-secrets -n pwd-lookup app.kubernetes.io/instance=external
- Update
k8s/ingress.yamlwith your domain - Apply the ArgoCD app:
kubectl apply -f k8s/argocd-app.yaml
See docs/secret.example.yaml for the secret format.
Import DOL disclosure data from:
- Foreign Labor Certification Data Center — PWD datasets
- DOL PERM Disclosure Data — PERM datasets