Pages and Routing
Overview
The application uses React Router DOM for client-side routing. All routes are defined in src/App.tsx.
Route Structure
Public Routes
/login- Login page (public access)/- Redirects to/login
Protected Routes (Dashboard)
All dashboard routes are nested under /dashboard and require authentication:
/dashboard- Redirects to/dashboard/users/dashboard/users- User management page/dashboard/conferences- Conference management page/dashboard/events- Event management page/dashboard/agenda- Agenda management page/dashboard/speakers- Speaker management page/dashboard/quests- Quest management page/dashboard/quests/:questId/pending- Quest pending submissions page/dashboard/quests/:questId/manage-participants- Quest participants management page/dashboard/notifications- Notifications page/dashboard/notifications/:jobId- Notification job detail page
Page Components
LoginPage (src/pages/LoginPage.tsx)
Authentication page with email/password form.
Features:
- Email and password input
- Loading state during authentication
- Error handling with toast notifications
- Redirects to dashboard on success
- Stores JWT token and user data in localStorage
UsersPage (src/pages/UsersPage.tsx)
User management interface.
Features:
- User listing with pagination
- Search functionality
- Filter by roles, ecosystems, topics
- Sort by various fields
- Export user data
ConferencesPage (src/pages/ConferencesPage.tsx)
Conference management interface.
Features:
- List all conferences
- Create new conferences
- Edit existing conferences
- Delete conferences
- Filter and search
- Upload attendees via Excel
EventsPage (src/pages/EventsPage.tsx)
Event management interface.
Features:
- List all events
- Create new events
- Edit existing events
- Delete events
- Import from Luma
- Map events to conferences
- Filter by status, featured, conference
AgendaPage (src/pages/AgendaPage.tsx)
Agenda management interface.
Features:
- View agenda by conference
- Create agenda items
- Edit agenda items
- Delete agenda items
- Organize by day, stage, time slot
SpeakersPage (src/pages/SpeakersPage.tsx)
Speaker management interface.
Features:
- List all speakers
- Create new speakers
- Edit existing speakers
- Delete speakers
- Link speakers to conferences
- Filter and search
QuestsPage (src/pages/QuestsPage.tsx)
Quest management interface.
Features:
- List all quests
- Create new quests
- Edit quest details
- Toggle quest active status
- View pending submissions count
- Navigate to quest detail pages
QuestPendingSubmissionsPage (src/pages/QuestPendingSubmissionsPage.tsx)
Quest submission review interface.
Features:
- View pending quest submissions
- Approve submissions
- Reject submissions with messages
- View submission proof
- Filter and paginate
QuestManageParticipantsPage (src/pages/QuestManageParticipantsPage.tsx)
Quest participant management interface.
Features:
- View all quest participants
- Filter by registration status, completion status
- Approve/reject registrations
- Assign reward codes
- Export participant data
- View participant progress
NotificationsPage (src/pages/NotificationsPage.tsx)
Notification management interface.
Features:
- List all notification jobs
- Create new notifications
- Filter by status, schedule type
- View job statistics
- Cancel scheduled jobs
- Reschedule jobs
NotificationJobDetailPage (src/pages/NotificationJobDetailPage.tsx)
Notification job detail view.
Features:
- View job details and statistics
- View recipient list
- Filter recipients by status
- Search recipients
- View error messages for failed sends
Layout Component
DashboardLayout (src/components/DashboardLayout.tsx)
Main layout wrapper for all dashboard pages.
Structure:
- Sidebar navigation (
AppSidebar) - Header (
SiteHeader) - Main content area with
<Outlet />for nested routes
Features:
- Responsive sidebar (collapsible)
- User profile in sidebar footer
- Logout functionality
- Navigation menu items
Navigation
Navigation is handled through the AppSidebar component which includes:
- Users
- Conferences
- Events
- Agenda
- Quests
- Speakers
- Notifications
Each menu item links to its respective dashboard route.