Today
Record the five prayers and add a private note for the day or for an individual prayer.
A private native Android prayer journal I built to record daily prayers, add notes, review previous days, and export prayer history.
I wanted a simple way to keep a private record of my daily prayers without creating an account or depending on an online service.
SalahNote keeps its prayer records on the Android device. The main action is direct: open a day, record the five prayers, and write a note only when it is useful.
Preview APK: this is the supplied debug build, shared directly for testing and portfolio demonstration. It is not a Google Play listing.
From Salah Companion to SalahNote
Salah Companion was an earlier, broader idea. It grew beyond the small prayer record I actually wanted, so I removed the unrelated scope and built SalahNote as a separate focused Android app. The two projects are connected, but they are not the same application.
Removing features made the purpose clearer and gave me a project I could test and complete.
Prayer records
The compiled data model stores prayer states, per-prayer notes, a daily note, tags, profile ID, and timestamps. It distinguishes completed, missed, and not recorded instead of treating every unchecked item as the same thing.
Architecture verified from the APK
Material 3 screens, navigation, calendar, settings, and reports
Dated prayer states, notes, tags, profiles, and timestamps
Theme, motion, prompts, goals, lock settings, and export choices
PDF, CSV, and encrypted archive creation and restore
Why Room? Prayer history is structured and date-based. A day can contain five states, several notes, timestamps, tags, and a profile link. Room makes those records easier to preserve and query than putting the whole history into preference values. DataStore is kept for the smaller settings it suits.
Privacy
Android’s manifest sets allowBackup to false. No account or sign-in component was found, and profiles only separate records inside the app.
What the build contains
Record the five prayers and add a private note for the day or for an individual prayer.
Review dated records through history, calendar, search, tags, and filters.
Create readable PDF reports or structured CSV files for a selected date range and chosen prayers.
Create and restore a passphrase-protected local archive. The compiled implementation uses PBKDF2-HMAC-SHA256 and AES-256-GCM.
Mark today's prayers from an Android widget and see the current completed count.
Choose theme, reduced motion, journal prompt, monthly goal, export-note inclusion, and an optional device-credential app lock.
Problems I had to solve
Onboarding and theme values are stored in DataStore. I had to wait for that state during startup so the app did not briefly show the wrong screen.
Adding notes for individual prayers changed the stored record. The migration keeps the earlier daily note and existing history instead of replacing the database.
Prayer states and notes have to come back exactly as they were saved. That made persistence part of the main feature, not an extra detail.
PDF and CSV reports query the stored history for the selected dates and prayers. They are generated as local files rather than built from sample data.
The APK contains Room migrations from database version 1 to 2 and 2 to 3. The first moves the old single note into a daily note while adding separate note fields for each prayer. The next adds local profiles and keeps existing records under the main profile.
APK details
I could inspect its manifest and compiled contents here, but this audit environment did not have an Android emulator or connected phone for a fresh device run.
salahnote-v10.0.0-debug.apkDE950D2803D12F6FAA1A8B0C626FDB4FDA7F1B0B3F6307B1973C46A90E645421I used AI-assisted development tools during parts of the project, while working through the architecture, testing, debugging, and implementation decisions myself.