{"id":51464670,"url":"https://github.com/simplearyan/exam-canvas","last_synced_at":"2026-07-06T09:31:51.098Z","repository":{"id":347481667,"uuid":"1194195768","full_name":"simplearyan/exam-canvas","owner":"simplearyan","description":"Exam Canvas is a highly interactive, truly serverless Mock Examination Portal and EdTech Whiteboarding application.","archived":false,"fork":false,"pushed_at":"2026-03-28T03:35:11.000Z","size":496,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T09:04:18.410Z","etag":null,"topics":["react","typescript"],"latest_commit_sha":null,"homepage":"https://simplearyan.github.io/exam-canvas/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simplearyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-28T03:11:14.000Z","updated_at":"2026-03-28T03:33:25.000Z","dependencies_parsed_at":"2026-03-28T09:05:28.424Z","dependency_job_id":null,"html_url":"https://github.com/simplearyan/exam-canvas","commit_stats":null,"previous_names":["simplearyan/exam-canvas"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/simplearyan/exam-canvas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplearyan%2Fexam-canvas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplearyan%2Fexam-canvas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplearyan%2Fexam-canvas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplearyan%2Fexam-canvas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simplearyan","download_url":"https://codeload.github.com/simplearyan/exam-canvas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplearyan%2Fexam-canvas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35185688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["react","typescript"],"created_at":"2026-07-06T09:31:50.158Z","updated_at":"2026-07-06T09:31:51.061Z","avatar_url":"https://github.com/simplearyan.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exam Canvas 📝\n\n**Exam Canvas** is a highly interactive, truly **serverless** Mock Examination Portal and EdTech Whiteboarding application. Built primarily for academic instructors, it features a dual-mode interface, allowing standard students to take real-time assessments and features an \"Instructor Preview\" with a built-in canvas drawing engine for creating video solutions.\n\n## Architecture \u0026 Tech Stack\n\nThis project replaces traditional backend databases with a localized JSON export engine out of the box, ensuring 100% free hosting as a **Static Site** via GitHub Pages.\n\n- **Frontend Core:** Vite + React (JavaScript)\n- **Styling UI:** Tailwind CSS v4 + Lucide Icons\n- **Whiteboard Engine:** Rough.js (with canvas state retention)\n- **Mathematical Rendering:** KaTeX\n- **State Management:** Zustand (for massive whiteboard coordinates array optimization)\n\n## Running Locally\n\nTo install and run the development environment on your machine:\n\n```bash\n# Install NPM Dependencies\nnpm install\n\n# Run local Vite development server\nnpm run dev\n```\n\n## Creating \u0026 Adding Questions\n\nBecause Exam Canvas does not run a PostgreSQL or MongoDB backend (keeping your cloud costs at exactly $0), you manage your questions using the internal **Export Database** tool:\n\n1. Click on the \"**Switch to Instructor Mode**\" button in the top right header.\n2. Enter the **Instructor Dashboard**. Here, you will find a full CMS to natively build subjects, add multiple-choice questions (supports full KaTeX syntax), create Mock Exams, and randomly shuffle variants.\n3. Click \"**Classroom Preview**\" on any subject to pull up a full exam instance. You can use the mouse to draw live diagrams and solve math problems directly on the UI using the Whiteboard.\n4. When you are satisfied with your exam and annotations, return to the **Instructor Dashboard** and click \"**Export Database (JSON)**\".\n5. A file named `data.json` will be downloaded. Simply replace the `public/data.json` file in this repository with that new file.\n\n## Deploying to GitHub Pages 🚀\n\nA GitHub Action is already set up to perfectly deploy this app to **GitHub Pages** for free global hosting!\n\n1. Commit all your latest code and your updated `public/data.json`.\n2. Push your `main` branch to your GitHub repository.\n3. On your GitHub Repository page, go to **Settings \u003e Pages**.\n4. Set the **Source** under Build and deployment to **\"GitHub Actions\"**.\n5. The `.github/workflows/deploy.yml` script will automatically compile your React app inside the cloud using `vite build` and instantly deploy it to \\`\u003cyour-username\u003e.github.io/\u003crepository-name\u003e\\`.\n\n### Note on Routing\nIf your GitHub repository is named `my-exam-portal`, you might notice some layout glitches if Vite doesn't know its root path. If you encounter missing assets, modify `vite.config.js`:\n```javascript\nexport default defineConfig({\n  plugins: [react(), tailwindcss()],\n  base: '/my-exam-portal/', // Set this strictly to your Repo Name if not deploying to a custom domain!\n})\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplearyan%2Fexam-canvas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimplearyan%2Fexam-canvas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplearyan%2Fexam-canvas/lists"}