Lightning-fast, privacy-first OMR (Optical Mark Recognition) grading web app for teachers.
Nâmedâr allows educators to design custom bubble sheets, distribute them to students, and grade them instantly using a smartphone camera.
Zero images are uploaded to the cloud. All image processing and grading are done entirely in the user's browser using a custom-built WebAssembly (WASM) engine written in Rust.
- Drag & Drop Form Builder: Design custom OMR layouts tailored to specific exam formats.
- Easy Distribution: Export forms as PDFs or images, print them, and hand them out to students.
- Snap & Grade: Take photos of completed exams with any smartphone camera.
- 100% Private (Browser-Based): Images never leave the device. A high-performance Rust WASM module handles all optical mark detection locally.
- Universal Exports: Export grade results instantly to CSV, JSON, XML, or Markdown.
- Offline Tolerant: Once the app loads, the WASM engine can grade exams even on a slow or disconnected network.
Nâmedâr is built with a modern, edge-first stack:
- Frontend Framework: TanStack Start (React)
- Styling: Tailwind CSS v4
- Image Processing Engine: WebAssembly (WASM) compiled from Rust. (Note: The pre-compiled
.wasmbinary is included in this repository. The Rust source code for the engine is maintained in a separate repository). - Database: Cloudflare D1 (SQLite at the Edge for user accounts & form templates)
- Hosting/Deployment: Cloudflare Workers
(An interactive demo is planned for the landing page soon!)
To run this project locally, you will need:
- Node.js (v18+)
- Rust & Cargo (to build the WASM module)
- Wrangler CLI (for Cloudflare D1 local emulation)
-
Clone the repository:
git clone https://github.com/medreseli/namedar.git cd namedar -
Install frontend dependencies:
npm install
-
Set up local Cloudflare D1 database:
npx wrangler d1 migrations apply namedar-db --local
-
Start the TanStack development server:
npm run dev
-
Open
http://localhost:3000in your browser.
We welcome contributions from the community! Whether you are a Rustacean who wants to optimize our OMR anchor-detection algorithms, or a React developer who wants to improve the UI, feel free to open an issue or submit a Pull Request.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Built for educators, to reclaim their weekends.