ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Learn Palestinian Arabic — content & teaching system by Basil Zboun
Translation pending
EducationTypeScript · CSSGitHub @AmiDavidOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Basil Zboun Course
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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.Read the full 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! 🇵🇸