| ← All Docs Information Architecture

Information Architecture

Verified Against source code 73 routes total Last updated: September 2026

Desktop: Fixed Left Sidebar

  • Width: 240px (collapses to 76px on the billing page to maximize product selector space)
  • Position: Fixed, full height
  • Breakpoint: Shown at ≥ 1024px (lg)
  • Items (11):
  1. Dashboard
  2. Billing
  3. Estimates
  4. Stock & Purchase
  5. Farmers
  6. Dues
  7. Daily Book
  8. Suppliers
  9. Cashbook
  10. Reports
  11. More

Mobile: Bottom Navigation

  • Position: Fixed bottom bar
  • Breakpoint: Shown at < 1024px
  • Sidebar: Hidden on mobile
  • Items (5):
  1. Home (Dashboard)
  2. Farmers
  3. Bill (center FAB — floating action button)
  4. Stock
  5. More (opens drawer with remaining items)

Complete Route Map

Public Routes (16)

RoutePageDescription
/Landing PageMarketing homepage
/loginLoginDealer email/password login
/registerRegisterNew dealer registration
/forgot-passwordForgot PasswordPassword reset via email
/onboardingOnboarding4-step setup wizard (shop name, products, branch, preferences)
/featuresFeaturesFeature showcase page
/pricingPricingPlan comparison and pricing
/contactContactContact form
/termsTerms of ServiceLegal terms
/privacyPrivacy PolicyPrivacy policy
/f/:tokenFarmer PortalPublic farmer statement view (shared link)
/:shopSlug/:branchSlug/staffStaff LoginStaff PIN entry for specific shop/branch
/:shopSlugShop PagePublic shop profile page
/aqua-feed-billing-softwareSEO LandingSEO page for feed billing keywords
/aqua-medicine-inventory-softwareSEO LandingSEO page for medicine inventory keywords
/aquaculture-dealer-management-softwareSEO LandingSEO page for dealer management keywords
/stock-management-for-aqua-dealersSEO LandingSEO page for stock management keywords

Admin Routes (13+)

RoutePageDescription
/admin/loginAdmin LoginAdmin email/password login
/admin/dashboardAdmin DashboardPlatform overview — active dealers, revenue, usage
/admin/dealersDealer ListAll registered dealers with search and filters
/admin/dealers/:idDealer DetailIndividual dealer profile, subscription, usage metrics
/admin/subscriptionsSubscriptionsSubscription management and billing
/admin/addonsAddonsWhatsApp and other addon plan management
/admin/productsProduct CatalogMaster product catalog management
/admin/supportSupport TicketsAll support tickets from dealers
/admin/support/:idTicket DetailIndividual support ticket conversation
/admin/broadcastBroadcastsAnnouncement history
/admin/broadcast/newNew BroadcastCompose and send announcements
/admin/reportsAdmin ReportsPlatform-level reports
/admin/reports/:sectionReport SectionIndividual report section
/admin/analyticsAnalyticsPlatform usage analytics
/admin/settingsAdmin SettingsPlatform settings
/admin/settings/:sectionSettings SectionIndividual settings section
/admin/auditAudit LogAll admin actions with timestamps

Protected Dealer Routes (44)

All routes below require authentication. Routes with a Gate badge require the dealer's plan to include that feature.

RoutePageFeature Gate
/dashboardDashboard
/billingNew Bill
/billing/:idBill Detail
/billing/:id/editEdit BillbillEditing
/billing/:id/returnCreate Returnreturns
/bill-historyBill History
/estimatesEstimate Listestimates
/estimates/newNew Estimateestimates
/estimates/:idEstimate Detailestimates
/farmersFarmer List
/farmers/newAdd Farmer
/farmers/:idFarmer Profile
/farmers/:id/ledgerFarmer Ledger
/farmers/:id/statementFarmer Statement
/farmers/:id/discountsFarmer Discounts
/farmers/:id/editEdit Farmer
/duesDues Overview
/paymentsPayment History
/payments/collectCollect Payment
/payments/collect/:farmerIdCollect from Farmer
/inventoryInventory List
/inventory/:idInventory Detail
/inventory/purchaseNew Purchase
/inventory/purchase/:idPurchase Detail
/inventory/transfersStock TransfersmultiBranch
/inventory/transfers/newNew TransfermultiBranch
/suppliersSupplier List
/suppliers/newAdd Supplier
/suppliers/:idSupplier Detail
/suppliers/:id/ledgerSupplier Ledger
/suppliers/:id/paySupplier Payment
/daily-bookDaily Book
/daily-book/:sectionDaily Book Section
/cashbookCashbookcashbook
/expensesExpense Listexpenses
/expenses/newNew Expenseexpenses
/reportsReports Hub
/reports/:sectionReport Section
/settingsSettings
/settings/:sectionSettings Section
/branchesBranch ListmultiBranch
/branches/newAdd BranchmultiBranch
/staffStaff ListstaffAccess
/transactionsTransaction History

Feature Gating

The FeatureGate component wraps routes and page sections that require specific plan features. When a feature is not included in the dealer's plan, the gate renders a locked state with an upgrade prompt.

All Feature Gate Keys

Gate KeyFeatureAffected Routes
estimatesEstimate/Quotation creation/estimates/*
billEditingEdit existing bills/billing/:id/edit
returnsProduct returns processing/billing/:id/return
multiBranchMulti-branch operations/branches/*, /inventory/transfers/*
staffAccessStaff member management/staff
cashbookCashbook feature/cashbook
expensesExpense tracking/expenses/*
whatsappWhatsApp API integrationWhatsApp send buttons throughout app
gstGST billingGST columns on invoices, HSN codes

Code Splitting

All 64 page components are loaded via React.lazy(). Each route produces its own JavaScript chunk, downloaded on demand when the user first navigates to that route. This keeps the initial bundle small and ensures users only download code for features they actually use.

How It Works

// Example from App.tsx
const Dashboard = lazy(() => import('./features/dashboard/pages/Dashboard'));
const NewBill = lazy(() => import('./features/billing/pages/NewBill'));
// ... 62 more lazy imports

A <Suspense> boundary with a loading spinner wraps all routes. Prefetching is used on hover for commonly-navigated routes (e.g., Dashboard → Billing link prefetches the billing chunk).

Note: The sidebar and bottom navigation components are not lazy-loaded — they are part of the main app shell and render immediately. Only page content within the <Outlet /> is code-split.