Skip to main content

Overview

This guide walks you through the complete setup process for Transport Logistics, from creating your account to configuring your organization’s logistics infrastructure. By the end of this guide, you’ll have a fully configured account ready for daily operations.
Transport Logistics is a SaaS platform. There’s no software to download or servers to maintain - everything runs in the cloud and is accessible from any modern web browser.

Prerequisites

Before you begin, ensure you have:
  • A valid email address for account creation
  • Your organization’s GST information for transporter setup
  • Vehicle registration numbers and capacity details
  • Route information including origins, destinations, and distances
  • Pricing details (billing rates and vendor rates)

Account Setup

1

Create Your Account

Navigate to the Transport Logistics signup page and create your account.

Sign Up Process

  1. Click “Sign Up” or “Create Account”
  2. Fill in your account information:
// Account creation form (src/pages/SignUp.tsx:15-19)
interface SignUpData {
  username: string;  // Display name (min 3 characters)
  email: string;     // Valid email address
  password: string;  // Secure password (min 6 characters)
}
// From src/pages/SignUp.tsx:36-67
const validations = {
  email: {
    pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
    message: "Please enter a valid email address"
  },
  password: {
    minLength: 6,
    message: "Password must be at least 6 characters"
  },
  username: {
    minLength: 3,
    message: "Username must be at least 3 characters"
  }
};
  1. Click “Create Account”
  2. Check your email for verification
You must verify your email address before you can sign in. Check your spam folder if you don’t receive the verification email within a few minutes.

Authentication System

Transport Logistics uses Supabase for secure authentication:
// Authentication flow (src/context/AuthContext.tsx:157-201)
const signup = async (
  email: string,
  password: string,
  username: string
): Promise<boolean> => {
  // 1. Create user in Supabase Auth
  const { data, error } = await supabase.auth.signUp({
    email,
    password,
    options: {
      data: { username },
      emailRedirectTo: window.location.origin + "/signin"
    }
  });

  // 2. Profile is automatically created via database trigger
  // 3. User receives verification email
  // 4. After verification, user can sign in
  
  return !!data?.user;
};
When you create an account, a profile is automatically created in the database with the “user” role by default. Administrators will need to upgrade your role to “admin” if you need full management access.
2

Verify Email and Sign In

Email Verification

  1. Open the verification email from Transport Logistics
  2. Click the “Verify Email” link
  3. You’ll be redirected to the sign-in page

Sign In

  1. Enter your email and password
  2. Click “Sign In”
// Sign in process (src/context/AuthContext.tsx:121-154)
const login = async (
  email: string, 
  password: string
): Promise<boolean> => {
  const { data, error } = await supabase.auth.signInWithPassword({
    email,
    password
  });

  if (error) {
    toast.error(error.message);
    return false;
  }

  // User profile is loaded from database
  // Role and permissions are applied
  // User is redirected to dashboard
  
  return true;
};
After successful sign-in, you’ll be redirected to your dashboard.
3

Understand User Roles

Transport Logistics has two user roles with different permission levels:

Admin Role

// Admin permissions (full access)
const adminPermissions = {
  transporters: ["create", "read", "update", "activate/deactivate"],
  vehicles: ["create", "read", "update", "toggle_active"],
  routes: ["create", "read", "update"],
  shipments: ["create", "read", "update", "delete"],
  packages: ["create", "read", "update", "toggle_active"],
  materials: ["create", "read", "update", "update_status"],
  users: ["create", "read", "update", "toggle_active", "change_password"],
  reports: ["generate", "export"],
  analytics: ["view_all"]
};

Admin Capabilities

  • Create and manage all transporters, vehicles, and routes
  • Create, edit, and delete shipments
  • Manage user accounts and assign roles
  • View all shipments and packages system-wide
  • Generate reports and access full analytics
  • Configure system settings

User Role

// User permissions (limited access)
const userPermissions = {
  transporters: ["read"],
  vehicles: ["read"],
  routes: ["read"],
  shipments: ["read_assigned_only"],  // Only shipments in assigned packages
  packages: ["read_assigned_only"],
  materials: ["read"],
  analytics: ["view_assigned_only"]
};

User Capabilities

  • View transporters, vehicles, and routes (read-only)
  • View shipments assigned to their packages only
  • View dashboard analytics for their assigned data
  • No ability to create, edit, or delete data
The first account created in your organization should be an admin account. Have your administrator upgrade your role if you need admin permissions.
4

Configure Organization Profile

Set Up Your Company Information

While there’s no dedicated company settings page, you’ll configure your organization implicitly through your first transporter entry if you’re managing in-house operations, or by adding client/vendor information as you onboard partners.

Create Your First Transporter

If you operate your own fleet, add your company as a transporter:
  1. Navigate to Transporters from the sidebar
  2. Click “Add Transporter”
  3. Enter your company details:
const ownCompanyTransporter = {
  name: "Swift Logistics Pvt Ltd",           // Your company name
  gstn: "27AABCU9603R1ZM",                   // Your GST number
  contactPerson: "Operations Manager",       // Internal contact
  contactNumber: "+91-22-12345678",          // Office number
  address: "Corporate Office, Industrial Area, Mumbai, Maharashtra"
};
If you work with external transport companies, you’ll add them as separate transporter entries. Each transporter can have multiple vehicles assigned to them.
5

Set Up Initial Data

Now configure the foundational data for your logistics operations.

Add Transporters

Add all transport companies you work with:
const inHouseTransporter = {
  name: "XYZ Logistics (Internal)",
  gstn: "27AABCU9603R1ZM",
  contactPerson: "Fleet Manager",
  contactNumber: "+91-9876543210",
  address: "Depot 1, Industrial Zone, Mumbai"
};

Register Vehicles

For each transporter, add their vehicles:
// Vehicle configuration (src/pages/Vehicles.tsx:61-68)
const vehicles = [
  {
    transporterId: "transporter-uuid",
    vehicleNumber: "MH-01-AB-1234",
    vehicleType: "Truck",              // Truck, Trailer, Dumper, Train, Other
    capacity: 20,                      // Tons
    status: "Available"
  },
  {
    transporterId: "transporter-uuid",
    vehicleNumber: "MH-12-CD-5678",
    vehicleType: "Trailer",
    capacity: 40,                      // Higher capacity
    status: "Available"
  }
];
Vehicle numbers must be unique across the entire system. The platform will validate for duplicates and prevent registration of vehicles with the same number.

Define Routes

Set up your common transportation routes with pricing:
// Route configuration (src/pages/Routes.tsx:50-66)
const routes = [
  {
    source: "Mumbai Port",
    destination: "Pune Warehouse",
    distanceKm: 150,
    billingRatePerTon: 500,          // Client billing rate
    vendorRatePerTon: 350,           // Transporter payment rate
    assignedPackageId: null          // Optional package assignment
  },
  {
    source: "Pune Warehouse",
    destination: "Nagpur Distribution Center",
    distanceKm: 450,
    billingRatePerTon: 1200,
    vendorRatePerTon: 900,
    assignedPackageId: null
  }
];
Pricing Strategy: Set your billing rate higher than your vendor rate to maintain profitability. The difference is your margin per ton. The platform’s analytics dashboard will help you track revenue vs. cost.

Create Packages (Optional)

For larger organizations, create packages to organize shipments:
const packages = [
  {
    name: "Client A - Monthly Deliveries",
    active: true
  },
  {
    name: "Project B - Q1 2026",
    active: true
  },
  {
    name: "Internal Operations",
    active: true
  }
];
Packages allow you to:
  • Group related routes and shipments
  • Assign specific users to specific packages
  • Control data access based on package assignments
  • Generate package-specific reports

Add Materials (Optional)

Catalog the types of materials you transport:
const materials = [
  {
    name: "Coal",
    unit: "tons",
    status: "available"
  },
  {
    name: "Iron Ore",
    unit: "tons",
    status: "available"
  },
  {
    name: "Construction Materials",
    unit: "cubic meters",
    status: "available"
  }
];
6

Configure Team Access (Admin Only)

If you’re an admin, you can add team members and configure their access.

Add Users

  1. Navigate to User Management from the sidebar
  2. Click “Add User”
  3. Fill in user details:
// User creation (admin only)
const newUser = {
  username: "jane_tracker",
  email: "[email protected]",
  password: "TempPass123!",         // User should change on first login
  role: "user",                     // "admin" or "user"
  assigned_packages: ["package-1-uuid", "package-2-uuid"]
};
Users are created through an admin function and receive credentials via secure channels. They should change their password on first login.

Assign Packages to Users

Control what each user can see by assigning them to specific packages:
// User with package assignments
const userProfile = {
  id: "user-uuid",
  username: "operations_user",
  role: "user",
  assigned_packages: [
    "client-a-package-uuid",
    "project-b-package-uuid"
  ]
};

// This user will only see:
// - Shipments in Client A and Project B packages
// - Routes assigned to these packages
// - Analytics for their assigned data
Admin users can see all packages and shipments regardless of assignments. Package assignments only affect users with the “user” role.

Manage User Status

Control user access with active/inactive status:
  • Active: User can sign in and access the platform
  • Inactive: User cannot sign in; preserves data but revokes access
To deactivate a user:
  1. Go to User Management
  2. Toggle the user’s Active status to off
  3. User will be immediately logged out and cannot sign in again
7

Test Your Configuration

Verify your setup by creating a test shipment:

Create Test Shipment

  1. Navigate to Shipments
  2. Click “Add Shipment”
  3. Fill in test data:
const testShipment = {
  routeId: "mumbai-pune-route",      // Select your test route
  transporterId: "test-transporter",
  vehicleId: "test-vehicle",
  grossWeight: 30.5,
  tareWeight: 8.2,
  quantityTons: 22.3,                // Auto-calculated
  departureTime: "2026-03-07T10:00",
  materialId: "coal",                // Optional
  packageId: "test-package",         // Optional
  remarks: "Test shipment - verification"
};
  1. Save the shipment
  2. Check the dashboard to see it appear

Verify Dashboard Analytics

Your dashboard should now show:
  • Active Shipments: 1 (your test shipment)
  • Total Vehicles: Number of vehicles you registered
  • Total Transporters: Number of transporters you created
  • Monthly Revenue: Calculated from test shipment
// Dashboard calculates revenue automatically
const revenue = {
  shipmentRevenue: 22.3 * 500,      // Quantity × Billing Rate = ₹11,150
  shipmentCost: 22.3 * 350,         // Quantity × Vendor Rate = ₹7,805
  profit: 22.3 * (500 - 350)        // Quantity × Margin = ₹3,345
};

Test User Access (If Applicable)

If you created additional users:
  1. Sign out of your admin account
  2. Sign in with a user account
  3. Verify the user can only see:
    • Shipments in their assigned packages
    • Read-only access to transporters, vehicles, routes
    • No “Add” or “Edit” buttons
  4. Sign back in as admin
You can delete or edit the test shipment once you’ve verified everything works correctly.

System Requirements

Browser Compatibility

Transport Logistics works on all modern browsers:
  • Chrome/Edge: Version 90+
  • Firefox: Version 88+
  • Safari: Version 14+
  • Mobile browsers: iOS Safari 14+, Chrome Mobile
Internet Explorer is not supported. Please use a modern browser for the best experience.

Network Requirements

  • Connection: Broadband internet connection (minimum 1 Mbps)
  • Firewall: Allow HTTPS connections to your Supabase instance
  • Ports: Standard HTTPS (443) must be open

Device Compatibility

The platform is fully responsive and works on:
  • Desktop: Windows, macOS, Linux
  • Tablets: iPad, Android tablets
  • Mobile: iOS and Android phones (responsive design adapts to small screens)
// Mobile detection (src/hooks/use-mobile.tsx)
const isMobile = useIsMobile();  // Automatically detects screen size

// UI adapts based on device:
const columns = isMobile 
  ? reducedColumnsForMobile  // Fewer columns on phones
  : allColumns;               // Full data on desktop

Data Architecture

Database Structure

Transport Logistics uses Supabase (PostgreSQL) with the following main tables:
// Core data model
interface Database {
  profiles: {          // User accounts
    id: string;
    username: string;
    role: "admin" | "user";
    active: boolean;
    assigned_packages: string[];
  };
  
  transporters: {      // Transport companies
    id: string;
    name: string;
    gstn: string;
    contactPerson: string;
    contactNumber: string;
    address: string;
    active: boolean;
  };
  
  vehicles: {          // Fleet vehicles
    id: string;
    transporterId: string;
    vehicleNumber: string;
    vehicleType: string;
    capacity: number;
    status: string;
    active: boolean;
  };
  
  routes: {            // Transportation routes
    id: string;
    source: string;
    destination: string;
    distanceKm: number;
    billingRatePerTon: number;
    vendorRatePerTon: number;
    assignedPackageId: string | null;
  };
  
  shipments: {         // Individual shipments
    id: string;
    transporterId: string;
    vehicleId: string;
    routeId: string;
    packageId: string | null;
    materialId: string | null;
    source: string;
    destination: string;
    grossWeight: number;
    tareWeight: number;
    quantityTons: number;
    departureTime: string;
    arrivalTime: string | null;
    status: string;
    remarks: string;
  };
  
  packages: {          // Organizational groups
    id: string;
    name: string;
    active: boolean;
  };
  
  materials: {         // Material catalog
    id: string;
    name: string;
    unit: string;
    status: string;
  };
}

Row-Level Security (RLS)

The platform uses PostgreSQL RLS policies to ensure data security:
-- Example RLS policy for shipments
CREATE POLICY "Users see only assigned package shipments"
  ON shipments
  FOR SELECT
  USING (
    auth.uid() IN (
      SELECT id FROM profiles WHERE role = 'admin'
    )
    OR
    package_id IN (
      SELECT unnest(assigned_packages) 
      FROM profiles 
      WHERE id = auth.uid()
    )
  );
RLS policies are automatically enforced at the database level, providing an additional security layer beyond application-level checks.

Security Best Practices

Password Management

// Strong password requirements
const passwordPolicy = {
  minLength: 6,                    // Minimum 6 characters
  recommended: {
    length: 12,                    // Recommended 12+ characters
    include: [
      "uppercase letters",
      "lowercase letters",
      "numbers",
      "special characters"
    ]
  }
};
Always use strong, unique passwords. Consider using a password manager to generate and store secure passwords for your team.

Session Management

  • Sessions automatically expire after period of inactivity
  • Users are logged out when marked inactive by admin
  • Tokens are refreshed automatically while user is active

Data Access Control

// Access control is enforced at multiple levels
const securityLayers = [
  "Database RLS policies",           // PostgreSQL row-level security
  "API authentication checks",       // Supabase auth middleware
  "UI role-based rendering",         // React component guards
  "Route protection",                // Navigation guards
];

Backup and Data Safety

As a SaaS platform, all data is automatically backed up by Supabase. Point-in-time recovery is available through your Supabase instance configuration.

Data Export

You can export your data through the Reports section:
  • Shipment reports (Excel/CSV)
  • Vehicle listings
  • Transporter information
  • Revenue analytics

Next Steps

Now that your account is configured, you’re ready to start managing logistics:

Quickstart Guide

Create your first shipment and learn the daily workflow

Shipments

Deep dive into shipment management and tracking

User Management

Learn how to manage your team and assign permissions

Reports & Analytics

Generate insights from your logistics data

Getting Help

If you encounter issues during installation:
  1. Email Verification Issues: Check spam folder, request new verification email
  2. Role Permissions: Contact your administrator to verify your role assignment
  3. Data Access: Ensure you’re assigned to the correct packages
  4. Technical Issues: Check browser console for errors and report to support
Keep your administrator credentials secure and create additional admin accounts as backup to prevent lockouts.

Build docs developers (and LLMs) love