Einbürgerungstest is a free, open-source, and user-friendly application for practicing the "Leben in Deutschland" test and the Einbürgerungstest (German naturalization test) created by a foreigner on a voluntary basis.
Website: https://www.ebtest.org/
If you like it, please give it a ⭐ on GitHub!
Disclaimer: The author takes no responsibility for any mistakes or inaccuracies. Pull requests and issues are welcome.
Questions are based on the official dataset from: www.bamf.de – Gesamtfragenkatalog zum Test „Leben in Deutschland“ und zum „Einbürgerungstest“, Stand: 07.05.2025
The app is available as a web application and a mobile app (Android/iOS) built with React and React Native, sharing common logic via Uklad and a monorepo setup.
- Practice Questions: Over 300 questions categorized by topics like Recht, Gesellschaft und Familie, Staat, Politik, etc.
- Multiple Modes:
- Testing mode for practicing with statistics.
- Review mode for checking answers.
- Favorites: Mark questions as favorites for quick access.
- Vocabulary: Multilingual vocabulary support (English, Russian, Arabic, Turkish) for key terms.
- Offline Support: Works offline after initial load.
- Statistics: Track correct/incorrect answers and accuracy.
- Images: Some questions include illustrative images.
- Categories and Filtering: Browse questions by category or favorites.
- Frontend: React (Web), React Native (Mobile)
- State Management: Uklad (re-frame-style events, effects, subscriptions, and platform modules)
- Persistence:
@ukladjs/persist(versioned weblocalStorageand nativeAsyncStoragehydration) - Build Tools: Vite (Web), Metro (Mobile)
- Package Manager: pnpm
- Testing: Vitest
- Node.js >= 22.18
- pnpm (install globally:
npm install -g pnpm) - For mobile: Android Studio (for Android), Xcode (for iOS), CocoaPods (for iOS)
-
Clone the repository:
git clone https://github.com/flexsurfer/einburgerungstest.git cd einburgerungstest -
Install dependencies:
pnpm install
- Test:
pnpm test(runs all tests)
- Development:
pnpm dev:web(runs on http://localhost:4200) - Build:
pnpm build:web
- Start Metro:
pnpm dev:mobile - Run on Android:
pnpm dev:run-android - Run on iOS:
pnpm dev:run-ios - For iOS, ensure Pods are installed:
cd app/mobile/ios && bundle exec pod install
The Android app compiles against and targets Android 16 (API 36), meeting the Google Play target API requirement for updates from August 31, 2026. Install Android SDK Platform 36 and Build Tools 36.0.0 through Android Studio's SDK Manager.
To release this change, increment versionCode in app/mobile/android/app/build.gradle
to a value higher than any previously uploaded build, configure the existing release
signing properties, and run pnpm --filter mobile build:android:bundle. Upload the
generated app/mobile/android/app/build/outputs/bundle/release/app-release.aab to
Google Play Console; changing the source configuration alone does not update the published app.
The shared package contains common Uklad state, data, events, subscriptions, and platform-neutral feature modules used by both web and mobile apps.
- Test shared:
pnpm test:shared
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please ensure your code passes tests and linting.
Distributed under the MIT License. See LICENSE for more information.