TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A research-backed US CPA Exam study platform built for Indian CA students, commerce graduates, and working professionals — study material, revision notes, MCQ practice, and a real admin CMS, organized around the actual CPA Exam structure (3 Core sections + 1 Discipline).
Non-technical? See CONTENT-MANAGEMENT-GUIDE.md instead — it covers everyday editing without touching any code. For the research and content assumptions behind the seed data, see docs/RESEARCH.md.
sanitize-html before storageNote on Prisma 7: this version of Prisma moved connection configuration out of
schema.prismaand intoprisma.config.ts, and generates the client intosrc/generated/prisma(via driver adapters like@prisma/adapter-pg) instead ofnode_modules/@prisma/client. If you're used to older Prisma versions, don't be surprised by this — it's intentional, not a misconfiguration.
prisma/
schema.prisma # data model
seed.ts # seed script orchestrator
seed-data/ # seed data: subject and topic structure (far.ts, aud.ts, ...), FAQs, blog, fees...
content/ # study page + revision sheet for each topic, one file per topic
mcq-bank/ # practice questions, keyed by topic slug
check-abbreviations.ts # checks short forms are written out in full on first use (npm run content:check)
src/
app/
(site)/ # public site — homepage, /cpa/*, /blog, /faq, /login, /dashboard, ...
admin/ # staff-only CMS
api/auth/ # Auth.js route handler
components/
ui/ # design-system primitives (Button, Card, Badge, Tabs, Accordion...)
home/, practice/, discussion/, faq/, fees/, admin/, content/, auth/, site/
lib/
actions/ # Server Actions (mutations)
auth.ts, dal.ts # Auth.js config + server-side authorization helpers
prisma.ts # Prisma client singleton (driver-adapter setup)
sanitize.ts # HTML allow-list for admin-authored content
generated/prisma/ # generated Prisma Client (not checked in — see .gitignore)
proxy.ts # route protection for /admin and /dashboard (Next 16 renamed "middleware" to "proxy")
npm install
Copy .env.example to .env and fill in the values:
DATABASE_URL="postgresql://user:password@host/dbname?sslmode=require"
AUTH_SECRET="run: openssl rand -base64 32"
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
# Optional — controls the admin account created by the seed script
SEED_ADMIN_EMAIL="[email protected]"
SEED_ADMIN_PASSWORD="choose-a-real-password"
npm run db:generate # generate the Prisma Client into src/generated/prisma
npm run db:migrate # create tables (prompts for a migration name on first run)
npm run db:seed # populate subjects, topics, study material, MCQs, FAQs, blog, fees, sources
npm run dev
Visit http://localhost:3000. Log in at /login with the admin email/password from your .env (or the defaults [email protected] / ChangeMe123! if you didn't set them — change this password immediately if you seed a real environment with the defaults).
The seed script creates one ADMIN user. To promote another user to staff access, either:
npm run db:studio) to change their role field to EDITOR, MODERATOR, or ADMIN, or| Task | Command / place |
|---|---|
| Add a subject/topic, edit content, manage MCQs, moderate comments | /admin — see CONTENT-MANAGEMENT-GUIDE.md |
| Regenerate Prisma Client after a schema change | npm run db:generate |
| Create a new migration after a schema change | npm run db:migrate |
| Inspect/edit raw data | npm run db:studio |
| Re-run the seed script (safe — uses upserts) | npm run db:seed |
| Lint | npm run lint |
| Production build | npm run build |
.env.example in the Vercel project settings (DATABASE_URL, AUTH_SECRET, NEXT_PUBLIC_SITE_URL set to your production domain).npx prisma migrate deploy && npm run build. Do not run prisma migrate dev or db:seed automatically in production builds — apply migrations deliberately and seed only once per environment.Homepage, all 6 CPA sections with real topic structures, full study material + revision notes + MCQs for FAR (flagship), one fully-worked demo topic each for AUD/REG/BAR/ISC/TCP, an MCQ practice engine (server-graded, answers never sent to the client before submission), per-topic discussion/comments, FAQ + blog + CPA Radar + Fee Estimator + Indian-candidates guide, authentication with role-based admin access, a real admin CMS (subjects, topics, Study Material/Revision Notes editors with independent versioning, MCQ CRUD + CSV bulk import, blog/FAQ CRUD, comment moderation, source manager), SEO (sitemap, robots, JSON-LD), and responsive design throughout.
Tier field ready for this)ContentStatus.AI_DRAFT is ready for an AI drafting pipeline)prisma/seed-data/facts.ts + reseed, or Prisma Studio, for now)PracticeSession/MCQAttempt models and are a natural extension)