This is the frontend application for the project.
- React
- TypeScript
- Tailwind CSS
- Vite for build tooling
- ESLint and Prettier for code quality
Please see the contributing guide for detailed instructions on setting up the project.
We use ESLint for linting and Prettier for code formatting. To run the linters, use the following commands:
npm run lintTo see formatting issues, run:
npm run formatThe window is divided into two main parts:
- Layout
- Outlet
The Layout is further divided into three parts:
- Sidebar Left
- Navbar
- Sidebar Right
Location: \frontend-cal\src\components\sidebar-left.tsx
This section contains the following items:
- Dashboard
- Displays the progress of the student and course details.
- Location:
frontend-cal\src\pages\Students\StudentDashboard.tsx
- Courses
- Assignments
- Announcements
- Calendar
- Settings
- Logout
- Trash
- Help
Location: frontend-cal\src\components\mode-toggle.tsx
The Navbar contains a Toggle Button to switch between light mode and dark mode.
This section includes:
- User Profile
- My Schedules
- Announcements
- Updates
- Proctoring Components
- Location:
frontend-cal\src\components\proctoring-components - The ParentComponent integrates all proctoring component files.
- To use proctoring components, import the ParentComponent file.
- ParentComponents consists all the proctoring components exists in
frontend-cal\src\components\proctoring-components\ParentComponent.
- Location:
- New Schedule
The Outlet serves as the main content area that dynamically changes according to route navigation.
- Powered by:
react-router-dom. - The Outlet acts as a placeholder for child routes and renders different components based on the current route.
The Proctoring-components directory contains all the files related to proctoring functionalities.
- ParentComponent File: Acts as the central integration point for all proctoring components.
- To utilize any proctoring feature, simply use the ParentComponent file.
Below is a summary of the file locations for quick reference:
| Resources | Location |
|---|---|
| components | \frontend-cal\src\components |
| ├── login-form | |
| ├── mode-toggle | |
| ├── sidebar-left | |
| ├── sidebar-right | |
| ├── signup-form | |
| ├── login-form | |
| ├── logout | |
| ├── mode-toggle | |
| ├── proctoring-components | |
| │ ├── BlurDetection.tsx | |
| │ ├── ParentComponent.tsx | |
| │ ├── FaceDetection.tsx | |
| │ ├── FullScreenDetection.tsx | |
| │ ├── KeyboardDetection.tsx | |
| │ ├── MouseDetection.tsx | |
| │ ├── TabSwitchDetection.tsx | |
| │ └── WindowResizeDetection.tsx | |
| └── ui | |
| ├── breadcrumb.tsx | |
| ├── button.tsx | |
| ├── card.tsx | |
| ├── dialog.tsx | |
| ├── dropdown-menu.tsx | |
| ├── form.tsx | |
| ├── input.tsx | |
| ├── label.tsx | |
| ├── separator.tsx | |
| ├── sidebar.tsx | |
| ├── sonner.tsx | |
| └── theme-provider.tsx | |
| pages | \frontend-cal\src\pages |
| ├── Home.tsx | |
| ├── LoginPage.tsx | |
| └── Students | |
| ├── ContentScrollView.tsx | |
| ├── CourseView.tsx | |
| ├── ModuleView.tsx | |
| ├── SectionDetail.tsx | |
| ├── SectionView.tsx | |
| └── StudentDashboard.tsx | |
| routes | \frontend-cal\src\routes |
| └── index.ts | |
| store | \frontend-cal\src\store |
| ├── Slices | |
| ├── apiService.ts | |
| └── store.ts | |
| App.tsx | \frontend-cal\src\App.tsx |
| index.tsx | \frontend-cal\src\index.tsx |
| main.tsx | \frontend-cal\src\main.tsx |
This documentation provides a clear overview of the CAL system's layout and its key components, enabling efficient navigation and usage.
The CAL system uses Redux for state management, structured as follows:
-
storeFolder- Location:
frontend-cal\src\store - Contains all Redux-related files, including API services, slices, and the main store configuration.
- Location:
-
apiService.ts- Location:
frontend-cal\src\store\apiService.ts - Centralizes all API calls for the application.
- Manages HTTP requests and integrates with Redux slices for data flow.
- Location:
-
SlicesFolder- Location:
frontend-cal\src\store\Slices - Contains slice files corresponding to different API calls or features.
- Each slice defines actions, reducers, and initial states for specific features.
- Location:
-
store.ts- Location:
frontend-cal\src\store\store.ts - Integrates all reducers created by slices into a single Redux store.
- Location: