Command center for custom harvesting fleet operations. Manages 97+ combines, support equipment, and crews across multi-state seasonal campaigns.
# 1. Clone and configure
cp .env.example .env
# Edit .env with your JD, Mapbox, and weather API keys
# 2. Start all services
docker compose up -d
# 3. Run database migrations
npm run db:migrate
# 4. Seed development data (97 combines, 65 crew, 70 fields)
npm run db:seed
# 5. Open the app
open http://localhost:5173| Service | Port | Description |
|---|---|---|
| Web | 5173 | React frontend (Command Center) |
| API | 3001 | Fastify REST API + WebSockets |
| Solver | 8001 | Python optimization engine (OR-Tools) |
| PostgreSQL | 5432 | Database with PostGIS |
| Redis | 6379 | Caching + real-time pub/sub |
harvestforge/
βββ docker-compose.yml
βββ packages/
β βββ api/ # Fastify backend
β β βββ src/
β β β βββ routes/ # Endpoint handlers
β β β βββ services/ # Business logic
β β β βββ models/ # DB + Redis clients
β β β βββ jobs/ # Cron jobs (sync, briefing)
β β β βββ seeds/ # Dev data generators
β β βββ migrations/ # SQL migrations
β βββ web/ # React frontend
β β βββ src/
β β βββ pages/ # Route pages
β β βββ components/
β β βββ hooks/
β β βββ services/ # API client
β β βββ store/ # Zustand state
β βββ solver/ # Python optimizer
β β βββ harvestforge_solver/
β βββ shared/ # Types, constants, validation
β βββ mobile/ # React Native (Phase 2)
βββ docker/ # Dockerfiles
# Run API + Web without Docker
npm run dev
# Run solver standalone
npm run dev:solver
# Run tests
npm test
# Create a new migration
npm run db:migrate:create -- my-migration-name- Frontend: React 19, TypeScript, Tailwind, Mapbox GL, Zustand
- API: Fastify 5, PostgreSQL 16 + PostGIS, Redis 7, Zod
- Solver: Python, FastAPI, OR-Tools
- Mobile: React Native (Phase 2)