ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
AmbaraEdu — private tutoring LMS
Translation pending
EducationTypeScript · HTMLGitHub @Targhib49OnlineOwner 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
Private LMS
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Custom LMS for a private tutoring business. Phase 1: auth, Track → Module → Lesson content model, polymorphic content blocks (markdown / LaTeX equation / code snippet / file attachment), tutor authoring UI, student reading UI.
Next.js (App Router) + TypeScript · Supabase (Postgres, Auth, Storage) · Prisma 7 · Tailwind v4 · VercelRead the full README ↗Custom LMS for a private tutoring business. Phase 1: auth, Track → Module → Lesson content model, polymorphic content blocks (markdown / LaTeX equation / code snippet / file attachment), tutor authoring UI, student reading UI.
Full product spec: tutoring_lms_spec.md
Next.js (App Router) + TypeScript · Supabase (Postgres, Auth, Storage) · Prisma 7 · Tailwind v4 · Vercel
Copy .env.example to .env and fill in the Supabase values. Connection strings come from Dashboard → Connect: DATABASE_URL is the transaction pooler string (port 6543), DIRECT_URL the session pooler string (port 5432). API keys are the new-format ones (Settings → API Keys): sb_publishable_... and sb_secret_....
Install and migrate:
npm install
npx prisma migrate deploy # applies the checked-in init migration
npx prisma generate
Seed (creates the tutor account, two fake students, two tracks, and the private attachments storage bucket):
npx prisma db seed
npm run dev and sign in with SEED_TUTOR_EMAIL / SEED_TUTOR_PASSWORD (or a seeded student: [email protected] / [email protected] with SEED_STUDENT_PASSWORD).
For future schema changes use npx prisma migrate dev --name <change> (runs against DIRECT_URL).
src/proxy.ts refreshes the session and gates all routes; src/lib/auth.ts has requireTutor() / requireStudent() guards used by layouts, actions, and the file route.PUBLISHED lessons). The Supabase JS client is only used for auth and storage.public.User.id equals auth.users.id. Accounts are created by the tutor (Students page) via the admin API — no public signup, no DB trigger.ContentBlock is a BlockType enum + JSON data column. Per-type shapes live in src/lib/blocks/schema.ts (Zod, satisfies Record<BlockType, ...> keeps it exhaustive). Rendering dispatch is src/components/blocks/renderers.tsx, editing dispatch src/components/blocks/editors.tsx. Adding a block type = enum value + migration, one Zod schema, one renderer case, one editor case.attachments bucket; downloads go through /api/files/[blockId], which checks access then redirects to a 10-minute signed URL.