ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A private university for the things you actually learn from.
You file a transcript, a video link, or a document under a course, and Studiolo
turns it into two things you can use: highlights (what this material is
actually saying) and step by step (what to do to set it up). Everything
keeps its provenance — who made it, which course it came from, the link back to
the original.README 전문 보기 ↗A private university for the things you actually learn from.
You file a transcript, a video link, or a document under a course, and Studiolo turns it into two things you can use: highlights (what this material is actually saying) and step by step (what to do to set it up). Everything keeps its provenance — who made it, which course it came from, the link back to the original.
Runs two ways. With no configuration it stores everything in one browser (IndexedDB) with no account — open it and it works. Add two Supabase env vars and the same app becomes account-backed and follows you between devices; see docs/supabase-setup.md.
Faculty A field you keep returning to → sidebar
└── Course One body of material, yours or someone else's
│ grouped by track: "Level 0", "Level 1", "Companion"
└── Lesson One transcript / video / document / post
grouped by section: the module inside the course
A lesson always records where it came from: creator, material type, video link, link to the original lesson, and the source file name when the text came from an upload.
It holds three kinds of text, deliberately kept apart:
| what it is | |
|---|---|
| Transcript | what was said |
| Lesson text | what the author wrote — key points, action item, workbook links |
| My notes | what you thought |
Video embeds when it can (YouTube, Vimeo, Loom). Platforms that block framing get a card naming the host, so the video opens in a tab while the transcript and your notes stay put.
npm install
npm run dev # http://localhost:3000
Other scripts: npm run build, npm run start, npm run typecheck.
The app opens with a small demo library so there is something to look at. Settings → Start empty clears it; Reset brings it back.
| Screen | What it is for |
|---|---|
| Discover | What you are mid-way through, your faculties, pinned courses, what came in recently |
| Faculty | The courses inside one field of study |
| Course | Its lessons, filtered by to study / studying / done, with progress and source |
| Lesson | The study view: video, highlights, step-by-step checklist, full transcript, your own notes |
| Library | Every course across all faculties |
| Creators | Who your material came from, and what you have of theirs |
| Search | Full text across titles, topics, notes and every stored transcript |
| Settings | Export / import your library as JSON, reset, clear |
The Add material dialog takes:
.txt, .md, .vtt, .srt. Subtitle files are stripped
of timestamps, cue numbers and the duplicate lines YouTube exports, then
re-flowed into paragraphs (lib/transcript.ts).lib/insights.ts is the seam where a model will eventually sit. Today it runs
offline and deterministically, so the interface is real without any key or
network call:
Swapping this for a model call means replacing the body of analyzeTranscript
and setting engine: "model" on the result. Nothing in the UI has to change.
app/
layout.tsx Provider + shell
page.tsx Discover
faculty/[facultyId]/ Courses in a faculty
course/[courseId]/ Lessons in a course
lesson/[lessonId]/ The study view
library/ creators/ search/ settings/
components/
AppShell, Sidebar, TopBar Frame
FacultyDialog, CourseDialog, LessonDialog, CreatorPicker
cards.tsx, ui.tsx, Icon.tsx Cards, primitives, icon registry
lib/
types.ts The whole domain model — read this first
store.tsx React context: selectors + every mutation
persistence.ts The storage boundary (localStorage today)
insights.ts Transcript → highlights, steps, tools
transcript.ts Caption cleanup, YouTube ids, word count
seed.ts The demo library
theme.ts Accent tokens
Two boundaries are deliberate and worth keeping:
useLibrary(),
which goes through persistence.ts.Database in lib/types.ts is the wire shape. It is what Settings
exports, and what the Supabase tables should mirror.docs/import-format.md describes a one-course JSON file. Drop files on
Settings → Add course files, several at once.
Importing merges — it never wipes. Re-importing a course updates it in
place, keeping your status and notes while refreshing the source material, so a
course can be imported as titles first and re-pulled once the transcripts exist.
docs/examples/ has a worked file.
supabase/schema.sql is already in place for
it.analyzeTranscript with a server
route. The result is already cached on the lesson (Lesson.study) and tagged
with which engine produced it.