ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기EchoLingo is an AI-powered IELTS speaking practice platform designed to simulate natural, real-time conversations with an intelligent examiner. Instead of traditional scripted exercises, EchoLingo focuses on interactive speaking experiences that feel closer to talking with a real person.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗EchoLingo is an AI-powered PTE Academic practice platform. It combines LangGraph agent workflows, rubric-grounded feedback, exemplar-grounded practice generation, Azure speech assessment, and a full-stack web app for repeatable PTE practice.
This is a personal full-stack / AI agent engineering project built to explore how LLM applications can move beyond single prompt calls into testable, observable, tool-using workflows.
EchoLingo does not replicate Pearson's official scoring algorithm. Scores and feedback are practice-oriented estimates. Azure Pronunciation Assessment is used as an objective signal for supported spoken tasks.
Core: FastAPI, LangGraph, LangChain, Supabase PostgreSQL/pgvector, DashScope Embeddings, Azure Speech SDK, Next.js, TypeScript
Testing: pytest, Vitest, Playwright
Development workflow: Claude Code with ECC-assisted planning, verification, review, and documentation. Product scope and architecture decisions remain explicit repository artifacts rather than session-only context.
EchoLingo supports these PTE Academic practice flows:
| Area | Features |
|---|---|
| Practice | Individual task practice, Theme Practice, Targeted Practice |
| Mock Exam | 15-task sequence covering all implemented PTE task types |
| Feedback | Structured AI feedback, dimension scores, suggestions, coach tips |
| Speech | Azure TTS stimuli and pronunciation assessment |
| Study Aid | Study Assistant, word lookup, vocabulary list |
| Progress | History, task-type weakness profile, trends, recommendations |
| Platform | Supabase auth/sync, i18n, PWA, responsive UI |
Implemented task types:
flowchart LR
Browser["Next.js App Router UI"] --> API["FastAPI backend"]
API --> Feedback["LangGraph feedback pipeline"]
API --> Assistant["LangGraph Study Assistant"]
API --> Onboarding["LangGraph onboarding assessment"]
API --> Speech["Azure Speech SDK"]
API --> Supabase["Supabase Auth/Postgres"]
Feedback --> RubricRag["Rubric RAG<br/>Supabase pgvector"]
Assistant --> Tools["LangChain tools"]
API --> ExemplarStore["Stimulus exemplars<br/>pgvector + tsvector"]
ExemplarStore --> Hybrid["Dense + sparse retrieval<br/>RRF fusion"]
The frontend does not own LLM or third-party business logic. All secrets and
agent orchestration live in the Python backend. Browser requests go through the
FastAPI base URL configured by NEXT_PUBLIC_API_BASE_URL.
Implemented in backend/services/feedback_graph.py.
flowchart TD
A["retrieve_context"] --> B["process_speech_evaluation"]
B --> C["call_primary"]
B --> D["call_judge"]
C --> E["check_divergence"]
D --> E
E -->|dimension gap > 15| F["retry_primary"]
E -->|no divergence| G["call_coach"]
F --> G
G --> H["finalize"]
Key behavior:
judgeLog, coachSuggestions, and per-request
observability logs such as task_type, rag_chars, diverged, and
retry_count.Implemented in backend/services/study_assistant_graph.py and
backend/tools/study_assistant_tools.py.
The Study Assistant is a multi-turn tool-using helper with three LangChain tools:
navigate_app: returns app navigation help from an allow-listed route map.generate_practice: creates deep links into topic-based text task practice.pte_knowledge: answers PTE format, scoring, timing, and strategy questions.The tool loop is capped at four iterations. Routes are filtered through an allow-list so the model cannot invent application paths. Topic practice defaults to exemplar-grounded generation and switches to news-grounded generation only when the latest user message contains an explicit recency cue.
Implemented in backend/services/onboarding_graph.py.
The onboarding graph:
asyncio.gather.EchoLingo uses two retrieval surfaces:
| Collection | Purpose | Implementation |
|---|---|---|
| Rubric chunks | Ground feedback in task-specific scoring criteria | Supabase pgvector via backend/services/rag.py |
| Stimulus exemplars | Seed realistic practice stimulus generation | Dedicated Postgres table with pgvector + tsvector |
Theme Practice uses hybrid retrieval:
tsvectorbackend/services/exemplar_store.pyGenerated stimuli pass through a local originality guard in
backend/services/originality.py. It computes 4-gram word-shingle Jaccard
overlap against injected exemplars and triggers one regeneration if overlap is
above 0.5.
backend/
main.py FastAPI app entry point
routers/ HTTP endpoints
services/ Agent graphs, RAG, speech, stimulus generation
tools/ LangChain tools
prompts/ YAML prompts and knowledge files
scripts/ Rubric/exemplar ingestion and evaluation scripts
tests/ pytest suite
src/
app/ Next.js App Router pages
components/ Shared UI components
hooks/ Practice and recording lifecycle hooks
lib/ API client, task bank, history, recommendations
locales/ English and Chinese UI strings
types/ Shared TypeScript types
docs/
adr/ Architecture decision records
PROJECT_CONTEXT.md Current project context and architecture notes
DEVELOPMENT_LOG.md Development log
ROADMAP.md Current phase and strategic priorities
npm install
cp .env.example .env.local
Required frontend environment:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000
Run the frontend:
npm run dev
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
Required backend environment:
LLM_API_KEY=
LLM_BASE_URL=https://api.deepseek.com
LLM_MODEL=deepseek-chat
AZURE_SPEECH_KEY=
AZURE_SPEECH_REGION=
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_DB_URL=
DASHSCOPE_API_KEY=
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
CORS_ORIGINS=http://localhost:3000
Run the backend:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
Then open the frontend at http://localhost:3000.
# Frontend quality gates
npm run lint
npm run typecheck
npm run test:unit:run
npm run build
npm run test:e2e
# Backend tests
cd backend
pytest
Database schema and migrations live at the repository root:
supabase-schema.sqlsupabase-migration-001.sql through supabase-migration-006.sqlRAG-related setup:
backend/scripts/setup_pgvector.sql enables pgvector-related database setup.backend/scripts/seed_rubrics.py embeds rubric YAML files into the rubric
vector store.backend/scripts/embed_exemplars.py embeds accepted stimulus exemplars into
the hybrid retrieval table.Some exemplar source data is intentionally gitignored. The code supports both public-source scraping and private local recall-question ingestion, but private data is not committed.
The most useful project docs are:
docs/README.md for the documentation map and maintenance policy.docs/PROJECT_CONTEXT.md for the current architecture and domain model.docs/ROADMAP.md for the current phase and strategic priorities.docs/adr/0005-langgraph-rag-refactor.md for the feedback pipeline decision.docs/adr/0008-stimulus-exemplar-model.md for exemplar-grounded generation.docs/adr/0009-hybrid-retrieval-theme-practice.md for hybrid retrieval.docs/adr/0010-study-assistant-tool-using-agent.md for the Study Assistant.This repository is currently a personal portfolio project. Add a license before using it as an open-source dependency or redistributing it.