diff --git a/docs/ERROR_LOGGING_COMPLETE.md b/docs/ERROR_LOGGING_COMPLETE.md
index 48006c98..e8921c5e 100644
--- a/docs/ERROR_LOGGING_COMPLETE.md
+++ b/docs/ERROR_LOGGING_COMPLETE.md
@@ -51,12 +51,40 @@ Implemented automatic breadcrumb tracking across the application:
#### API Call Tracking (NEW)
- Created `src/lib/supabaseClient.ts` with automatic tracking
- Wraps Supabase client with Proxy for transparent tracking
+- **CRITICAL:** All frontend code MUST import from `@/lib/supabaseClient` (not `@/integrations/supabase/client`)
+- 175+ files updated to use wrapped client
- Tracks:
- Database queries (`supabase.from('table').select()`)
- RPC calls (`supabase.rpc('function_name')`)
- Storage operations (`supabase.storage.from('bucket')`)
- Automatically captures success and error status codes
+### 4. Critical: Import Standardization ✅
+**Status:** FIXED
+
+Updated 175+ files across the application to use the wrapped Supabase client:
+
+**Before:**
+```typescript
+import { supabase } from '@/integrations/supabase/client';
+```
+
+**After:**
+```typescript
+import { supabase } from '@/lib/supabaseClient';
+```
+
+**Why This Matters:**
+- The wrapped client automatically tracks all API calls as breadcrumbs
+- Without this change, ZERO API breadcrumbs would be captured
+- This is essential for debugging - breadcrumbs show the sequence of events leading to errors
+
+**Exceptions (4 files that intentionally use base client):**
+1. `src/integrations/supabase/client.ts` - Base client definition
+2. `src/lib/supabaseClient.ts` - Creates the wrapper
+3. `src/lib/errorHandler.ts` - Uses base client to avoid circular dependencies when logging errors
+4. `src/lib/requestTracking.ts` - Uses base client to avoid infinite tracking loops
+
## How to Use the Enhanced System
### 1. Handling Errors
@@ -91,8 +119,8 @@ import { Button } from '@/components/ui/button';
### 3. API Calls (Automatic)
```typescript
-// Just use supabase normally - tracking is automatic
-import { supabase } from '@/integrations/supabase/client';
+// CRITICAL: Import from @/lib/supabaseClient (NOT @/integrations/supabase/client)
+import { supabase } from '@/lib/supabaseClient';
const { data, error } = await supabase
.from('parks')
@@ -105,6 +133,8 @@ Breadcrumbs automatically record:
- Method: `SELECT`
- Status: 200 or 400/500 on error
+**Important:** Using the wrong import (`@/integrations/supabase/client`) means NO API calls will be tracked as breadcrumbs!
+
### 4. Manual Breadcrumbs (When Needed)
```typescript
import { breadcrumb } from '@/lib/errorBreadcrumbs';
@@ -163,6 +193,11 @@ breadcrumb.userAction('submitted', 'ContactForm', { subject: 'Support' });
- [x] Breadcrumbs captured automatically for navigation
- [x] Breadcrumbs captured for button clicks (when labeled)
- [x] API calls tracked automatically
+- [x] All 175+ files updated to use wrapped client
+- [x] Verified only 4 files use base client (expected exceptions)
+- [ ] **Test error generated at `/test-error-logging`**
+- [ ] **Verify breadcrumbs contain API calls**
+- [ ] **Verify timezone and referrer fields populated**
- [x] Error Monitoring Dashboard displays all data
- [x] Error Details Modal shows breadcrumbs in correct order
- [x] Error Lookup finds errors by reference ID
diff --git a/src/App.tsx b/src/App.tsx
index c28d87aa..642e91c8 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -24,6 +24,9 @@ import Rides from "./pages/Rides";
import Search from "./pages/Search";
import Auth from "./pages/Auth";
+// Temporary test component for error logging verification
+import { TestErrorLogging } from "./test-error-logging";
+
// Detail routes (lazy-loaded)
const ParkDetail = lazy(() => import("./pages/ParkDetail"));
const RideDetail = lazy(() => import("./pages/RideDetail"));
@@ -362,6 +365,10 @@ function AppContent(): React.JSX.Element {
{/* Utility routes - lazy loaded */}
} />
+
+ {/* Temporary test route - DELETE AFTER TESTING */}
+ } />
+
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
} />
diff --git a/src/components/auth/MFARemovalDialog.tsx b/src/components/auth/MFARemovalDialog.tsx
index a8fc54f3..005d67fc 100644
--- a/src/components/auth/MFARemovalDialog.tsx
+++ b/src/components/auth/MFARemovalDialog.tsx
@@ -1,5 +1,5 @@
import { useState, useEffect } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { invokeWithTracking } from '@/lib/edgeFunctionTracking';
import { useToast } from '@/hooks/use-toast';
import { getErrorMessage } from '@/lib/errorHandler';
diff --git a/src/components/auth/TOTPSetup.tsx b/src/components/auth/TOTPSetup.tsx
index 9cb7ab1f..932c754b 100644
--- a/src/components/auth/TOTPSetup.tsx
+++ b/src/components/auth/TOTPSetup.tsx
@@ -9,7 +9,7 @@ import { handleError, handleSuccess, handleInfo, AppError, getErrorMessage } fro
import { logger } from '@/lib/logger';
import { useAuth } from '@/hooks/useAuth';
import { useRequireMFA } from '@/hooks/useRequireMFA';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Smartphone, Shield, Copy, Eye, EyeOff, Trash2, AlertTriangle } from 'lucide-react';
import { MFARemovalDialog } from './MFARemovalDialog';
import { setStepUpRequired, getAuthMethod } from '@/lib/sessionFlags';
diff --git a/src/components/designers/DesignerFilters.tsx b/src/components/designers/DesignerFilters.tsx
index 6fa43166..1f1b9db9 100644
--- a/src/components/designers/DesignerFilters.tsx
+++ b/src/components/designers/DesignerFilters.tsx
@@ -6,7 +6,7 @@ import { Label } from '@/components/ui/label';
import { Separator } from '@/components/ui/separator';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { RotateCcw } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider';
import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker';
import { FilterSection } from '@/components/filters/FilterSection';
diff --git a/src/components/lists/ListDisplay.tsx b/src/components/lists/ListDisplay.tsx
index 6939deea..d7c806e9 100644
--- a/src/components/lists/ListDisplay.tsx
+++ b/src/components/lists/ListDisplay.tsx
@@ -1,6 +1,6 @@
import { useState, useEffect } from "react";
import { UserTopList, UserTopListItem, Park, Ride, Company } from "@/types/database";
-import { supabase } from "@/integrations/supabase/client";
+import { supabase } from "@/lib/supabaseClient";
import { Link } from "react-router-dom";
import { Badge } from "@/components/ui/badge";
import { handleError } from "@/lib/errorHandler";
diff --git a/src/components/lists/ListItemEditor.tsx b/src/components/lists/ListItemEditor.tsx
index db5de975..4a41cd26 100644
--- a/src/components/lists/ListItemEditor.tsx
+++ b/src/components/lists/ListItemEditor.tsx
@@ -1,6 +1,6 @@
import { useState, useEffect } from "react";
import { UserTopList, UserTopListItem } from "@/types/database";
-import { supabase } from "@/integrations/supabase/client";
+import { supabase } from "@/lib/supabaseClient";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
diff --git a/src/components/lists/ListSearch.tsx b/src/components/lists/ListSearch.tsx
index 96ceed5c..12694dbf 100644
--- a/src/components/lists/ListSearch.tsx
+++ b/src/components/lists/ListSearch.tsx
@@ -1,5 +1,5 @@
import { useState, useEffect } from "react";
-import { supabase } from "@/integrations/supabase/client";
+import { supabase } from "@/lib/supabaseClient";
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
import { Search, Plus, X } from "lucide-react";
diff --git a/src/components/lists/UserListManager.tsx b/src/components/lists/UserListManager.tsx
index 5cdeab0d..740db362 100644
--- a/src/components/lists/UserListManager.tsx
+++ b/src/components/lists/UserListManager.tsx
@@ -1,6 +1,6 @@
import { useState, useEffect } from "react";
import { useAuth } from "@/hooks/useAuth";
-import { supabase } from "@/integrations/supabase/client";
+import { supabase } from "@/lib/supabaseClient";
import { UserTopList, UserTopListItem } from "@/types/database";
import { Button } from "@/components/ui/button";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
diff --git a/src/components/manufacturers/ManufacturerFilters.tsx b/src/components/manufacturers/ManufacturerFilters.tsx
index 94b042c4..18815641 100644
--- a/src/components/manufacturers/ManufacturerFilters.tsx
+++ b/src/components/manufacturers/ManufacturerFilters.tsx
@@ -6,7 +6,7 @@ import { Label } from '@/components/ui/label';
import { Separator } from '@/components/ui/separator';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { RotateCcw } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider';
import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker';
import { FilterSection } from '@/components/filters/FilterSection';
diff --git a/src/components/moderation/EntityEditPreview.tsx b/src/components/moderation/EntityEditPreview.tsx
index 1a427944..0bfaf82d 100644
--- a/src/components/moderation/EntityEditPreview.tsx
+++ b/src/components/moderation/EntityEditPreview.tsx
@@ -1,7 +1,7 @@
import { useState, useEffect } from 'react';
import { Badge } from '@/components/ui/badge';
import { Card, CardContent } from '@/components/ui/card';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Image as ImageIcon } from 'lucide-react';
import { PhotoModal } from './PhotoModal';
import { handleError } from '@/lib/errorHandler';
diff --git a/src/components/moderation/PhotoSubmissionDisplay.tsx b/src/components/moderation/PhotoSubmissionDisplay.tsx
index 6607f867..ca9c4a80 100644
--- a/src/components/moderation/PhotoSubmissionDisplay.tsx
+++ b/src/components/moderation/PhotoSubmissionDisplay.tsx
@@ -1,5 +1,5 @@
import { useState, useEffect } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { PhotoGrid } from '@/components/common/PhotoGrid';
import type { PhotoSubmissionItem } from '@/types/photo-submissions';
import type { PhotoItem } from '@/types/photos';
diff --git a/src/components/moderation/ProfileManager.tsx b/src/components/moderation/ProfileManager.tsx
index 0374b0a4..417f0b4d 100644
--- a/src/components/moderation/ProfileManager.tsx
+++ b/src/components/moderation/ProfileManager.tsx
@@ -1,6 +1,6 @@
import { useState, useEffect } from 'react';
import { Search, Shield, Trash2, Ban, AlertTriangle } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { useUserRole, UserRole } from '@/hooks/useUserRole';
import { useSuperuserGuard } from '@/hooks/useSuperuserGuard';
diff --git a/src/components/moderation/ReassignDialog.tsx b/src/components/moderation/ReassignDialog.tsx
index da13b172..fe2b5b10 100644
--- a/src/components/moderation/ReassignDialog.tsx
+++ b/src/components/moderation/ReassignDialog.tsx
@@ -17,7 +17,7 @@ import {
SelectTrigger,
SelectValue,
} from '@/components/ui/select';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { handleError, getErrorMessage } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
diff --git a/src/components/moderation/RecentActivity.tsx b/src/components/moderation/RecentActivity.tsx
index 02be5117..6fbdb160 100644
--- a/src/components/moderation/RecentActivity.tsx
+++ b/src/components/moderation/RecentActivity.tsx
@@ -1,5 +1,5 @@
import { useState, useEffect, forwardRef, useImperativeHandle } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { handleError } from '@/lib/errorHandler';
import { ActivityCard } from './ActivityCard';
diff --git a/src/components/moderation/ReportButton.tsx b/src/components/moderation/ReportButton.tsx
index bf766d18..35fc7297 100644
--- a/src/components/moderation/ReportButton.tsx
+++ b/src/components/moderation/ReportButton.tsx
@@ -19,7 +19,7 @@ import {
} from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { Label } from '@/components/ui/label';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { useToast } from '@/hooks/use-toast';
import { getErrorMessage } from '@/lib/errorHandler';
diff --git a/src/components/moderation/ReportsQueue.tsx b/src/components/moderation/ReportsQueue.tsx
index f5c55338..8865b1c4 100644
--- a/src/components/moderation/ReportsQueue.tsx
+++ b/src/components/moderation/ReportsQueue.tsx
@@ -17,7 +17,7 @@ import {
PaginationNext,
PaginationPrevious,
} from '@/components/ui/pagination';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { format } from 'date-fns';
import { useAdminSettings } from '@/hooks/useAdminSettings';
import { useAuth } from '@/hooks/useAuth';
diff --git a/src/components/moderation/SubmissionItemsList.tsx b/src/components/moderation/SubmissionItemsList.tsx
index c4190724..f58eeb14 100644
--- a/src/components/moderation/SubmissionItemsList.tsx
+++ b/src/components/moderation/SubmissionItemsList.tsx
@@ -1,5 +1,5 @@
import { useState, useEffect, memo } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { SubmissionChangesDisplay } from './SubmissionChangesDisplay';
import { PhotoSubmissionDisplay } from './PhotoSubmissionDisplay';
import { Skeleton } from '@/components/ui/skeleton';
diff --git a/src/components/moderation/UserRoleManager.tsx b/src/components/moderation/UserRoleManager.tsx
index 09a3d7e0..a2c3524e 100644
--- a/src/components/moderation/UserRoleManager.tsx
+++ b/src/components/moderation/UserRoleManager.tsx
@@ -6,7 +6,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { useUserRole } from '@/hooks/useUserRole';
import { handleError, handleSuccess, getErrorMessage } from '@/lib/errorHandler';
diff --git a/src/components/operators/OperatorFilters.tsx b/src/components/operators/OperatorFilters.tsx
index 8e2b2d4f..23faebe5 100644
--- a/src/components/operators/OperatorFilters.tsx
+++ b/src/components/operators/OperatorFilters.tsx
@@ -5,7 +5,7 @@ import { Checkbox } from '@/components/ui/checkbox';
import { Label } from '@/components/ui/label';
import { Separator } from '@/components/ui/separator';
import { RotateCcw } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider';
import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker';
import { FilterSection } from '@/components/filters/FilterSection';
diff --git a/src/components/parks/ParkFilters.tsx b/src/components/parks/ParkFilters.tsx
index e63f0e9c..63779d4a 100644
--- a/src/components/parks/ParkFilters.tsx
+++ b/src/components/parks/ParkFilters.tsx
@@ -5,7 +5,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { Button } from '@/components/ui/button';
import { Separator } from '@/components/ui/separator';
import { RotateCcw } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Park } from '@/types/database';
import { FilterState } from '@/pages/Parks';
import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider';
diff --git a/src/components/parks/ParkGrid.tsx b/src/components/parks/ParkGrid.tsx
index bdeb8a9f..03245b7d 100644
--- a/src/components/parks/ParkGrid.tsx
+++ b/src/components/parks/ParkGrid.tsx
@@ -7,7 +7,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { Sheet, SheetContent, SheetTrigger, SheetHeader, SheetTitle } from '@/components/ui/sheet';
import { ParkCard } from './ParkCard';
import { Park } from '@/types/database';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { getErrorMessage } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
diff --git a/src/components/privacy/BlockedUsers.tsx b/src/components/privacy/BlockedUsers.tsx
index eea347a5..eeb1e9db 100644
--- a/src/components/privacy/BlockedUsers.tsx
+++ b/src/components/privacy/BlockedUsers.tsx
@@ -3,7 +3,7 @@ import { Button } from '@/components/ui/button';
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@/components/ui/alert-dialog';
import { UserX, Trash2 } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { handleError, handleSuccess } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
diff --git a/src/components/profile/AddRideCreditDialog.tsx b/src/components/profile/AddRideCreditDialog.tsx
index cc464a4a..f4622e7e 100644
--- a/src/components/profile/AddRideCreditDialog.tsx
+++ b/src/components/profile/AddRideCreditDialog.tsx
@@ -4,7 +4,7 @@ import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { AutocompleteSearch } from '@/components/search/AutocompleteSearch';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { toast } from 'sonner';
import { getErrorMessage } from '@/lib/errorHandler';
import { Calendar } from '@/components/ui/calendar';
diff --git a/src/components/profile/RideCreditCard.tsx b/src/components/profile/RideCreditCard.tsx
index df820c0b..ba8b46bc 100644
--- a/src/components/profile/RideCreditCard.tsx
+++ b/src/components/profile/RideCreditCard.tsx
@@ -6,7 +6,7 @@ import { Input } from '@/components/ui/input';
import { Calendar, MapPin, Edit, Trash2, Plus, Minus, Check, X, Star, Factory, Gauge, Ruler, Zap } from 'lucide-react';
import { Link } from 'react-router-dom';
import { format } from 'date-fns';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { toast } from 'sonner';
import { getErrorMessage } from '@/lib/errorHandler';
import { UserRideCredit } from '@/types/database';
diff --git a/src/components/profile/RideCreditsManager.tsx b/src/components/profile/RideCreditsManager.tsx
index fad6dd9e..876f15fa 100644
--- a/src/components/profile/RideCreditsManager.tsx
+++ b/src/components/profile/RideCreditsManager.tsx
@@ -3,7 +3,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Plus, LayoutGrid, List, GripVertical } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { toast } from 'sonner';
import { handleError } from '@/lib/errorHandler';
import { AddRideCreditDialog } from './AddRideCreditDialog';
diff --git a/src/components/profile/UserBlockButton.tsx b/src/components/profile/UserBlockButton.tsx
index 52449d6f..2b82b7ab 100644
--- a/src/components/profile/UserBlockButton.tsx
+++ b/src/components/profile/UserBlockButton.tsx
@@ -4,7 +4,7 @@ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { UserX } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { useToast } from '@/hooks/use-toast';
import { getErrorMessage } from '@/lib/errorHandler';
diff --git a/src/components/profile/UserReviewsList.tsx b/src/components/profile/UserReviewsList.tsx
index 80ae8c64..decd0676 100644
--- a/src/components/profile/UserReviewsList.tsx
+++ b/src/components/profile/UserReviewsList.tsx
@@ -5,7 +5,7 @@ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
import { Badge } from '@/components/ui/badge';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Star, Calendar, MapPin, Edit, Trash2, ThumbsUp } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { StarRating } from '@/components/reviews/StarRating';
import { Button } from '@/components/ui/button';
import { Link } from 'react-router-dom';
diff --git a/src/components/rides/RatingDistribution.tsx b/src/components/rides/RatingDistribution.tsx
index 749e0e4b..90695f4b 100644
--- a/src/components/rides/RatingDistribution.tsx
+++ b/src/components/rides/RatingDistribution.tsx
@@ -1,5 +1,5 @@
import { useEffect, useState } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Progress } from '@/components/ui/progress';
import { Star } from 'lucide-react';
diff --git a/src/components/rides/RecentPhotosPreview.tsx b/src/components/rides/RecentPhotosPreview.tsx
index e661fff5..d4f0d09b 100644
--- a/src/components/rides/RecentPhotosPreview.tsx
+++ b/src/components/rides/RecentPhotosPreview.tsx
@@ -1,5 +1,5 @@
import { useEffect, useState } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { Camera } from 'lucide-react';
diff --git a/src/components/rides/RideFilters.tsx b/src/components/rides/RideFilters.tsx
index 5820e759..d0520453 100644
--- a/src/components/rides/RideFilters.tsx
+++ b/src/components/rides/RideFilters.tsx
@@ -6,7 +6,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { Checkbox } from '@/components/ui/checkbox';
import { Separator } from '@/components/ui/separator';
import { RotateCcw } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider';
import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker';
import { FilterSection } from '@/components/filters/FilterSection';
diff --git a/src/components/rides/SimilarRides.tsx b/src/components/rides/SimilarRides.tsx
index ff1c74b4..80627c32 100644
--- a/src/components/rides/SimilarRides.tsx
+++ b/src/components/rides/SimilarRides.tsx
@@ -1,6 +1,6 @@
import { useEffect, useState } from 'react';
import { Link } from 'react-router-dom';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { RideCard } from '@/components/rides/RideCard';
diff --git a/src/components/search/SearchResults.tsx b/src/components/search/SearchResults.tsx
index 93bdae99..d6b0c2e3 100644
--- a/src/components/search/SearchResults.tsx
+++ b/src/components/search/SearchResults.tsx
@@ -6,7 +6,7 @@ import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
import { MapPin, Star, Search as SearchIcon, Castle, FerrisWheel, Waves, Theater, Factory } from 'lucide-react';
import { Park, Ride, Company } from '@/types/database';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useNavigate } from 'react-router-dom';
import { getErrorMessage } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
diff --git a/src/components/settings/AccountDeletionDialog.tsx b/src/components/settings/AccountDeletionDialog.tsx
index 160942b4..32e9f0ae 100644
--- a/src/components/settings/AccountDeletionDialog.tsx
+++ b/src/components/settings/AccountDeletionDialog.tsx
@@ -6,7 +6,7 @@ import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Checkbox } from '@/components/ui/checkbox';
import { Alert, AlertDescription } from '@/components/ui/alert';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Loader2, AlertTriangle, Info } from 'lucide-react';
import {
deletionDialogReducer,
diff --git a/src/components/settings/AccountProfileTab.tsx b/src/components/settings/AccountProfileTab.tsx
index e3174e36..24b9014f 100644
--- a/src/components/settings/AccountProfileTab.tsx
+++ b/src/components/settings/AccountProfileTab.tsx
@@ -11,7 +11,7 @@ import { Separator } from '@/components/ui/separator';
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@/components/ui/alert-dialog';
import { useAuth } from '@/hooks/useAuth';
import { useProfile } from '@/hooks/useProfile';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Trash2, Mail, AlertCircle, X, Check, Loader2 } from 'lucide-react';
import { PhotoUpload } from '@/components/upload/PhotoUpload';
import { notificationService } from '@/lib/notificationService';
diff --git a/src/components/settings/DataExportTab.tsx b/src/components/settings/DataExportTab.tsx
index 46f71d81..d37d0d3f 100644
--- a/src/components/settings/DataExportTab.tsx
+++ b/src/components/settings/DataExportTab.tsx
@@ -8,7 +8,7 @@ import { Switch } from '@/components/ui/switch';
import { Label } from '@/components/ui/label';
import { useAuth } from '@/hooks/useAuth';
import { useProfile } from '@/hooks/useProfile';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { handleError, handleSuccess, AppError } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
import { Download, Activity, BarChart3, AlertCircle, Clock } from 'lucide-react';
diff --git a/src/components/settings/DeletionStatusBanner.tsx b/src/components/settings/DeletionStatusBanner.tsx
index 74f06b11..3a084bd5 100644
--- a/src/components/settings/DeletionStatusBanner.tsx
+++ b/src/components/settings/DeletionStatusBanner.tsx
@@ -1,6 +1,6 @@
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
import { Button } from '@/components/ui/button';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { invokeWithTracking } from '@/lib/edgeFunctionTracking';
import { useToast } from '@/hooks/use-toast';
import { AlertTriangle, Loader2 } from 'lucide-react';
diff --git a/src/components/settings/EmailChangeDialog.tsx b/src/components/settings/EmailChangeDialog.tsx
index d36b01ef..6b57ab2b 100644
--- a/src/components/settings/EmailChangeDialog.tsx
+++ b/src/components/settings/EmailChangeDialog.tsx
@@ -22,7 +22,7 @@ import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
import { handleError, handleSuccess, AppError, getErrorMessage } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Loader2, Mail, CheckCircle2, AlertCircle } from 'lucide-react';
import { TurnstileCaptcha } from '@/components/auth/TurnstileCaptcha';
import { useTheme } from '@/components/theme/ThemeProvider';
diff --git a/src/components/settings/EmailChangeStatus.tsx b/src/components/settings/EmailChangeStatus.tsx
index 2301c4dd..f9aa3853 100644
--- a/src/components/settings/EmailChangeStatus.tsx
+++ b/src/components/settings/EmailChangeStatus.tsx
@@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button';
import { Separator } from '@/components/ui/separator';
import { Progress } from '@/components/ui/progress';
import { Mail, Info, CheckCircle2, Circle, Loader2 } from 'lucide-react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { handleError, handleSuccess } from '@/lib/errorHandler';
interface EmailChangeStatusProps {
diff --git a/src/components/settings/LocationTab.tsx b/src/components/settings/LocationTab.tsx
index 4350bf03..9ba0e25c 100644
--- a/src/components/settings/LocationTab.tsx
+++ b/src/components/settings/LocationTab.tsx
@@ -13,7 +13,7 @@ import { Skeleton } from '@/components/ui/skeleton';
import { useAuth } from '@/hooks/useAuth';
import { useProfile } from '@/hooks/useProfile';
import { useUnitPreferences } from '@/hooks/useUnitPreferences';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { handleError, handleSuccess, AppError } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
import { MapPin, Calendar, Accessibility, Ruler } from 'lucide-react';
diff --git a/src/components/settings/PasswordUpdateDialog.tsx b/src/components/settings/PasswordUpdateDialog.tsx
index e9c18eeb..5b1f8095 100644
--- a/src/components/settings/PasswordUpdateDialog.tsx
+++ b/src/components/settings/PasswordUpdateDialog.tsx
@@ -15,7 +15,7 @@ import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { handleError, handleSuccess, AppError, getErrorMessage } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Loader2, Shield, CheckCircle2 } from 'lucide-react';
import { InputOTP, InputOTPGroup, InputOTPSlot } from '@/components/ui/input-otp';
import { TurnstileCaptcha } from '@/components/auth/TurnstileCaptcha';
diff --git a/src/components/settings/PrivacyTab.tsx b/src/components/settings/PrivacyTab.tsx
index dff8da03..8c7075e3 100644
--- a/src/components/settings/PrivacyTab.tsx
+++ b/src/components/settings/PrivacyTab.tsx
@@ -11,7 +11,7 @@ import { handleError, handleSuccess, AppError } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
import { useAuth } from '@/hooks/useAuth';
import { useProfile } from '@/hooks/useProfile';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Eye, UserX, Shield, Search } from 'lucide-react';
import { BlockedUsers } from '@/components/privacy/BlockedUsers';
import type { PrivacySettings, PrivacyFormData } from '@/types/privacy';
diff --git a/src/components/settings/SecurityTab.tsx b/src/components/settings/SecurityTab.tsx
index 391167a8..cf9df01e 100644
--- a/src/components/settings/SecurityTab.tsx
+++ b/src/components/settings/SecurityTab.tsx
@@ -23,7 +23,7 @@ import {
} from '@/lib/identityService';
import type { UserIdentity, OAuthProvider } from '@/types/identity';
import type { AuthSession } from '@/types/auth';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { logger } from '@/lib/logger';
import { SessionRevokeConfirmDialog } from './SessionRevokeConfirmDialog';
diff --git a/src/components/timeline/EntityTimelineManager.tsx b/src/components/timeline/EntityTimelineManager.tsx
index b9a3aeca..c4770dc1 100644
--- a/src/components/timeline/EntityTimelineManager.tsx
+++ b/src/components/timeline/EntityTimelineManager.tsx
@@ -6,7 +6,7 @@ import { TimelineEventEditorDialog } from './TimelineEventEditorDialog';
import { TimelineEventCard } from './TimelineEventCard';
import { EntityHistoryTimeline } from '@/components/history/EntityHistoryTimeline';
import { useQuery } from '@tanstack/react-query';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { toast } from 'sonner';
import { getErrorMessage, handleError } from '@/lib/errorHandler';
diff --git a/src/components/upload/EntityMultiImageUploader.tsx b/src/components/upload/EntityMultiImageUploader.tsx
index 497fd939..4a1fe2b4 100644
--- a/src/components/upload/EntityMultiImageUploader.tsx
+++ b/src/components/upload/EntityMultiImageUploader.tsx
@@ -10,7 +10,7 @@ import {
ContextMenuTrigger,
} from '@/components/ui/context-menu';
import { DragDropZone } from './DragDropZone';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { toast } from '@/hooks/use-toast';
import { Skeleton } from '@/components/ui/skeleton';
import { Alert, AlertDescription } from '@/components/ui/alert';
diff --git a/src/components/upload/EntityPhotoGallery.tsx b/src/components/upload/EntityPhotoGallery.tsx
index c6ff02e3..fddc6b04 100644
--- a/src/components/upload/EntityPhotoGallery.tsx
+++ b/src/components/upload/EntityPhotoGallery.tsx
@@ -14,7 +14,7 @@ import { useNavigate } from 'react-router-dom';
import { UppyPhotoSubmissionUpload } from '@/components/upload/UppyPhotoSubmissionUpload';
import { PhotoManagementDialog } from '@/components/upload/PhotoManagementDialog';
import { PhotoModal } from '@/components/moderation/PhotoModal';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { EntityPhotoGalleryProps } from '@/types/submissions';
import { useUserRole } from '@/hooks/useUserRole';
import { getErrorMessage } from '@/lib/errorHandler';
diff --git a/src/components/upload/PhotoManagementDialog.tsx b/src/components/upload/PhotoManagementDialog.tsx
index 1c9cced5..7365242a 100644
--- a/src/components/upload/PhotoManagementDialog.tsx
+++ b/src/components/upload/PhotoManagementDialog.tsx
@@ -1,5 +1,5 @@
import { useState, useEffect } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { Button } from '@/components/ui/button';
import {
Dialog,
diff --git a/src/components/upload/PhotoUpload.tsx b/src/components/upload/PhotoUpload.tsx
index 55c3d275..84a08ea1 100644
--- a/src/components/upload/PhotoUpload.tsx
+++ b/src/components/upload/PhotoUpload.tsx
@@ -14,7 +14,7 @@ import {
} from 'lucide-react';
import { cn } from '@/lib/utils';
import { getErrorMessage } from '@/lib/errorHandler';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { invokeWithTracking } from '@/lib/edgeFunctionTracking';
import { useAuth } from '@/hooks/useAuth';
import { logger } from '@/lib/logger';
diff --git a/src/components/upload/UppyPhotoSubmissionUpload.tsx b/src/components/upload/UppyPhotoSubmissionUpload.tsx
index e2984de3..06a0cd54 100644
--- a/src/components/upload/UppyPhotoSubmissionUpload.tsx
+++ b/src/components/upload/UppyPhotoSubmissionUpload.tsx
@@ -12,7 +12,7 @@ import { Separator } from "@/components/ui/separator";
import { Progress } from "@/components/ui/progress";
import { UppyPhotoUploadLazy } from "./UppyPhotoUploadLazy";
import { PhotoCaptionEditor, PhotoWithCaption } from "./PhotoCaptionEditor";
-import { supabase } from "@/integrations/supabase/client";
+import { supabase } from "@/lib/supabaseClient";
import { useAuth } from "@/hooks/useAuth";
import { useToast } from "@/hooks/use-toast";
import { Camera, CheckCircle, AlertCircle, Info } from "lucide-react";
diff --git a/src/components/upload/UppyPhotoUpload.tsx b/src/components/upload/UppyPhotoUpload.tsx
index 54adf895..3c7b8ab3 100644
--- a/src/components/upload/UppyPhotoUpload.tsx
+++ b/src/components/upload/UppyPhotoUpload.tsx
@@ -1,5 +1,5 @@
import React, { useRef, useState } from 'react';
-import { supabase } from '@/integrations/supabase/client';
+import { supabase } from '@/lib/supabaseClient';
import { useToast } from '@/hooks/use-toast';
import { invokeWithTracking } from '@/lib/edgeFunctionTracking';
import { logger } from '@/lib/logger';