Skip to content

Design Documentation

Md Fahim Uddin edited this page Jul 16, 2025 · 6 revisions

Smart Route Planning - Design Documentation

1. Summary

Smart Route Planning is a full-stack web application that provides route optimization solutions for field service scheduling. The system leverages Google OR-Tools for combinatorial optimization and integrates with Google Maps APIs to deliver efficient route planning capabilities. Built with modern web technologies, it offers a responsive user interface for managing appointments, configuring fleets, and visualizing optimized routes.

Key Capabilities:

  • CSV-based appointment data import and processing
  • Real-time route optimization using vehicle routing algorithms
  • Interactive map visualization with Google Maps integration
  • Fleet management and company configuration
  • Multi-day scheduling with constraint handling

2. System Architecture

2.1 Architecture Overview

The application follows a client-server architecture with clear separation between presentation, business logic, and data layers:

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Frontend      │    │    Backend      │    │  External APIs  │
│   (React SPA)   │◄──►│   (FastAPI)     │◄──►│ Google Maps API │
│                 │    │                 │    │ Distance Matrix │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│ Browser Storage │    │ Redis Cache     │    │ OR-Tools Solver │
│ (Redux Persist) │    │ (Distance Matrix│    │                 │
└─────────────────┘    │  & Solutions)   │    └─────────────────┘
                       └─────────────────┘
Architecture Diagram:

2.2 Design Principles

  • Modularity: Clear separation of concerns with dedicated modules for optimization, data processing, and API handling
  • Performance: Caching strategies and efficient algorithms to handle large datasets
  • Scalability: Stateless API design supporting horizontal scaling
  • Type Safety: End-to-end TypeScript implementation reducing runtime errors
  • User Experience: Responsive design with real-time feedback and intuitive workflows

3. Technology Stack

3.1 Frontend Technologies

Component Technology Version Purpose
Framework React 19.x Component-based UI development
Language TypeScript 5.7 Type-safe JavaScript development
Build Tool Vite 6.2 Fast development and optimized builds
UI Framework Tailwind CSS 4.1 Utility-first styling
Component Library ShadcnUI Latest Accessible, customizable components
Routing TanStack Router 1.119 Type-safe routing with code splitting
State Management Redux Toolkit 2.7 Predictable state container
Data Fetching TanStack Query 5.72 Server state synchronization
Maps Integration @react-google-maps/api 2.20 Google Maps React components
Form Handling React Hook Form 7.56 Performant form management
Validation Zod 3.24 Schema-based validation

4. System Components

4.1 Frontend Architecture

4.1.1 Application Structure

frontend/src/
├── components/         # Reusable UI components
├── routes/            # File-based routing pages
├── store/             # Redux state management
├── types/             # TypeScript definitions
├── utils/             # API client and utilities
└── lib/               # Third-party configurations

4.1.2 Key Application Routes

  • / - File upload and CSV processing interface
  • /scenarios/ - Calendar overview with appointment scheduling
  • /map-view/ - Interactive route visualization and optimization
  • /daily-plan/ - Detailed daily route breakdown
  • /company-config/ - Fleet and company settings management

4.1.3 State Management

The application uses Redux Toolkit with the following state slices:

  • scenarios - Appointment data from CSV uploads
  • companyInfo - Fleet configuration and company settings
  • solutions - Cached optimization results by date
  • excludedAppointments - User-managed appointment exclusions
  • routeVisibility - Map visualization controls

4.2 Backend Architecture

4.2.1 Application Structure

backend/
├── solver/                    # Optimization engine
│   ├── models.py             # Data models and schemas
│   ├── preprocessing.py      # Data preparation
│   ├── solver.py             # OR-Tools implementation
│   ├── postprocessing.py     # Solution enhancement
│   └── validation.py         # Constraint validation
├── testdata/                 # Test datasets and samples
├── app.py                    # FastAPI application
├── distance_matrix.py        # Google Maps integration with Redis caching
├── inputAnalyzer.py         # CSV processing
└── redis_client.py          # Caching layer

4.2.2 Core Services

  • Optimization Engine: OR-Tools VRP solver with constraint handling
  • Data Processing: CSV parsing, validation, and geocoding
  • External API Integration: Google Maps Distance Matrix and Geocoding with Redis caching
  • Caching Layer: Redis-based performance optimization for distance matrices and solutions
  • Validation Service: Business rule enforcement and data integrity

5. Data Flow

5.1 Route Optimization Workflow

  1. Data Input: CSV appointment data uploaded via frontend
  2. Processing: Backend validates and geocodes addresses
  3. Distance Matrix: Calculate travel times with Redis caching for performance
  4. Optimization: OR-Tools generates optimal vehicle routes using cached distance data
  5. Enhancement: Route refinement and solution post-processing
  6. Caching: Results stored in Redis for performance
  7. Visualization: Routes displayed on interactive maps

5.2 API Communication

The frontend communicates with the backend through RESTful APIs:

  • GET /api/test - Handle test endpoint for API health verification
  • GET /api/redis-health - Redis health check and connection status
  • POST /api/appointments - Receive and process appointment data
  • POST /api/distance-matrix - Calculate full distance matrix with Redis caching
  • POST /api/enhance-opti-request - Enhanced optimization request processing
  • POST /api/solve-without-check - Direct route optimization without validation
  • POST /api/check-and-solve - Validate constraints and solve optimization
  • POST /api/testdata/optimization-request - Test optimization with sample data

6. API Reference

6.1 Core Endpoints

Health Check Endpoints

  • GET /api/test - Basic API health verification
  • GET /api/redis-health - Redis connection status and cache health

Data Processing Endpoints

  • POST /api/appointments - Process appointment data from CSV uploads
  • POST /api/distance-matrix - Calculate travel times and distances with Redis caching

Optimization Endpoints

  • POST /api/enhance-opti-request - Enhanced optimization with additional constraints
  • POST /api/solve-without-check - Direct optimization without pre-validation
  • POST /api/check-and-solve - Validate data and constraints before optimization

Testing Endpoints

  • POST /api/testdata/optimization-request - Test optimization using sample datasets

7. Integration Points

7.1 Google Maps API Integration

  • Maps JavaScript API: Interactive map visualization
  • Distance Matrix API: Travel time and distance calculations with Redis caching
  • Geocoding API: Address validation and coordinate conversion

7.2 External Dependencies

  • Google OR-Tools: Vehicle routing problem optimization
  • Redis: High-performance caching for distance matrices, solutions, and session storage
  • Docker: Containerized deployment and scaling

8. Security Considerations

8.1 API Security

  • Environment-based API key management
  • Input validation using Pydantic models
  • CORS configuration for cross-origin requests
  • Rate limiting for external API calls

8.2 Data Protection

  • Client-side validation with Zod schemas
  • Secure credential storage in environment variables
  • Type safety preventing common security vulnerabilities

9. Performance Optimization

9.1 Frontend Optimizations

  • Code splitting with TanStack Router
  • Redux state persistence for improved UX
  • TanStack Query caching for reduced API calls
  • Lazy loading of components and routes

9.2 Backend Optimizations

  • Redis caching for expensive operations including distance matrix calculations
  • Efficient OR-Tools algorithm configuration
  • Asynchronous API endpoints with FastAPI
  • Cached distance matrix results to minimize Google Maps API calls
  • Intelligent cache invalidation strategies for location-based data

10. Deployment Architecture

10.1 Environment Configuration

# Frontend
VITE_API_URL=http://localhost:8080
VITE_GOOGLE_MAPS_API_KEY=your_api_key
# Backend
GOOGLE_MAPS_API_KEY=your_api_key
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0

10.2 Containerization

  • Docker containers for consistent deployment
  • Separate development and production configurations
  • Environment-specific Docker Compose files

11. Technical Requirements

11.1 System Requirements

  • Frontend: Modern web browser with JavaScript support
  • Backend: Python 3.11+, Redis server
  • External: Google Maps API access with sufficient quotas

11.2 Development Environment

  • Node.js 18+ for frontend development
  • Python 3.11+ with pip for backend development
  • Docker and Docker Compose for containerization
  • Redis server for caching functionality

12. Conclusion

Smart Route Planning delivers a comprehensive solution for field service route optimization through modern web technologies and proven optimization algorithms. The architecture supports scalability, maintainability, and performance while providing an intuitive user experience for complex route planning scenarios. The Redis caching layer significantly improves performance by reducing redundant Google Maps API calls and storing frequently accessed distance matrices.