ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기An app where I am able to track my Arabic stats, gain xp, level up and improve my reading / comprehension abilities. Levels where I start from beginner books and work my way up to scholarly books by ibn qayyim ibn taymiyyah etc.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Get through real Arabic books.
Tap any word to translate, save it to a spaced-repetition deck, and finish books.
Reading Arabic is hard because one unknown word breaks the flow and you never
finish the book. Maqraa removes the dictionary friction — tap a word, get the
lemma + meaning in context, keep reading — and measures real outcomes (books
finished, words mastered, days in a row) instead of an abstract level.README 전문 보기 ↗Reading Arabic is hard because one unknown word breaks the flow and you never finish the book. Maqraa removes the dictionary friction — tap a word, get the lemma + meaning in context, keep reading — and measures real outcomes (books finished, words mastered, days in a row) instead of an abstract level.
/review)
with tap-to-flip flashcards and Again / Hard / Good / Easy grading. /words groups
every saved word by strength (New → Mastered)..epub; it's parsed in the browser into real
chapters, and one click of AI fills difficulty, genre, and blurb and regroups
badly-split EPUBs. Low-quality OCR scans are detected and flagged before import.Curated books are grouped by a coarse tier shown to the reader — Beginner /
Intermediate / Advanced (tierFor in components/book/BookCover.tsx, derived from
the advisory books.level). The tier is a signal and a shelf, not a ladder you must
climb: progress is measured by books finished, words mastered, and streak.
The curated catalogue is famous public-domain and original work only — an original graded reader (رحلة سامر), Juha folk tales, the Arabian Nights frame, al-Nawawi's 40 Hadith, Forty Hadith Qudsi, Kalila wa Dimna. (In-app text is always public-domain, original, or a reader's own private upload — never fabricated copyrighted text.)
Maqraa is freemium, billed through Stripe.
| Free | Pro | |
|---|---|---|
| Curated Beginner shelf | ✅ | ✅ |
| Intermediate & Advanced books | — | ✅ |
| Bring your own EPUBs | — | ✅ |
| Spaced-repetition deck | up to 50 words | unlimited |
| Daily AI limits (lookups / quizzes / tests) | modest | high |
lib/entitlement.ts is the single source of truth (getPlan / canReadTier); every
gate is enforced server-side (book page, reader route, test route, upload action,
AI quota). Emails in ADMIN_EMAILS are auto-Pro. A Stripe webhook
(/api/stripe/webhook) keeps the subscriptions table in sync.
type=signup). No magic-link sign-in.app/globals.css @theme) · Framer
Motion · lucide-reactlib/db/schema.ts, migrations in db/migrations/pnpm install
cp .env.example .env.local # Supabase, DATABASE_URL/DIRECT_URL, ANTHROPIC_API_KEY, (Stripe optional)
pnpm db:push # apply the Drizzle schema
pnpm db:seed # difficulty bands, curated on-ramp books + chapters, achievements
pnpm dev # http://localhost:3000
Supabase from a laptop: the direct DB host (db.<ref>.supabase.co) is IPv6-only
and often won't resolve locally — point DATABASE_URL / DIRECT_URL at the session
pooler (aws-<n>-<region>.pooler.supabase.com:5432, user postgres.<ref>).
Admin / curated uploads: add your email to ADMIN_EMAILS (comma-separated). Admins
are auto-Pro and their uploads become public catalogue books; everyone else's
uploads are private to them.
Scripts: pnpm db:generate, pnpm db:studio, pnpm test (Vitest), pnpm lint, pnpm build.
Billing is optional — without Stripe env the app runs free-only and /upgrade shows
"coming soon". To enable Pro:
STRIPE_SECRET_KEY=sk_… pnpm tsx scripts/stripe-setup.ts — idempotently creates the
Maqraa Pro product + monthly/annual prices; prints the price IDs.https://YOUR_DOMAIN/api/stripe/webhook, events
checkout.session.completed + customer.subscription.*; copy its signing secret.STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_MONTHLY,
STRIPE_PRICE_ANNUAL, and NEXT_PUBLIC_APP_URL.scripts/stripe-backfill.ts reconciles the subscriptions table with Stripe if a
webhook delivery is ever missed. Use test keys locally, live keys only on the host.
/upload → drop an .epub:
lib/books/epub.ts, jszip). Reads the OPF for metadata,
then the book's own TOC (EPUB3 nav / EPUB2 toc.ncx) for real chapter
boundaries, merging spine pages between them; falls back to one chapter per spine
document. OCR accuracy banners are stripped and bad scans flagged (lib/books/quality.ts).lib/ai/book-analyze.ts). Claude reads only short
excerpts and returns a difficulty band, genre, blurb, and a page→chapter grouping
that drops front/back matter. Whole books are never sent to the model.createBookWithChapters writes the book + chapters and stamps
owner_id.| Route | Purpose |
|---|---|
/ | Signed-out landing |
/sign-in | Password sign-in · code-confirmed sign-up |
/path | Read — Continue hero, tier shelves (Beginner/Intermediate/Advanced), your library |
/book/[slug] | Book detail: cover, chapters, start reading, optional test |
/book/[slug]/read/[chapter] | The page-by-page reader + tap-to-translate |
/book/[slug]/test | Optional whole-book comprehension test |
/words · /review | Saved words · SM-2 flashcards |
/upload | Add a book (EPUB importer + AI) — Pro |
/upgrade | Pricing + Stripe checkout |
/settings · /stats | Plan & profile · reading stats |
/privacy · /terms | Legal |
lib/db/schema.ts — data model (books.owner_id, user_books, book_chapters,
vocab_items, streaks, subscriptions, …)lib/entitlement.ts — plan / Pro gates · lib/stripe/* — Stripe client, checkout, webhook synclib/books/{epub,split,quality}.ts — EPUB → chapters, OCR-scan detectionlib/ai/{word-lookup,chapter-quiz,test-generator,book-analyze,quota}.ts — Claude features + rate limitscomponents/reader/ChapterReader.tsx · components/upload/AddBook.tsxapp/(app)/path/page.tsx — the Read catalogue · app/(auth)/sign-in/page.tsx — authlib/srs/sm2.ts — pure SM-2 (unit-tested) · lib/xp/{rewards,grant}.ts — XP mathfont-arabic utility and dir="rtl" (Noto Naskh Arabic, Amiri
fallback). The logo is the Arabic wordmark مقرأ in Amiri.tailwind.config.ts — tokens live in app/globals.css.