Bygga
Type the product name from the box. Bygga shows every assembly step in 3D, with the parts, screws and tools for each one, and reads it out loud.
翻譯準備中
Amud is a smart Siddur, tehillim and Torah app built for all platforms with extensive features
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗An offline, interactive siddur. It uses Sefaria texts, a full Hebcal port for the calendar and zmanim, and has reminders and a customizable home screen. It runs on Android, Windows, macOS, Linux and the web (as an installable PWA). iOS builds are released unsigned, for sideloading.
amud-android.apk, amud-windows.zip, amud-macos.zip,
amud-linux-x64.tar.gz, amud-ios-unsigned.ipa, and amud-web.zip (the
built site). The apps check for new releases. Android downloads and
installs them in the app; Windows and Linux open the download (Settings →
App updates).assets/rules/rules.json, which you can add to under Settings → Custom siddur rules.skills/js-card/SKILL.md,
also usable as an AI agent skill)Requires Flutter 3.41 (the version CI uses is in .github/workflows/build.yml).
flutter pub get
flutter run -d linux # or: -d chrome; Android needs a flavor:
flutter run --flavor github # the GitHub APK, which updates itself
flutter run --flavor play # the Google Play build (no updater)
flutter analyze
flutter test
Layout:
| Path | What |
|---|---|
lib/core/ | settings, theme, routing helpers, localization (l10n.dart: tr() for translations, term() for Ashkenazi spellings) |
lib/features/ | one folder per screen or area: home (dashboard and card registry), siddur, torah (downloadable texts), zmanim, calendar, tehillim, alerts, setup (first-run walkthrough, "What's new" and the launch animation), update, and others |
packages/hebcal/ | Dart port of Hebcal: dates, holidays, zmanim, learning schedules |
packages/siddur_engine/ | parses Sefaria siddurim and applies the day's rules |
corpus/siddur/ | Amud's own text of its five main siddurim, edited by hand (corpus/SCHEMA.md), built into assets/corpus/ by tool/corpus/build_assets.py |
assets/sefaria/ | other bundled texts and alternative versions, from dart run tool/sefaria_sync.dart |
assets/rules/rules.json | which sections and inserts are said on which days |
assets/brand/ | the Amud logo as SVG |
landing/ | the static landing page at amud.page's root (the app is under /app/) |
tool/ | web build, service worker generator, Sefaria and Tehillim sync, make_icons.py (every platform's app icon from the logo; needs ImageMagick with librsvg) |
When you add something users should know about, add a Feature to
features in lib/features/setup/whats_new.dart with the next id. New
users see it in the setup walkthrough. People who already finished setup get
a one-time "What's new" card on Home.
Anonymous usage analytics go to one Google Analytics 4 property (Firebase
project amud-7a475, lib/core/analytics.dart). Android, iOS, macOS and
the web use Firebase Analytics. Windows and Linux send to the same
property's web data stream with the GA4 Measurement Protocol.
Events say what was used and read (screens, sections and text versions,
simanim, psalms, searches, settings) but nothing links them to a person:
there's no user id or user properties, no advertising id, and the app gets
a new anonymous id each time it starts (a session cookie on the web).
Active users are counted by check-ins instead of an id: each install sends
active_day once a day and active_month once a calendar month, so MAU is
the count of active_month events for a month (GA's own "users" figure
counts app starts). Users can turn it off under Settings → Advanced → Share anonymous usage.
It's off in debug builds unless you pass --dart-define=ANALYTICS_DEBUG=true.
lib/firebase_options.dart is generated by flutterfire configure --platforms=android,ios,macos,web. For Windows and Linux, create a
Measurement Protocol API secret on the web data stream and build with
--dart-define=GA_API_SECRET=<secret>; without it they send nothing.
Apps: write the release notes in release-notes/<version>.md (the app
shows them before and after updating), then either run Actions → Publish
on master (it tags pubspec.yaml's version and asks which Google Play track)
or push a version tag yourself, for example:
git tag v0.4.0 && git push origin v0.4.0
GitHub Actions runs the tests, builds every platform (Android, Windows, Linux, macOS, unsigned iOS and the web site) and publishes them as a GitHub Release, which the in-app updater picks up, then uploads the Play bundle to Google Play and the iOS build to TestFlight (see DEPLOY.md for the Play secret). Android signing needs these repository secrets:
SIDDUR_KEYSTORE_BASE64SIDDUR_KEYSTORE_PASSWORDSIDDUR_KEY_ALIASSIDDUR_KEY_PASSWORDThey must hold the same key as local builds (android/key.properties, not
committed). Otherwise Android won't install one build over the other.
Web: see DEPLOY.md.
Amud is free software under the GNU General Public License, version 3 (GPL-3.0); see LICENSE.
Texts are from Sefaria. Each version keeps its own
license, which is listed in assets/sefaria/manifest.json and shown in the
app (Settings → Licenses & sources). Hebcal is GPL-2.0-or-later. Font licenses are
in assets/fonts/.