The frontend project is managed by Vite, a modern build tool that provides a fast development experience. Key dependencies are listed in package.json, enabling features like routing, state management, API calls, UI styling, and real-time communication.
The application's entry point is src/main.jsx, which initializes React and sets up the BrowserRouter for client-side routing. The main App.jsx component then defines the application's routes using react-router-dom.
// src/main.jsximport { StrictMode } from 'react'import { createRoot } from 'react-dom/client'import './index.css'import App from './App.jsx'import { BrowserRouter } from 'react-router-dom'createRoot(document.getElementById('root')).render( <StrictMode> <BrowserRouter> <App /> </BrowserRouter> </StrictMode>,)
The App.jsx component handles authentication checks and conditionally renders routes based on the user's authentication status. It also integrates react-hot-toast for notifications and lucide-react for loading indicators.
Tailwind CSS is used for utility-first styling, with DaisyUI providing a set of pre-built components and themes. The tailwind.config.js file configures these settings, including the extensive list of available DaisyUI themes. The application's theme can be dynamically changed via the useThemeStore.
The application utilizes Zustand for global state management. Key stores include useAuthStore for managing user authentication status and related data, and useThemeStore for handling the application's theme.