ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
AI 기반 웹앱이 손글씨 노트 사진을 채점하고 오류를 표시해 PDF로 내보냅니다
AI-powered web app that grades handwritten notebook photos with pinpointed mistake annotations and exports graded PDFs — built with FastAPI, React, and Groq vision AI.
교육Python · JavaScriptGitHub @BiswasNehaa온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An AI-powered academic web application where students upload photos of their handwritten notebook pages, have them automatically evaluated by a multimodal AI vision model (Groq's Qwen3.6-27B), review pinpointed visual mistake annotations per subject, and export single-day or merged semester notebook PDFs.README 전문 보기 ↗
An AI-powered academic web application where students upload photos of their handwritten notebook pages, have them automatically evaluated by a multimodal AI vision model (Groq's Qwen3.6-27B), review pinpointed visual mistake annotations per subject, and export single-day or merged semester notebook PDFs.
GROQ_MODEL) on the free tier.(X, Y) coordinate pins.failed with a clear retry option — never a fabricated grade.| Layer | Technologies | Purpose |
|---|---|---|
| Backend API | Python 3.13 + FastAPI + Uvicorn | High-performance asynchronous REST API with auto-generated interactive OpenAPI docs (/docs). |
| Data Validation | Pydantic v2 | Strict, type-safe schemas for AI vision outputs, error coordinates, and upload payloads. |
| AI / Vision Pipeline | Groq API (Qwen3.6-27B vision) | Multimodal handwriting OCR & step-by-step grading on free tier, with prompt engineering. |
| Resilience | httpx + manual retry loop | Handles rate-limiting (HTTP 429) with exponential backoff retries; a failure that survives retries is reported explicitly, never masked. |
| PDF Generation | PyMuPDF (fitz) | Fast, high-fidelity PDF compilation with table of contents, annotated scans, and summary cards. |
| Database | SQLite + aiosqlite | Lightweight, file-based persistent storage for subjects, daily uploads, and AI remarks. |
| Frontend UI | React 18 + Vite + Modern CSS | Interactive notebook canvas with zoom/pan, pulsating mistake pins, timeline filter, and student dashboard. |
| UI Icons | Lucide React | Clean, modern iconography for student tools. |
Acadine/
├── backend/
│ ├── main.py # FastAPI REST endpoints & background tasks
│ ├── schemas.py # Pydantic v2 data models
│ ├── database.py # SQLite tables & async connection manager
│ ├── ai_service.py # AI vision pipeline & retry logic
│ ├── pdf_service.py # PyMuPDF PDF compilation engine
│ ├── seed.py # Sample notebook data generator
│ └── requirements.txt # Python dependencies
├── frontend/
│ ├── src/
│ │ ├── components/ # UploadCenter, NotebookViewer, RemarksPanel, etc.
│ │ ├── App.jsx # Main application router & state
│ │ └── index.css # Custom notebook design tokens
│ ├── package.json # Frontend dependencies
│ └── vite.config.js
└── IMPLEMENTATION_PLAN.md
This project runs on one shared AI backend, so if you fork/clone it, you'll need your own free API key — it takes 2 minutes:
cd backend
python -m venv venv && venv\Scripts\activate # Windows; use `source venv/bin/activate` on Mac/Linux
pip install -r requirements.txt
Create a backend/.env file with:
GROQ_API_KEY=your_key_here
Then run it:
uvicorn main:app --reload
cd frontend
npm install
npm run dev
No key? Uploading still works, but evaluation will return "AI unavailable" for every page — a Groq API key is required to actually grade anything.
For a deep dive into the architecture, request flow, and every function, see ARCHITECTURE.md.