Áleran Vocals
Piano, entrenamiento con micrófono y juegos de oído para alumnos de canto: notas, escalas, afinación, rango vocal, resistencia e intervalos.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 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)