Android APK · Version 10.0.0

SalahNote

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

I made the idea smaller so I could finish it properly.

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

One dated record, with detail only when I need it.

  • Fajr, Dhuhr, Asr, Maghrib, and Isha
  • Completed, missed, or not recorded state
  • A note for each prayer
  • A daily note and optional tags
  • Created and updated timestamps

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

A local Android application, not a web service.

SalahNote data pathJetpack Compose handles the interface. Room stores prayer records and notes, DataStore keeps settings, and Android file APIs create local exports.
Interface

Jetpack Compose

Material 3 screens, navigation, calendar, settings, and reports

Records

Room / SQLite

Dated prayer states, notes, tags, profiles, and timestamps

Preferences

DataStore

Theme, motion, prompts, goals, lock settings, and export choices

Files

Android local APIs

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

The inspected build keeps its normal work local.

Android’s manifest sets allowBackup to false. No account or sign-in component was found, and profiles only separate records inside the app.

  • No Internet permission
  • No camera permission
  • No location permission
  • No cloud database component found
  • Exports are generated on the device
  • Archive passphrases are not stored by the app

What the build contains

Useful tools around the daily record.

Today

Record the five prayers and add a private note for the day or for an individual prayer.

History

Review dated records through history, calendar, search, tags, and filters.

PDF and CSV

Create readable PDF reports or structured CSV files for a selected date range and chosen prayers.

Local archive

Create and restore a passphrase-protected local archive. The compiled implementation uses PBKDF2-HMAC-SHA256 and AES-256-GCM.

Home-screen widget

Mark today's prayers from an Android widget and see the current completed count.

Preferences

Choose theme, reduced motion, journal prompt, monthly goal, export-note inclusion, and an optional device-credential app lock.

Problems I had to solve

The difficult parts were data, startup, and reliable output.

Loading saved settings

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.

Changing the Room database

Adding notes for individual prayers changed the stored record. The migration keeps the earlier daily note and existing history instead of replacing the database.

Keeping records after a restart

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.

Making useful exports

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 migrations in this build

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

The downloadable file is the exact build I inspected.

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.

Download information

Filename
salahnote-v10.0.0-debug.apk
File size
10,995,921 bytes (10.49 MiB)
SHA-256
DE950D2803D12F6FAA1A8B0C626FDB4FDA7F1B0B3F6307B1973C46A90E645421
Build type
Debug APK
Compile / target SDK
35 / 35
Distribution
Direct preview APK · no Google Play listing claimed

I used AI-assisted development tools during parts of the project, while working through the architecture, testing, debugging, and implementation decisions myself.