ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
A small space for studying Japanese.
Translation pending
EducationTypeScript · JavaScriptGitHub @ohashi-frOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
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 ↗A small, calm Japanese-study app. Modules contain levels, levels contain cards, you flip through them one at a time and get a score at the end. Built with Next.js 14 (App Router) + Supabase + Tailwind.
# inside the project folder
npm install
cp .env.local.example .env.local # then fill in the Supabase values (step 2)
npm run dev
That's it. No global tools required.
supabase/schema.sql and run it. This creates the four tables and the row-level security policies.supabase/seed.sql, and run it. This adds the Vocabulary → Level 1 module with all 73 starter cards. To also load the conjugation module, paste supabase/seed_conjugation.sql and run it.NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY.env.local:NEXT_PUBLIC_SUPABASE_URL=https://xxxxxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi...
/admin.By default Supabase Auth allows anyone to sign up. If you want to lock it down to just you, go to Authentication → Providers → Email and turn Enable Sign Ups off.
npm run dev
Then open http://localhost:3000.
/ → /modules/vocabulary → click a level → quiz./admin → log in with the user you created above.NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY*.vercel.app URL.If you change Supabase keys later, update the env vars in Vercel and redeploy. No build settings to tweak — npm run build and npm start are the standard Next.js commands.
app/
page.tsx Home (module grid)
modules/[slug]/page.tsx Levels in a module
modules/[slug]/[levelId]/page.tsx Quiz
admin/
page.tsx Login
dashboard/page.tsx All modules + stats
modules/new/page.tsx Create module
modules/[id]/page.tsx Edit module + manage levels
modules/[id]/levels/[levelId]/page.tsx Edit level + manage cards
components/
QuizClient.tsx Card flow, scoring, save session
LoginForm.tsx Email/password sign-in
ModuleForm.tsx Create / edit a module
LevelManager.tsx Add / reorder / delete levels
LevelEditor.tsx Inline card edit + bulk import
SignOutButton.tsx
DeleteModuleButton.tsx
lib/
supabase/client.ts Browser Supabase client
supabase/server.ts Server Supabase client (cookies)
types.ts
middleware.ts Protects /admin/* via Supabase session
supabase/
schema.sql Tables + RLS policies
seed.sql Vocabulary / Level 1 starter cards
seed_conjugation.sql Conjugation module + 2 levels of verb/word-type cards
modules, module_levels, cards require an authenticated user (admin). Anonymous users can only insert into sessions. This is enforced at the database level by RLS — it's fine that the anon key is shipped to the browser..trim().normalize("NFC").toLowerCase(), so trailing whitespace and unicode normalization differences won't trip you up.english,japanese per line for quiz modules and verb,form,answer for conjugation modules. Wrap a field in "…" if it contains a comma.sessions with total_cards and correct_first_try; the dashboard averages these per module.