Skip to main content

Documentation Index

Fetch the complete documentation index at: https://dhanurgo.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Hooks Reference

HostMetrics uses custom React hooks extensively for data fetching, state management, and business logic. All hooks live in src/hooks/.

Complete Hook Index

Data Fetching and CRUD Hooks

HookFilePurposeKey Returns
useKPIssrc/hooks/useKPIs.tsDashboard KPI calculationskpis, isLoading, error
useBookingssrc/hooks/useBookings.tsTrip data with filteringbookings, stats, filters
useCalendarBookingssrc/hooks/useCalendarBookings.tsCalendar view trip databookings, dateRange
useVehiclessrc/hooks/useVehicles.tsVehicle CRUD operationsvehicles, addVehicle, updateVehicle
useVehicle360src/hooks/useVehicle360.tsVehicle deep analyticsanalytics, trends
useVehicleDepreciationsrc/hooks/useVehicleDepreciation.tsDepreciation calculationsdepreciation, method
useVehiclePhotossrc/hooks/useVehiclePhotos.tsPhoto upload and managementphotos, upload, reorder
useVehicleInvestmentssrc/hooks/useVehicleInvestments.tsVehicle investment trackinginvestments
useExpensessrc/hooks/useExpenses.tsExpense managementexpenses, addExpense, deleteExpense
useMiscIncomesrc/hooks/useMiscIncome.tsNon-trip income trackingincomes, addIncome
useDocumentssrc/hooks/useDocuments.tsDocument managementdocuments, upload, delete
useProfilesrc/hooks/useProfile.tsUser profile dataprofile, updateProfile

Partner and Investor Hooks

HookFilePurposeKey Returns
useInvestorssrc/hooks/useInvestors.tsInvestor CRUDinvestors, addInvestor
useInvestorAgreementssrc/hooks/useInvestorAgreements.tsAgreement managementagreements, create, sign
useInvestorDetailModalssrc/hooks/useInvestorDetailModals.tsModal state managementmodalStates, open, close
useVehiclePayoutssrc/hooks/useVehiclePayouts.tsInvestor payout calculationspayouts, calculate
useAgreementTemplatesrc/hooks/useAgreementTemplate.tsAgreement templatestemplate, update

Financial and Analytics Hooks

HookFilePurposeKey Returns
useTollReconciliationsrc/hooks/useTollReconciliation.tsToll-to-trip matchingreconciliation, stats
useTollAccountssrc/hooks/useTollAccounts.tsToll account connectionsaccounts, connect, test
useEarningsDiscrepanciessrc/hooks/useEarningsDiscrepancies.tsUnmatched trip detectiondiscrepancies, resolve
useUtilizationsrc/hooks/useUtilization.tsFleet utilization metricsutilization, trends
useTaxDatasrc/hooks/useTaxData.tsTax document datataxData, generate1099
useBillingsrc/hooks/useBilling.tsSubscription and billingsubscription, plan, invoices

Infrastructure Hooks

HookFilePurposeKey Returns
useFundingRoundssrc/hooks/useFundingRounds.tsFunding round managementrounds, create
useFleetPagessrc/hooks/useFleetPages.tsFleet page CRUDpages, create, update
useFleetVehicleControlssrc/hooks/useFleetVehicleControls.tsFleet page vehicle controlscontrols
useNotificationssrc/hooks/useNotifications.tsNotification managementnotifications, markRead
usePortalAccessLogssrc/hooks/usePortalAccessLogs.tsPortal access audit logslogs

Common Usage Patterns

Basic Data Fetching

Most hooks follow the same pattern: fetch data on mount, expose loading/error states, and provide mutation functions.
'use client';

import { useAuth } from "@/components/auth/AuthProvider";
import { useKPIs } from "@/hooks/useKPIs";
import { useBookings } from "@/hooks/useBookings";
import { useVehicles } from "@/hooks/useVehicles";

export function DashboardPage() {
  const { user } = useAuth();
  const { kpis, isLoading: kpisLoading } = useKPIs();
  const { bookings, stats } = useBookings(filters);
  const { vehicles } = useVehicles();

  if (kpisLoading) return <LoadingSkeleton />;

  return (
    <div>
      <StatGrid kpis={kpis} />
      <TripTable bookings={bookings} />
    </div>
  );
}

Hooks with Filters

Some hooks accept filter parameters that trigger re-fetching when changed:
const [filters, setFilters] = useState({
  status: "completed",
  dateRange: { start: "2026-01-01", end: "2026-03-10" },
  vehicleId: null,
});

const { bookings, stats, isLoading } = useBookings(filters);

CRUD Operations

Hooks that support mutations return functions for create, update, and delete:
const { vehicles, addVehicle, updateVehicle, deleteVehicle } = useVehicles();

// Create
await addVehicle({ make: "Tesla", model: "Model 3", year: 2023 });

// Update
await updateVehicle(vehicleId, { status: "inactive" });

// Delete (soft delete)
await deleteVehicle(vehicleId);

Combining Multiple Hooks

Complex pages often compose several hooks together:
const { vehicles } = useVehicles();
const { expenses } = useExpenses({ vehicleId: selectedVehicle });
const { documents } = useDocuments({ vehicleId: selectedVehicle });
const { depreciation } = useVehicleDepreciation(selectedVehicle);

Hook Conventions

  • All hooks that fetch data include isLoading and error in their return value
  • Data is fetched on component mount via useEffect
  • Hooks call database modules from src/lib/db/ — they never call Supabase directly
  • Auth context (useAuth) provides the current user for all downstream queries
  • Hooks use useCallback for stable mutation function references