Á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)