TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
Enjoy 100% FREE access throughout your 2026 O/L preparation. O/L Islam in Tamil and English medium: notes, flashcards, quizzes and past papers.
EducationTypeScript · PLpgSQLGitHub @MohamedSharfanOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗The website for StudyBuddy (Play · Learn · Level up). It's the web version of the StudyBuddy app for Sri Lankan O/L and A/L students. The first live subject is O/L Islam, Grade 10 & 11, in the Tamil and English mediums; more O/L subjects and the A/L streams come next.
Built with Next.js 15 (App Router), Tailwind CSS 4 and Supabase (Postgres, Auth and RLS).
The site is free (marketing line: "Enjoy 100% FREE access throughout your 2026 O/L preparation.", FREE_OFFER in config) and needs no account. The switches are in src/lib/config.ts:
| Setting | Now | What it does |
|---|---|---|
LOGIN_ENABLED | false | Hides sign-in, coins, ranks, profiles, AI Panda and the unlock page. Those pages lead back to the start screen. |
FREE_ACCESS | true | Every chapter is open. |
AL_ENABLED | false | A/L shows as "coming soon". |
Students choose O/L then Tamil or English medium on the start screen; the choice is remembered on their phone (sb_medium cookie) and they go straight to Islam. An Ask a teacher button on every study page opens WhatsApp (+94 76 739 3761) with the subject and chapter filled in.
Admins can still sign in at /login and use /admin. To switch accounts and paid unlocks back on, set LOGIN_ENABLED = true and FREE_ACCESS = false.
The schema lives in supabase/migrations/. Run the files in order:
20261025000001_studybuddy_web_init.sql: tables, security rules and functions20261025000002_levels_and_streams.sql: O/L / A/L level and A/L stream on profiles20261030000003_islam_english_medium.sql: adds O/L Islam in the English mediumAll files are safe to run more than once.
Option A: SQL editor. Open the Supabase dashboard → project aczdsffdgvitgoqsqnih → SQL Editor, paste each file and run it.
Option B: Claude Code + Supabase MCP. This repo already has a project-scoped Supabase MCP server in .mcp.json. Open a terminal claude session in this folder, run /mcp, authenticate supabase, and ask Claude to apply the migration.
Sign in to the website once, so your account exists. Then run this in the SQL editor:
insert into public.admin_users (user_id)
select id from auth.users where email = '[email protected]';
After that you can add more admins from Admin → Settings.
In Supabase → Authentication:
https://studybuddy.lkhttp://localhost:3000/auth/callback and https://YOUR_DOMAIN/auth/callbackCopy .env.example to .env.local and fill it in:
| Variable | Where to find it |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase → Project Settings → API |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Same page (the anon / publishable key) |
NEXT_PUBLIC_SITE_URL | http://localhost:3000 locally, your domain in production |
ANTHROPIC_API_KEY | Optional. Turns on smart AI Panda answers (server-side only) |
npm install
npm run dev
Open http://localhost:3000. npm run dev and npm run build rebuild the content automatically.
Dev mode compiles each page the first time you open it, so it feels slow. To see the real speed, run the production build:
npm run build
npm start
Import the GitHub repo into Vercel, add the environment variables above, and deploy. The build command is npm run build.
All study content is markdown in content/, in the same format as the files you prepared:
content/islam-ol/ ← Tamil medium
content/islam-ol-en/ ← English medium (same layout)
grade-10/chapter-01/Notes.md
Flashcards.md
Quiz.md
PastPaper_Questions.md
grade-11/chapter-01/...
PastPapers_Index.md
Questions_To_Verify.md ← shown to admins under Admin → Content
Past-paper files can use either layout: the Tamil one (Q1. … Correct Answer: B) or the English one (### A1. … **Correct answer:** B – …). The build detects which one each file uses.
Front:/Back:, Q1. / A.–D. / Correct Answer: layout.npm run content to check the counts (it prints chapters, questions and cards).Locked chapters are never sent to the browser. The server checks access before it loads any chapter content.
Adding a subject: add content/<subject-id>/grade-XX/chapter-YY/..., add an entry to SUBJECTS in scripts/build-content.mjs with its level ("O/L" or "A/L") and, for A/L, the streams that take it. Then insert a row into the subjects table with its chapter counts. Remove it from the "coming soon" lists in src/lib/levels.ts.
SB-7KQ2MX), shown on their profile and on the Unlock page.Each medium is a separate subject (islam-ol = Tamil, islam-ol-en = English), so it is unlocked separately. The Students list has an unlock button for each medium.
award_activity() function, which also checks chapter access.subject_unlocks can only be written by admins, through admin_set_unlock().student_private, readable only by the student themselves and by admins.is_admin() on the server.src/app/ routes: landing, (app) student area, admin/, api/panda
src/components/ ChapterList, QuizRunner, FlashcardDeck, ExamVault, NoteReader, …
src/lib/ catalog, levels (O/L, A/L streams), content loader, session, progress, gamification, panda retrieval
scripts/ build-content.mjs (markdown → JSON)
supabase/ SQL migrations
content/ study material (markdown)