ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
A flashcard web application designed to help you learn new languages. Create, manage, and study your own custom flashcards with helpful AI-powered example sentences, all stored locally in your browser
EducationTypeScript · JavaScriptGitHub @jafarmrtOnlineOwner 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
flashcard with ai
Translation pending
Loading the full README. The saved excerpt is shown below.
Read English books and articles section by section, turn the hard words,
phrases and grammar structures into flashcards, and review them with spaced
repetition (FSRS). Made for a Persian-speaking learner; works offline as an
installable web app.
Prerequisite: Node.js 20 or newer.
1. npm install
2. cp .env.example .env and fill in what you need. Nothing is required for a
first try: without an AI key the app uses free dictionaries
(dictionaryapi.dev, Datamuse, MyMemory).
3. npm run dev and open http://localhost:3000Read the full README ↗Read English books and articles section by section, turn the hard words, phrases and grammar structures into flashcards, and review them with spaced repetition (FSRS). Made for a Persian-speaking learner; works offline as an installable web app.
Prerequisite: Node.js 20 or newer.
npm installcp .env.example .env and fill in what you need. Nothing is required for a
first try: without an AI key the app uses free dictionaries
(dictionaryapi.dev, Datamuse, MyMemory).npm run dev and open http://localhost:3000npm test runs the unit tests, npm run lint type-checks, npm run build
builds the browser app into dist/, and npm start serves dist/ with the
API in production mode.
Add a book (EPUB or .txt), an article (by its link) or pasted text. An EPUB's chapters come from the book's own table of contents and are read in the browser; an article's main text is taken out of the page with Mozilla Readability. Each chapter is read in sections of about 300 words.
Every card remembers who made it (which AI model, the free dictionary, by hand) and where its word was met: book, chapter, section and sentence. A word met in another book gets that sentence added to its card instead of a second card, and each book has a word list by chapter with search and CSV export.
textEditedAt makes other devices fetch it again.notes, synced) point at a passage's
words and keep the words themselves, so they are found again after an edit.DATA_DIR/.data_store.json on a
VPS (back this file up), or Upstash Redis on Vercel (KV_REST_API_URL,
KV_REST_API_TOKEN).DATA_DIR/.lookup_cache.json, or Redis), so a
second tap is instant, works offline and spends no translation quota.The app is for one person. With ALLOW_REGISTRATION empty, the first account
can be created and registration closes after it. true opens registration to
anyone, false closes it completely. Set SESSION_SECRET (at least 32
characters) on Vercel; on a VPS one is generated in DATA_DIR/.session_secret.
In Settings, under «سرویسهای هوش مصنوعی», list the AI services in the order
they should be tried: Gemini, Claude (Anthropic), Groq, OpenRouter, DeepSeek,
a local Ollama or another OpenAI-compatible service, each with its own key
and model. When one
fails (its free quota is used up, its key is wrong, it is down), the next is
asked, and the free dictionaries come last. Gemini without a key uses the
server's GEMINI_API_KEY (or API_KEY). Keys stay on the device; the order
syncs. Every card records which service made it.
The base URL of a custom service must be a public address, since the server
sends the requests. A VPS that runs its own Ollama sets
ALLOW_PRIVATE_AI_URL=true to allow http://localhost:11434/v1 and the like.
The usage page («گزارش مصرف», from Settings) shows, for the last 30 days on
this device: requests to each service per day, failures with their message,
the cards each service made, roughly how much of the free daily translation
quota (MyMemory) is left today, and how much data the account keeps on the
server and in the browser. Setting MYMEMORY_EMAIL on the server raises the
translation quota about tenfold.
CHANGELOG.md is the one place a version is written: the version in
Settings, the changes page and the "new version" notice are read from its
newest entry, and a test keeps package.json on the same version. A change
that reaches users gets an entry in the same commit.