ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Learn all 460 official German citizenship test questions.
Translation pending
EducationTypeScript · JavaScriptGitHub @UtpalDasLabsOnlineOwner 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
App with flash cards for German citizenship test
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Leben in Deutschland — German Citizenship Test A flashcard app for the official German citizenship test (Einbürgerungstest / Leben in Deutschland). One codebase, three targets: iOS, Android and a static web app that deploys to GitHub Pages. All 460 official questions are included — the 300 general questions plus 10 questions for each of the 16 Bundesländer — each with the German original, an English translation, a plain-English explanation, and a visual.Read the full README ↗
A flashcard app for the official German citizenship test (Einbürgerungstest / Leben in Deutschland). One codebase, three targets: iOS, Android and a static web app that deploys to GitHub Pages.
All 460 official questions are included — the 300 general questions plus 10 questions for each of the 16 Bundesländer — each with the German original, an English translation, a plain-English explanation, and a visual.
Progress stays on the device and there is no account. On the web the app asks
before sending anonymised usage statistics (screens used, mock-exam results —
never answers) to Google Analytics. Nothing is fetched from Google until you
allow it, the choice can be changed any time on the "You" tab, and native
builds send nothing. See src/lib/analytics.ts.
The app is served at https://lid.utpaldas.com, deployed by Vercel from main
(vercel.json).
To run it locally:
npm install
npm run web # dev server with fast refresh
Or build and serve the exact bundle that ships:
npm run build:web
npx http-server dist -p 8080
It used to live at
utpaldaslabs.github.io/German-Citizenship-App/. GitHub Pages still serves that address, but only the page inhandover/, which carries each visitor's saved progress over to lid.utpaldas.com (public/handover.htmlreceives it).
There is no app store build and none is needed: the web app installs to a home screen and then behaves like a native app, offline included.
The app detects which of these applies and shows the right steps, during the first-run intro and again under You → Where your progress lives. On Chromium it skips the instructions and offers a one-tap install button instead.
npm install
npm run ios # requires macOS + Xcode
npm run android # requires Android Studio
npm start opens the Expo dev server, so you can also scan the QR code with the
Expo Go app to run it on a physical device without any native build.
One-time setup: go to Settings → Pages and set Source to GitHub
Actions. The workflow cannot do this for you — the GITHUB_TOKEN it runs with
is not permitted to create a Pages site — so the first deploy fails with
Get Pages site failed until this is done.
Note that Pages on a private repository requires GitHub Pro, Team or Enterprise. On a free plan the repository has to be public for Pages to be available at all.
After that, every push to main (or the feature branch listed in the workflow)
runs Deploy web app to GitHub Pages, which type-checks, builds the static
export and publishes it.
app/ expo-router routes
(tabs)/ home, topic decks, exam intro, progress + settings
study.tsx flashcard session
practice.tsx multiple-choice practice
exam-session.tsx timed 33-question mock exam
src/
components/ UI primitives, flashcard, SVG illustration set
data/ generated question dataset (do not edit by hand)
lib/ question selectors, spaced repetition, stats, i18n
store/ settings + progress providers (AsyncStorage backed)
theme/ design tokens and the theme provider
scripts/
fetch-source.mjs re-downloads the upstream question catalogue
build-data.mjs builds src/data/ and assets/questions/
topics.mjs topic / illustration / icon classification rules
data-source/ vendored input data (see data-source/SOURCE.md)
src/data/ and assets/questions/ are generated. To rebuild them:
node scripts/fetch-source.mjs # downloads the catalogue + original images
npm run data # classifies, optimises and writes the dataset
The build fails loudly if the catalogue is not exactly 300 general questions and 10 per Bundesland, so a bad upstream update cannot slip through silently.
The upstream catalogue is community-maintained and its explanation text is
AI-generated, so it is not error-free. Known corrections live in
scripts/corrections.mjs, each with its reasoning, and the build fails if a
correction no longer matches the source — so a fixed upstream cannot silently
re-break, and an upstream rewrite cannot silently bypass a fix.
Currently corrected:
If you spot another, add it there rather than editing the generated data.
The questions come from the official BAMF Leben in Deutschland catalogue, via
the MIT-licensed @cemusta/burgertest
package. See data-source/SOURCE.md for details.
This app is a study aid. It is not affiliated with, endorsed by, or operated by BAMF or any other government body.