ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Video learning platform with AI search that opens the lesson video at the exact second a topic is taught. Next.js 16, Sanity, Gemini, Clerk.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Search your learning in plain English. Vertex is a video learning platform. You type a question like "where did they explain caching?" and get a ranked list of results. Each result opens the lesson video at the exact second the topic comes up.
Live demo → vertex-delta-orpin.vercel.app · try searching for "caching" or "server components"
| Home | Lesson | Mobile |
|---|---|---|
| Area | Tools |
|---|---|
| Web app | Next.js 16 (App Router, React Server Components), React 19, TypeScript, Tailwind CSS v4 |
| Content | Sanity (separate Studio, private dataset, GROQ, Portable Text, TypeGen) |
| AI search | Vercel AI SDK 7, Google Gemini, Sanity Context MCP |
| Auth | Clerk (route protection in middleware) |
| Analytics | PostHog (product events and server logs over OpenTelemetry) |
| Validation | Zod |
| Hosting | Vercel |
browser ──GET /api/search?q=──▶ Next.js route (server only)
│
├─ 1. split the query into keywords, drop stop words
├─ 2. two GROQ queries through the Sanity Context MCP
│ • lessons: title (boosted ×3), notes, key points
│ • videos: chapters first, transcript chunks only as a fallback
├─ 3. Gemini ranks the matches and returns {lessonId, second}[]
├─ 4. each result is checked against Sanity as it arrives
└─ 5. result cards stream back as NDJSON ──▶ results page
Design decisions worth calling out:
lib/search.ts rejects a result unless the lesson belongs to a course and the claimed second matches a real chapter or chunk. Labels such as "Lesson 3.2" are worked out from the module order, never stored..
├── app/ Next.js routes: home, catalog, course, lesson, search, /api/search
├── components/ UI components (cards, groove bar, header, search results)
├── lib/ Pure logic with tests: search grounding, labels, video embeds, pagination
├── sanity/ Server-only Sanity client, GROQ queries
├── proxy.ts Clerk middleware (browsing stays public)
└── studio/ Standalone Sanity Studio
├── schemaTypes/ course, module, lesson, instructor, category, video
└── scripts/
├── ingest/ Offline caption/chapter ingestion (YouTube, Vimeo, Bunny)
├── seed/ Seed dataset (10 courses, 120 lessons)
└── context/ Search config document for the Context MCP
Security rules the code follows:
[a-z0-9] keywords before it reaches any query.youtube-nocookie.com for YouTube.You need Node 24, a Sanity project, a Clerk app, a Gemini API key, and a PostHog project.
# web app
npm install
cp .env.example .env.local # fill in the keys; .env.example lists every one
npm run dev # http://localhost:3000
# studio (separate terminal)
cd studio
npm install
npx sanity dataset import scripts/seed/seed.ndjson production
npm run deploy && npm run schema:deploy # the Context MCP needs a deployed Studio
npm run ingest # build chapter/transcript docs for every lesson video
npx tsc --noEmit
npm run lint
node --test lib/*.test.ts # web unit tests
node --test studio/scripts/ingest/parse.test.ts # caption parser tests
npm run build
Done: content model, Clerk auth, catalog, course and lesson pages, video ingestion, AI search, PostHog analytics, and the "Listening Room" redesign (see DESIGN.md).
Next: instructor pages, My Learning, and progress tracking (resume position and completed lessons, written through a server route).
Every feature started as a written spec in prompts/ covering the goal, decisions, security notes, acceptance criteria and manual test steps. It then shipped as its own pull request. AGENTS.md holds the architecture rules the whole codebase follows.