Daniel Kovalevich 93efb907ff Reorganize frontend into public/ with pages/ and js/ subdirectories
- public/index.html — landing page at root
- public/pages/ — all feature pages (regulations, loadboard, etc.)
- public/js/ — api.js, nav.js, mock data files
- All links updated to absolute paths (/pages/, /js/)
- Express static path updated to serve from public/
- Seed script path updated for new mock data location
- README updated with new project structure and setup guide
- Added .env.example template

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-30 15:52:56 -04:00
2026-03-30 13:56:24 -04:00

PilotEdge — Oversize Load Resource Platform (V1 POC)

What Is This?

A proof-of-concept web application for truck drivers, carriers, and escort/pilot vehicle operators in the oversize/overdimensional freight industry.

⚠️ All regulation data shown is SIMULATED for demonstration purposes and must be verified with actual state DOT regulations before any real-world use.

Prerequisites

Getting Started

1. Clone the repo

git clone <repo-url>
cd pilot-poc

2. Set up PostgreSQL

Create a database called pilotedge:

psql -U postgres -c "CREATE DATABASE pilotedge;"

3. Configure environment

Copy the example env file and update if needed:

cd server
cp .env.example .env

The default .env expects:

DATABASE_URL="postgresql://postgres:postgres@localhost:5432/pilotedge?schema=public"
JWT_SECRET="change-this-to-a-long-random-string"
PORT=3000

Update the DATABASE_URL if your PostgreSQL password or port is different.

4. Install dependencies

cd server
npm install

5. Run database migrations

npm run db:migrate

This creates all 15 tables in your PostgreSQL database via Prisma.

6. Seed the database

npm run db:seed

Populates the database with demonstration data (51 states with regulations, contacts, equipment requirements, truck stops, bridges, weigh stations, alerts, and seasonal restrictions).

7. Start the server

npm run dev

Open http://localhost:3000 in your browser.

Available Scripts

Run these from the server/ directory:

Command Description
npm run dev Start server with auto-reload on file changes
npm start Start server (production)
npm run db:migrate Apply database migrations
npm run db:seed Seed database with demo data
npm run db:reset Drop all data and re-run migrations
npm run db:studio Open Prisma Studio (visual database browser)

Pages

Core

Page URL Description
Home / Platform overview and all feature modules
Regulations Map /pages/regulations.html Interactive US map + equipment requirements by state
Request Service /pages/order.html Escort vehicle service request form

Road Intelligence

Page URL Description
Truck Stops /pages/truckstops.html Oversize-friendly parking with user comments
Bridge Clearances /pages/bridges.html Height/width/weight restrictions for bridges
Weigh Stations /pages/weighstations.html Crowd-sourced open/closed status
Route & Weather /pages/alerts.html Construction, closures, and wind/weather alerts

Services & Resources

Page URL Description
Load Board /pages/loadboard.html Oversize load listings needing escort services
Find Escorts /pages/locator.html Map of available escort vehicle operators
DOT Contacts /pages/contacts.html State permit office phone/email directory
Seasonal Calendar /pages/calendar.html Seasonal restrictions and closure calendar
Document Vault /pages/documents.html Store permits, insurance, certifications

API Endpoints

All endpoints are prefixed with /api. Public endpoints require no authentication; protected endpoints require a Bearer token in the Authorization header.

Public

Method Endpoint Description
GET /api/health Health check
GET /api/regulations All states with regulations
GET /api/regulations/:stateAbbr Single state with equipment requirements
GET /api/contacts All state DOT contacts
GET /api/calendar All seasonal restrictions
GET /api/truckstops?lat=&lng=&radius= Truck stops with optional geospatial filter
GET /api/bridges?maxHeight=&maxWidth= Bridges with optional conflict detection
GET /api/weighstations Weigh stations with status
GET /api/alerts?state=&type= Active route and weather alerts
GET /api/loads Load board listings
GET /api/escorts Escort operator profiles

Auth

Method Endpoint Description
POST /api/auth/register Create account (email, password, name, role)
POST /api/auth/login Login and receive JWT token
GET /api/auth/me Get current user profile (protected)

Protected (requires auth)

Method Endpoint Description
POST /api/loads Post a new load
PUT /api/loads/:id Update own load
DELETE /api/loads/:id Delete own load
POST /api/escorts/profile Create/update escort profile
POST /api/orders Submit escort service request
GET /api/orders List own orders
POST/GET/DELETE /api/documents Upload, list, download, delete documents
POST /api/contributions Submit user contributions

Tech Stack

Project Structure

pilot-poc/
├── public/                     # Frontend (served by Express)
│   ├── index.html              # Landing page
│   ├── pages/
│   │   ├── regulations.html    # State regulations map
│   │   ├── order.html          # Escort service request form
│   │   ├── loadboard.html      # Oversize load board
│   │   ├── locator.html        # Escort operator locator
│   │   ├── truckstops.html     # Oversize-friendly truck stops
│   │   ├── bridges.html        # Bridge clearance database
│   │   ├── weighstations.html  # Weigh station status
│   │   ├── alerts.html         # Route & weather alerts
│   │   ├── contacts.html       # State DOT contact directory
│   │   ├── calendar.html       # Seasonal restriction calendar
│   │   └── documents.html      # Document vault
│   └── js/
│       ├── api.js              # Frontend API client
│       ├── nav.js              # Shared navigation component
│       ├── mock-data.js        # Original mock data (preserved)
│       └── mock-data-extended.js
│
├── server/
│   ├── package.json
│   ├── .env                    # Environment config (not in git)
│   ├── .env.example            # Template for .env
│   ├── prisma/
│   │   └── schema.prisma       # Database schema (15 models)
│   └── src/
│       ├── index.js            # Express app entry point
│       ├── config/db.js        # Prisma client
│       ├── middleware/
│       │   ├── auth.js         # JWT verification
│       │   └── errorHandler.js
│       ├── routes/             # 13 API route files
│       └── seeds/seed.js       # Database seeder
│
├── PLAN.md                     # Product plan and module breakdown
└── README.md

## Next Steps
- Replace demo data with real, verified state regulation data
- Integrate payment processing for subscriptions
- Add real-time weigh station status updates (WebSockets)
- File storage service (S3) for document vault
- Email notifications for regulatory change alerts
- Deploy to a Cloud VPS (DigitalOcean, Linode, etc.)
Description
No description provided
Readme 260 KiB
Languages
HTML 50.5%
JavaScript 49.5%