TutorLoom
기업·대학·교육기관을 위한 학습 플랫폼, 무료 오픈소스이며 엔터프라이즈 버전 제공
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An interactive review, quiz and test platform for the classroom. It supports many classes and unlimited assignments, grades automatically, and lets students progress section by section.
The platform comes preloaded with Economics Unit Review — Markets, Circular Flow, Supply & Demand (40 questions), ready for you to inspect and publish.
| Guide | For |
|---|---|
| docs/SETUP.md | Putting the site online (step by step, no coding) |
| docs/TEACHER_GUIDE.md | Using it every week: classes, questions, assignments, grading |
| docs/question-template.csv | Spreadsheet template for importing questions |
You need Node.js 20 or newer (the "LTS" download). Then, in a terminal inside this folder:
npm install
npm run dev
Open http://localhost:3000/teacher. On first visit you'll create your teacher account (no setup code is needed locally). Your data is stored in a .pfl-classroom folder in your home directory; nothing else needs to be installed.
Student join page: http://localhost:3000. Use the code shown after you publish an assignment.
| Piece | Choice | Why |
|---|---|---|
| App | Next.js 16 + TypeScript | One codebase for pages and the server API; huge community; free hosting on Vercel |
| Styling | Tailwind CSS | Consistent, accessible design without extra libraries |
| Database | PostgreSQL via Drizzle ORM | Reliable, standard SQL with real constraints and transactions. In production it uses Neon (free tier) or any Postgres. Locally it uses an embedded Postgres (PGlite), so there's nothing to install. |
| Hosting | Vercel | Connect GitHub and every push deploys. Free tier is plenty for a classroom. |
| Teacher auth | Built-in email + password (bcrypt, httpOnly session cookies) | No extra service to configure; works offline locally |
| Short-answer AI (optional) | Anthropic Claude, server-side only | Off by default; falls back to rubric grading |
Teacher ─┬─ Course (class) ─┬─ Period
│ ├─ Unit
│ ├─ Question (question bank)
│ └─ Assignment ─┬─ Section ── SectionQuestion → Question (editable draft)
│ ├─ AssignmentPeriod
│ └─ AssignmentVersion (frozen snapshot on publish)
│ └─ Attempt (one per student) ─ SectionRun (each try) ─ Response
TEACHER_SETUP_CODE, so a stranger can't claim your new site.$/units on numbers, and small typos on long words. It never fuzzes numbers or opposite words (increase/decrease, upward/downward). You can block specific wrong answers and "accept for everyone" after the fact.| Command | What it does |
|---|---|
npm run dev | Run locally at http://localhost:3000 |
npm test | Grading, scoring, security and full-flow tests (in-memory database) |
npm run test:e2e | Browser tests: teacher setup → publish → students on Chromebook-size screens → results → CSV |
npm run build | Apply database migrations, then build for production (Vercel runs this) |
npm run db:migrate | Apply database migrations to DATABASE_URL |
npm run teacher:reset-password -- [email protected] | Reset a forgotten password |
npm run lint / npm run typecheck | Code checks |
src/
app/ pages + API routes
teacher/… teacher dashboard (classes, bank, builder, results, review, settings)
join/, play/ student join + player
api/ server endpoints (teacher/*, s/[code], join, auth/*)
components/ UI (player/, teacher/, shared ui.tsx)
db/ schema.ts (tables) + connection
lib/
grading/ normalize, objective (FIB/MC/matching), rubric, ai
scoring.ts pass/fail, best/latest/first, section weights
services/ all server logic with ownership checks
seed/ the built-in Economics review
drizzle/ SQL migrations
tests/ unit, integration, e2e
Edit src/db/schema.ts, run npm run db:generate to create a migration in drizzle/, and commit it. Migrations run automatically on the next deploy.