ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Book reader with AI assistant for learn and practic language
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An intelligent application for learning foreign languages through reading. Open a book, tap on any word, and receive an instant analysis: translation, grammar, context, and examples. Listen to the text with interactive karaoke highlighting and sync your progress across all devices.README 전문 보기 ↗v1.1.0 · Mobile-first PWA · Next.js 16 · Gemini AI · Supabase Cloud
An intelligent application for learning foreign languages through reading. Open a book, tap on any word, and receive an instant analysis: translation, grammar, context, and examples. Listen to the text with interactive karaoke highlighting and sync your progress across all devices.
| Home | Reader | AI Panel | Flashcards |
|---|---|---|---|
| Dashboard with progress | Book text with highlights | Word/phrase analysis | List of saved words |
_de, -en, -fr, -es).new, due, learning.Settings → Подключение ИИ-агентов issues a personal, HMAC-signed URL
(/api/mcp/<token>) that turns the app into an MCP server. ChatGPT, Claude,
Gemini CLI and anything else that speaks the protocol can then read the
learner's state and write into their app. Every call is scoped to the token's
owner and is plain database work — no Gemini spend.
The agent on the other end is the language model: it writes the texts and picks the words, and these tools store them exactly the way the in-app generator does.
| Area | Tools |
|---|---|
| Discovery | get_overview, get_capabilities |
| Flashcards | list_flashcards, add_flashcards, update_flashcard, delete_flashcards, get_study_words |
| Dictionary & batches | list_word_batches, list_batch_words, search_dictionary, add_word_batch, add_words_to_batch |
| Learning quality | get_progress, get_training_summary, get_training_history (docs) |
| Texts | create_lesson, list_texts, get_text, list_catalogue |
| Interactive tests | get_assessment_capabilities, create_assessment, update_assessment, prepare_assessment_audio, get_assessment_status, publish_assessment, list_assessments, get_assessment_results, submit_assessment_review, get_learning_gaps, check_dictionary_words, get_speech_service_status |
Interactive tests are taken by the learner at /test/<id> (and listed on the home
screen): reading, listening (recorded by the app itself with Gemini TTS, with a
server-side play limit), choice, gaps, word order, short answers, translation of a
ready Russian text, writing, and speaking — read aloud, listen-and-repeat and free
spoken answers assessed by Azure Pronunciation Assessment (AZURE_SPEECH_KEY,
AZURE_SPEECH_REGION) — in a learning or a diagnostic mode. The learner can tap
any word for a translation or mark it unknown; the teacher agent sees both. Schemas, rules and examples for the teacher agent:
docs/assessments-mcp.md.
Beyond tools, the server also serves prompts (ready-made flows the learner
can pick from a menu: «рассказ из моих слов», «что я забываю») and resources
(aibook://guide, aibook://state, aibook://progress). All three are built
from one description of the app in lib/mcp/capabilities.ts, because clients
disagree about which of them the model actually sees — ChatGPT's connector UI,
for instance, drops the server's instructions. lib/mcp/tools.test.ts fails
the build if a tool exists that the capability map does not mention, which is
what keeps a newly shipped feature from being invisible to connected agents.
aibook/
├── app/
│ ├── layout.tsx # Root layout, PWA metadata, CSS imports
│ ├── page.tsx # Main SPA router (section state machine)
│ ├── auth/ # Auth pages (Login/Signup)
│ └── api/
│ └── ai/
│ └── analyze/
│ └── route.ts # Server-side proxy → Gemini API
│
├── components/
│ ├── ui/
│ │ ├── AppShell.tsx # Application shell with bottom navigation
│ │ ├── AudioScrubber.tsx # Interactive TTS controls
│ │ └── SpeakButton.tsx # TTS trigger
│ ├── auth/ # Authentication components
│ ├── home/ # Dashboard widgets
│ ├── library/ # File upload, book list
│ ├── reader/ # Reader view with word highlighting
│ ├── ai-panel/ # Side panel for AI analysis
│ ├── word-modal/ # Modal window for word analysis
│ ├── cards/ # Flashcards list
│ └── settings/ # Settings & Profile
│
├── lib/
│ ├── ai/ # Gemini API logic & prompts
│ ├── auth/ # Supabase Auth hooks
│ ├── db/ # LocalStorage & Supabase CRUD
│ ├── parser/ # TXT/EPUB parsers
│ ├── tts.ts # TTS Engine (Gemini/Browser)
│ └── config.ts # App constants
│
├── styles/ # Vanilla CSS design system
└── public/ # PWA assets & manifest
| Technology | Role |
|---|---|
| Next.js 16 | Framework |
| React 19 | UI Library |
| Supabase | Auth, Database, Cloud Sync |
| Gemini AI | Text Analysis & TTS |
| epubjs | EPUB Parsing |
| Lucide | Icons |
Your data is private. While we use cloud sync, your Gemini API key remains in your local storage and is never stored on our servers.
ISC © 2025