LoadUp is a full-stack logistics platform built with modern technologies, designed to streamline shipment management and delivery operations.
-
Admin Dashboard
- Shipment Management
- Driver Management
- Real-time Tracking
- Analytics & Reporting
-
Driver Mobile App
- Live Navigation
- Shipment Updates
- Status Management
- Customer Communication
-
API Server
- RESTful Endpoints
- Authentication
- Shipment Management
- Driver Tracking
- Admin Dashboard: Next.js 14, TailwindCSS
- Driver App: React Native (Expo)
- State Management: Zustand
- Maps: Mapbox
- Node.js with TypeScript
- PostgreSQL with Drizzle ORM
- Authentication: NextAuth.js
- API Server: Express.js
- Monorepo with Turborepo
- CI/CD with GitHub Actions
- Deployment: Vercel (Admin), Expo (Mobile)
loadup/
βββ apps/
β βββ admin-dashboard/ # Next.js admin panel
β βββ driver-app/ # React Native driver app
βββ packages/
β βββ database/ # Drizzle ORM schema and migrations
β βββ shared/ # Shared utilities and types
β βββ api/ # API server
βββ scripts/ # Utility scripts
βββ docs/ # Documentation
βββ PowerShell Scripts:
βββ run-nextjs.ps1 # Run the admin dashboard
βββ run-driver-app.ps1 # Run the driver app
βββ deploy-admin.ps1 # Deploy admin dashboard to Vercel
- Node.js 18+
- npm or yarn
- PostgreSQL database
- Supabase account (for authentication)
- Google Cloud Vision API key (for OCR)
- Mapbox API key (for maps)
-
Clone the repository:
git clone https://github.com/your-username/loadup.git cd loadup
-
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env # Edit .env with your configuration
Run the admin dashboard:
.\run-nextjs.ps1
Run the driver app:
.\run-driver-app.ps1
Run the admin dashboard:
cd apps/admin-dashboard && npm run dev
Run the driver app:
cd apps/driver-app && npm run start
Deploy the admin dashboard to Vercel:
.\deploy-admin.ps1
For more detailed documentation, please refer to the following:
- PowerShell Compatibility Guide
- Vercel Deployment Guide
- Project Planning
- Current Status
- Next Steps
- Testing Guide
# Run all tests
npm test
# Run specific app tests
npm test --filter=admin-dashboard
npm test --filter=driver-app
- Install Expo Go on your device
- Start the driver app:
cd apps/driver-app npm start
- Scan the QR code with Expo Go
cd apps/admin-dashboard
vercel deploy
cd apps/driver-app
expo publish
# From the root directory
node deploy.js
For more detailed deployment instructions, see DEPLOYMENT.md.
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Our testing infrastructure is built on several layers to ensure comprehensive coverage:
- Located in
__tests__/**/*.unit.ts(x)
- Run with
npm run test:unit
- Focus on individual components and functions
- Uses Jest with ts-jest
- Located in
__tests__/**/*.integration.ts(x)
- Run with
npm run test:integration
- Tests interactions between components
- Includes API and database tests
- Located in
e2e/**/*.spec.ts
- Run with
npm run test:e2e
- Uses Playwright for browser testing
- Tests complete user flows
- Supports multiple browsers and devices
- 80% branch coverage
- 80% function coverage
- 80% line coverage
- 80% statement coverage
# Install dependencies
npm install
# Install Playwright browsers
npm run playwright:install
# Run all tests
npm test
# Run specific test types
npm run test:unit
npm run test:integration
npm run test:e2e
# Run tests with coverage
npm run test:coverage
# Watch mode for development
npm run test:watch
- Tests run automatically on pull requests
- All tests must pass before deployment
- Coverage reports uploaded to Codecov
- E2E test videos and screenshots on failure
We use GitHub Actions for continuous integration and deployment:
- Admin Dashboard: Deployed to Vercel
- Driver App: Deployed to Expo
- API: Deployed to Railway
Application | Status |
---|---|
Admin Dashboard | |
Driver App | |
API |
- Production: Deployed from the
main
branch - Staging/Preview: Deployed from the
develop
branch
For more details on the CI/CD setup, see .github/workflows/README.md.
We use Sentry for error tracking across all applications. Error boundaries are set up to capture and report issues automatically.
This project is proprietary and confidential. Unauthorized copying, distribution, or use is strictly prohibited.
The LoadUp logistics application includes an AI-enhanced Excel parser that intelligently maps column names from uploaded Excel files to standardized field names in the system. This allows for processing of Excel shipment files with varying column naming conventions without requiring manual field mapping.
-
Tiered Field Mapping Approach:
- Direct mapping for exact matches
- Case-insensitive matching for minor variations
- Fuzzy matching for similar names
- AI-powered mapping using OpenAI API for unrecognized columns
- Normalized field names as a final fallback
-
AI Integration with OpenAI:
- Intelligent field mapping using contextual analysis
- Confidence scoring for each mapping
- Caching mechanism to minimize API calls
- Graceful fallbacks for API failures
-
Data Confidence Scoring:
- Overall confidence score for each processed shipment
- Identification of shipments that need manual review
- Special handling for critical fields
- Confidence thresholds configurable via environment variables
-
Enhanced UI Feedback:
- Visual indicators for AI-mapped fields
- Color-coded confidence levels
- Tooltips showing original field names and confidence scores
- CSV export with AI mapping annotations
services/excel/ExcelParserService.ts
- Core Excel parsing logic with AI field mappingservices/ai/OpenAIService.ts
- OpenAI API integration with cachingservices/ai/schema-reference.ts
- Standardized field definitions and synonymsservices/document-processing.ts
- Document processing orchestrationtypes/shipment.ts
- TypeScript types for shipment data
Configure the application with the following environment variables:
# OpenAI API Configuration
OPENAI_API_KEY=your_api_key_here
# AI Mapping Configuration
ENABLE_AI_MAPPING=true
AI_MAPPING_CONFIDENCE_THRESHOLD=0.7
# Logging
LOG_LEVEL=info
import { processDocument } from './services/document-processing';
// Process an Excel file with AI mapping
const result = await processDocument('shipments.xlsx', {
useAIMapping: true,
aiConfidenceThreshold: 0.7
});
// Check if any shipments need review
if (result.needsReview) {
console.log(result.message);
}
// Access the parsed shipment data
const shipments = result.data;
Run the tests using Vitest:
npm test
- Custom Field Mapping Templates: Allow users to create and save custom field mapping templates for specific vendors
- Feedback Loop for AI: Incorporate user corrections to improve future AI mappings
- Batch Processing Optimization: Enhance performance for large batch file processing
- Advanced Validation Rules: Add domain-specific validation rules for shipment data
- Multi-language Support: Extend AI mapping to handle column names in multiple languages