-
Next.js: A React framework that powers the structure and routing of the app. It offers features like server-side rendering, server-actions and gives a solid foundation for building scalable web applications.
-
TypeScript: This adds type safety to JavaScript, helping catch errors early and making the code easier to maintain. It ensures that the codebase is robust and reliable.
-
React Hook Form: A lightweight library that simplifies handling forms in React. It reduces the need for boilerplate code and makes form management and validation a breeze.
-
Zod: A schema validation library that integrates well with TypeScript, ensuring that the data structures in your app are always correct and well-defined.
-
Tailwind CSS: A utility-first CSS framework that provides a lot of flexibility and control over styling. It speeds up development and helps maintain a consistent design across the app.
-
ShadCN UI: A collection of accessible components built with Tailwind CSS. It offers a great starting point for quickly building out user interfaces with consistent design.
-
AWS SDK: This toolkit allows the app to interact seamlessly with AWS services like Lambda and SNS, making it easier to build and scale cloud-based features.
-
Cypress: A powerful testing framework for writing end-to-end tests. It helps ensure that the app works as expected by simulating real user interactions.
-
Jest: A testing framework that makes it easy to write and run unit tests, helping catch bugs early in the development process.
-
Prettier & ESLint: Tools that automatically format and lint your code, keeping it clean, consistent, and error-free as you work.
-
Create, Edit, and Duplicate Sessions: Easily manage sessions with options to create, edit, and duplicate.
-
Presets for Ease: Simplifies form-filling with presets based on selected groups.
-
Quiz & Live Table Management: Uses Tables with filtering, pagination, and expanded modals for more information.
-
Real-Time Polling: Dynamically refreshes table data using polling for real-time updates.
-
Server-Side Rendering with Server Actions: Delivers fast pages and handles form submissions with SSR and Server Actions in Next.js.
-
End-to-End (E2E) Testing: Ensures application reliability and functionality through comprehensive Cypress E2E tests.
Name | Route format |
---|---|
Quiz Table | /?page={page-number} |
Live Table | /live?page={page-number} |
Session Dynamic Route | /session/{action-type}?step={active-step} |
- page-number - any integer number
- action-type -
create
|edit
|duplicate
- active-step -
basic
|platform
|timeline
Sample Quiz Session
{
"auth_type": "ID",
"created_by_id": null,
"end_time": "2024-08-26T16:00:00Z",
"id": 825,
"id_generation": false,
"inserted_at": "2024-08-19T11:54:57",
"is_active": true,
"meta_data": {
"admin_testing_link": "https://staging-quiz.avantifellows.org/quiz/66c5fb6b23b8aa8bac7665d4?apiKey=6qOO8UdF1EGxLgzwIbQN&userId=test_admin",
"batch_id": "HaryanaStudents_9_Foundation_24_001",
"cms_test_id": "https://cms.peerlearning.com/chapter_tests/6556f6763562d97a6300aa35",
"course": "Foundation",
"date_created": "2024-08-19T17:24:57.292Z",
"grade": 9,
"group": "HaryanaStudents",
"has_synced_to_bq": false,
"infinite_session": false,
"marking_scheme": "4,-1",
"number_of_fields_in_popup_form": "",
"optional_limits": "N/A",
"parent_id": "HR-9-Foundation-24",
"report_link": "https://lnk.avantifellows.org/8KdG",
"shortened_link": "https://lnk.avantifellows.org/Jtcn",
"shortened_omr_link": "https://lnk.avantifellows.org/Jtcn",
"show_answers": false,
"show_scores": true,
"status": "success",
"stream": "pcmb",
"test_format": "mock_test",
"test_purpose": "one_time",
"test_takers_count": 10,
"test_type": "assessment"
},
"name": "Cypress Quiz Session",
"owner_id": null,
"platform": "quiz",
"platform_id": "66c5fb6b23b8aa8bac7665d4",
"platform_link": "66c5fb6b23b8aa8bac7665d4",
"popup_form": false,
"popup_form_id": null,
"portal_link": "https://staging-auth.avantifellows.org?sessionId=HaryanaStudents_66c5fb6b23b8aa8bac7665d4",
"purpose": {
"params": "quiz",
"type": "attendance"
},
"redirection": true,
"repeat_schedule": {
"params": [1, 2, 3, 4, 5],
"type": "weekly"
},
"session_id": "HaryanaStudents_66c5fb6b23b8aa8bac7665d4",
"signup_form": false,
"signup_form_id": null,
"start_time": "2024-08-19T10:00:00Z",
"type": "sign-in",
"updated_at": "2024-08-21T14:36:30"
}
Sample Live Session
{
"auth_type": "ID",
"created_by_id": null,
"end_time": "2024-08-23T20:00:00Z",
"id": 826,
"id_generation": false,
"inserted_at": "2024-08-19T12:21:29",
"is_active": true,
"meta_data": {
"batch_id": "HaryanaStudents_9_Foundation_24_001,HaryanaStudents_10_Foundation_24_001",
"date_created": "2024-08-19T17:51:28.813Z",
"grade": 9,
"group": "HaryanaStudents",
"number_of_fields_in_popup_form": "",
"parent_id": "",
"shortened_link": "https://lnk.avantifellows.org/L7gH",
"shortened_omr_link": "https://lnk.avantifellows.org/Jtcn",
"status": "success",
"subject": "Maths,Physics",
"test_takers_count": 10
},
"name": "Cypress Live Session Edit",
"owner_id": null,
"platform": "youtube",
"platform_id": "jfKfPfyJRdk",
"platform_link": "https://www.youtube.com/live/jfKfPfyJRdk",
"popup_form": false,
"popup_form_id": null,
"portal_link": "https://staging-auth.avantifellows.org?sessionId=HaryanaStudents_HaryanaStudents_9_Foundation_24_001,HaryanaStudents_10_Foundation_24_001_45523_jfKfPfyJRdk",
"purpose": {
"sub-type": "liveclass"
},
"redirection": true,
"repeat_schedule": {
"params": [1, 2, 3, 4, 5, 6, 7],
"type": "weekly"
},
"session_id": "HaryanaStudents_HaryanaStudents_9_Foundation_24_001,HaryanaStudents_10_Foundation_24_001_45523_jfKfPfyJRdk",
"signup_form": false,
"signup_form_id": null,
"start_time": "2024-08-19T08:00:00Z",
"type": "sign-in",
"updated_at": "2024-08-19T12:28:26"
}
Various docs and repositories that are helpful for understanding the project: