{"id":19987270,"url":"https://github.com/rishn/mexa","last_synced_at":"2026-04-06T21:32:53.583Z","repository":{"id":272131826,"uuid":"868895151","full_name":"rishn/MEXA","owner":"rishn","description":"An examination assistance web-app created with React + TypeScript (Frontend) and Express.js (Backend) integrated with MongoDB.","archived":false,"fork":false,"pushed_at":"2024-10-08T16:11:39.000Z","size":3150,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-12T07:34:14.180Z","etag":null,"topics":["ant-design","css","express","expressjs","hooks","json","jsonwebtoken","mongodb","mongodb-atlas","react","reactjs","redux-toolkit","rest-api","routing","typescript"],"latest_commit_sha":null,"homepage":"https://mexa.onrender.com","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rishn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-07T11:22:34.000Z","updated_at":"2024-10-08T16:11:42.000Z","dependencies_parsed_at":"2025-01-12T11:44:26.016Z","dependency_job_id":"9f6731fd-cc54-4876-8ce2-5d719d2aacd3","html_url":"https://github.com/rishn/MEXA","commit_stats":null,"previous_names":["rishn/mexa"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rishn/MEXA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishn%2FMEXA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishn%2FMEXA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishn%2FMEXA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishn%2FMEXA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rishn","download_url":"https://codeload.github.com/rishn/MEXA/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishn%2FMEXA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31491097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ant-design","css","express","expressjs","hooks","json","jsonwebtoken","mongodb","mongodb-atlas","react","reactjs","redux-toolkit","rest-api","routing","typescript"],"created_at":"2024-11-13T04:35:04.615Z","updated_at":"2026-04-06T21:32:53.558Z","avatar_url":"https://github.com/rishn.png","language":null,"readme":"# MEXA\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/rishn/MEXA/blob/main/assets/MEXA.png?raw=true\" alt=\"MEXA\" /\u003e\n\u003c/p\u003e\n\n***[MEXA](https://mexa.onrender.com/)*** is a full-stack web application designed to assist in conducting offline examinations while digitizing other educational tasks. The two primary goals of MEXA are:\n1. **Reduce paper wastage** by digitizing notes, course materials, and assessments.\n2. **Improve examination standards** by promoting advanced critical thinking concepts over rote learning methods.\n\nOriginally developed as a React front-end application with TypeScript, MEXA has been extended with a robust backend built using *Express.js* and *Redux* (for state management) with *MongoDB* for storing data.\n\n[Explore the app here!](https://mexa.onrender.com/)\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/rishn/MEXA/blob/main/screenshots/dashboard.png?raw=true\" alt=\"MEXA\" /\u003e\n\u003c/p\u003e\n\n## Demos\n\nhttps://github.com/user-attachments/assets/be622d71-6450-43b5-8bd4-fd6cac17ac9d\n\nhttps://github.com/user-attachments/assets/641260a0-f602-455d-8655-155aec530ba5\n\nhttps://github.com/user-attachments/assets/7d873347-33de-4934-8c92-09d53a6e88d7\n\n## Features\n\n- **Login Form**: Secure authentication using *JSON Web Token (JWT)*.\n- **Dashboard**: Overview of activities, tests, and announcements.\n- **Profile Page**: View profile details, including the option to *change passwords*.\n- **Examinations**: \n  - Students can take tests and view exam schedules.\n  - Faculty members can invigilate exams.\n  - Admins can add, edit, or delete exams.\n- **Courses**: \n  - Browse and enroll in courses.\n  - Students can add notes.\n  - Faculty can update course materials and the number of modules taught.\n- **Settings**: Customize the application theme and other preferences.\n\n## Backend Integration\n\nMEXA utilizes **Express.js** for its backend, **MongoDB** for data storage, and **Redux** for managing state and API calls. The backend handles user management, courses, classes, exams, and notes. Five main schemas power the system:\n\n1. **User**: Stores user details, roles (student, faculty, admin), and credentials.\n2. **Course**: Stores independent course data.\n3. **Class**: Manages class-related information tied to users and courses.\n4. **Exam**: Manages exam schedules, seating arrangements, and test details.\n5. **Note**: Allows students to upload notes (including PDF materials).\n\n### Key Backend Features:\n- **Authentication**: JWT secures the application and user authentication.\n- **Menu Locking**: During tests, the `state.disablemenu` feature locks navigation menu items and disables **breadcrumbs** to prevent students from navigating away from the test environment.\n- **Navigation Blocking**: The `navigationBlock` feature ensures routing is blocked during tests, ensuring the integrity of the examination process.\n- **Async Error Handling**: Middleware is in place for efficient error management in asynchronous operations.\n\n## User Roles \u0026 Permissions\n\nThere are three user roles in MEXA, each with distinct access rights:\n\n- **Students**:\n  - Access profile, courses, and exams.\n  - Can take tests, view exam schedules, and add course-related notes.\n  - Can change passwords and themes.\n  \n- **Faculty**:\n  - Access profile, courses, and exams.\n  - Can update course materials, manage the number of modules taught, and invigilate exams.\n  - Can change passwords and themes.\n\n- **Admins**:\n  - Full access to users, courses, classes, and exams.\n  - Can add, edit, or delete users, courses, exams, and notes.\n  - Can change passwords and themes.\n\n## Frontend Tech Stack\n\n- **React**: For building user interfaces.\n- **TypeScript**: Ensures type safety and improves the development experience.\n- **Redux**: Handles global state and API interactions.\n- **React Router**: Enables navigation between pages like login, courses, exams, and profiles.\n- **CSS**: Provides styling for the application, focusing on responsiveness and a clean user interface.\n\n### Recent Front-End Updates:\n- **Context and Hooks**: Improved handling of login persistence, prefetching, and title management.\n- **Dynamic Breadcrumbs**: Automatically updated based on user role and navigation.\n- **Enhanced UI/UX**: Responsive design adjustments for better cross-device compatibility.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishn%2Fmexa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frishn%2Fmexa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishn%2Fmexa/lists"}