ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Basil Zboun Course
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Your personal Palestinian Arabic learning app — a PWA you can install on Android and use on your laptop, wired to your 2,142-entry notebook vocabulary.查看完整 README ↗Your personal Palestinian Arabic learning app — a PWA you can install on Android and use on your laptop, wired to your 2,142-entry notebook vocabulary.
What's inside:
| Service | What you need | Where |
|---|---|---|
| Supabase | Project URL + anon key + service role key | https://supabase.com — free tier |
| Anthropic | API key (starts with sk-ant-…) | https://console.anthropic.com |
| OpenAI | API key (starts with sk-…) — for Whisper STT | https://platform.openai.com |
| ElevenLabs | API key + voice ID — for TTS | https://elevenlabs.io — free tier gives 10k chars/mo |
cd arab-made-easy
npm install
Requires Node 20+.
cp .env.local.example .env.local
# open .env.local and fill in the keys
The default voice ID (pMsXgVXv3BLzUgSXRplE) is ElevenLabs' Jordanian Arabic voice (Rachel). To swap in a Bethlehem-cloned voice later, just change ELEVENLABS_VOICE_ID.
supabase/schema.sql from this repo → copy the whole fileYou should see tables entries, topics, grammar_rules, notebook_pages, reviews, scans, conversations created, with 15 seed topics.
npm run import-vocab
This reads data/arabic_vocabulary.xlsx (already included), pushes all 2,142 entries into Supabase with topics auto-tagged based on notebook page ranges, seeds the grammar rules, and registers all 47 scanned pages.
npm run dev
vercel deploy — it walks you through it)"Import failed with RLS error" — the schema.sql opens up permissive policies, but make sure you're using the service role key (not anon) in SUPABASE_SERVICE_ROLE_KEY.
"Voice chat gets no response" — check API keys for OpenAI (Whisper) and ElevenLabs. The Anthropic key powers the chat brain.
"Scan returns nothing" — Claude Vision requires the image to be reasonably clear. Try in good light. The API returns the raw model output if parsing fails.
"The Arabic looks wrong direction" — the .arabic CSS class handles RTL. If a component isn't showing it, add className="arabic" to the element.
ELEVENLABS_VOICE_ID in .env.localThat's it — the voice chat now speaks in Bethlehem.
arab-made-easy/
├── app/
│ ├── page.tsx # Home / tile grid
│ ├── catalog/ # Vocabulary browser
│ ├── grammar/ # Grammar rules
│ ├── flashcards/ # SRS practice
│ ├── match/ # Matching game
│ ├── scan/ # Camera + AI extraction
│ ├── voice/ # Voice chat
│ ├── pages-viewer/ # Original scans
│ └── api/
│ ├── scan/route.ts # Claude Vision OCR
│ ├── stt/route.ts # Whisper STT
│ ├── chat/route.ts # Claude chat (Palestinian)
│ └── tts/route.ts # ElevenLabs TTS
├── lib/
│ ├── supabase.ts # DB client
│ ├── srs.ts # SM-2 spaced repetition
│ ├── grammar-content.ts # ← Edit here to add/change grammar rules
│ └── utils.ts
├── scripts/
│ └── import-vocab.ts # Excel → Supabase
├── supabase/
│ └── schema.sql # Paste into Supabase SQL editor
├── public/
│ ├── notebook-pages/ # 47 scan images
│ └── manifest.json # PWA manifest
└── data/
└── arabic_vocabulary.xlsx # Source of truth for vocab
public/icon-*.png are placeholders you'll want to replace)Enjoy! 🇵🇸