TutorLoom
기업·대학·교육기관을 위한 학습 플랫폼, 무료 오픈소스이며 엔터프라이즈 버전 제공
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Japanese flashcard website
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A personal Next.js app for studying Japanese vocabulary. Each word has 5 attributes: Kanji, Romaji, English meaning, Tips (Marathi), Category (noun/verb/adjective/…).
docs/spaced-repetition.md.Next.js (App Router, TS) · Tailwind CSS v4 · Supabase (Postgres) · docx, pdf-lib (export) ·
papaparse, xlsx, mammoth, pdf-parse (import).
supabase/schema.sql,
and run it to create the vocab table.localhost), and add Redirect URLs for every origin you use, e.g.
https://your-domain.com/**, http://localhost:3000/** (and your ngrok HTTPS origin if you
tunnel the dev server). Password-reset links use the deployed site URL; if the production origin
is missing here, Supabase falls back to Site URL (often localhost).cp .env.local.example .env.local
Fill in:
NEXT_PUBLIC_SUPABASE_URL=https://<your-project>.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=<your-publishable-key>
NEXT_PUBLIC_SITE_URL=https://your-domain.com
NEXT_PUBLIC_SITE_URL is optional locally (the app derives the origin from the request). Set it in
production so password-reset emails always link to your deployed site.
Per-user data isolation is enforced by Row Level Security, so the publishable key is all the app
needs — no service-role key is stored in the app.
npm install
npm run dev
Open http://localhost:3000 → you'll be redirected to /login. Create your owner account.
Then enable auth scoping + migrate your existing words: open SQL Editor, set the owner email at
the top of supabase/0002_auth_rls.sql, and run it. (It adds
user_id, backfills your existing rows to your account, and turns on RLS + per-user policies.)
In SQL Editor, run the remaining migrations in numeric order:
0003_srs.sql through 0010_kanji_prompt_hints.sql. They add the independent word/Kanji schedules,
per-character Smart Kanji cards, curated selections, lossless reconciliation, atomic review
commits and history, idempotent review retries, and safe All Kanjis reading hints. Existing words
enter the flashcard rotation as new cards. How the scheduler works:
docs/spaced-repetition.md.
The first row may be a header. Recognized column names (case-insensitive, any order):
kanji/japanese/word, romaji/reading, english/meaning, tips/marathi/hint, category/type.
If no header is recognized, columns are read positionally in the order above.
CSV and Excel parse most reliably; PDF table parsing is best-effort — always review the preview.
PDF export embeds public/fonts/NotoSansJP-Regular.ttf (kanji) and
public/fonts/NotoSansDevanagari-Regular.ttf (Marathi). Default PDF fonts cannot render these scripts.
@supabase/ssr (cookie sessions). Session refresh and
route gating live in proxy.ts (Next.js 16 renamed middleware → proxy).lib/supabase/server.ts); vocab.user_id + RLS policies isolate data.xlsx (SheetJS) from the npm registry has known advisories; acceptable for personal/local use.