This page provides a high-level overview of the ABSpider Recon React SPA architecture. The system is designed as a zero-backend application, leveraging Supabase for persistence and authentication, while managing complex scanning state and orchestration entirely within the client-side environment.
The App component wraps the entire application in a specific order of providers to ensure that services like notifications and tooltips have access to the underlying theme and query client.
Sources:
Authentication is enforced via the RequireAuth component, which acts as a layout guard for all protected routes. It monitors the Supabase session and reactively redirects unauthenticated users to the login page.
RequireAuth component uses supabase.auth.onAuthStateChange to listen for sign-out events or session expirations src/components/RequireAuth.tsx28-33 The App component also listens for INITIAL_SESSION or SIGNED_IN events to trigger cleanupStuckScans() src/App.tsx40-49<RequireAuth> will only render their children if a valid session exists; otherwise, they display a loading state or redirect src/components/RequireAuth.tsx40-53beforeunload listener in App.tsx prevents users from accidentally closing the browser while scans are active by checking getRunningScanCount() src/App.tsx51-65For details, see Authentication & Session Management.
Sources:
The application uses react-router-dom for client-side navigation. The routing is split between public-facing pages and a structured authenticated dashboard.
| Route | Component | Purpose |
|---|---|---|
/ | LandingPage | Public marketing and features overview. |
/login | ModernLogin | Auth entry point (Email/Password, Magic Link). |
/status | StatusPage | System health and API connectivity check. |
/app | Index | Initial session check and redirect to /dashboard or /login src/pages/Index.tsx10-17 |
/dashboard | DashboardPage | User command center and quick stats. |
/new-scan | NewScan | Configuration interface for recon tasks. |
/all-scans | AllScans | Comprehensive list and management of all scans. |
/reports | ReportsPage | Access to generated reports. |
/scan/:id | ScanResults | Real-time monitoring of a specific scan. |
/settings | AppSettings | Global app and Discord webhook configuration. |
/account-settings | AccountSettings | User account-specific settings. |
* | NotFound | Catch-all for undefined routes src/pages/NotFound.tsx4-16 |
Sources:
For details, see Routing & Page Layout.
The authenticated experience is centered around a persistent sidebar layout using the SidebarProvider.
ProfileCardPopover src/components/AppSidebar.tsx138-173AllScans implement their own headers, often including a SidebarTrigger and page-specific titles/subtitles src/pages/AllScans.tsx67-77Sources:
ABSpider Recon utilizes a decentralized state management pattern:
AllScans page for scan statuses src/pages/AllScans.tsx33-35), and synchronization with Supabase.useState hooks and specialized Contexts (ThemeContext, NotificationContext).node:net for IP validation) to support libraries in a browser-only environment.For details on the UI framework and theme management, see UI Component Library & Theming.
Sources:
Refresh this wiki
This wiki was recently refreshed. Please wait 6 days to refresh again.