- Overview
- Features
- Screenshots
- Requirements
- Setup and installation
- Running the application
- Testing the application
- Releasing the application
- Application usage
- F-Droid Metadata
- Contributing
- Licence
- Support
Daymark is a free open source (FOSS) Android application written in Kotlin that counts the number of days since or until a given date for events. It is released under the MIT licence.
It builds on the original Count The Days Android application created by sreich by preserving the foundation of the original project while introducing modern enhancements like Material 3, widgets and advanced notifications.
| Feature | Description | |
|---|---|---|
| ✅ | Activity tracking | Create day counters for activities, events, milestones and reminders. |
| ✅ | Date range support | Optional end dates to track durations in addition to single-day events. |
| ✅ | Relative time display | View time as "3 weeks ago" or "in 2 months" based on your preferences. |
| ✅ | Home screen widgets | 1x1 Quick add for fast entry and 4x4 list to view all counters at a glance. |
| ✅ | Rich notifications | Get notified on your device the moment an activity reaches its end date. |
| ✅ | Data sovereignty | Export your data to human-readable CSV or technical JSON formats. |
| ✅ | Flexible viewing | Switch between List and Grid layouts to suit your style. |
| ✅ | Privacy lock | Protect your data with an optional App PIN (between 4 and 16 digits). |
| ✅ | Organisation | Use Categories and Tags to keep your activities organised. |
| ✅ | Reorder & sort | Manually drag-and-drop activities or sort them alphabetically. |
| ✅ | Quick item actions | Edit, duplicate, share, archive and delete via simple menus. |
| ✅ | Modern UI | Full Material 3 interface with support for Dynamic Colour and Dark Mode. |
| ✅ | Offline-first | No tracking, no ads and no internet connection required for core features. |
- Translation support: Community-driven localisations for non-English speakers.
| Landing screen | Activity menu actions | Activity list widget | App lock screen |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| New activity screen (1) | New activity screen (2) | Edit activity screen (1) | Edit activity screen (2) |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Search activities | Filter activities | Sort by dialogue | Manage categories | Manage tags |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| Date calculator | Days calculator | Time unit dialogue | Device notification |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Settings screen (1) | Settings screen (2) | Settings screen (3) | Settings screen (4) |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Settings screen (5) | Set theme dialogue | App layout dialogue | Set app PIN dialogue |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Storage & backup | Clear all activities | Reset app dialogue | App updater dialogue |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Changelog dialogue | OS licence dialogue | App version dialogue | |
|---|---|---|---|
![]() |
![]() |
![]() |
| Landing screen | Activity menu actions | Activity list widget | App lock screen |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| New activity screen (1) | New activity screen (2) | Edit activity screen (1) | Edit activity screen (2) |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Search activities | Filter activities | Sort by dialogue | Manage categories | Manage tags |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| Date calculator | Days calculator | Time unit dialogue | Device notification |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Settings screen (1) | Settings screen (2) | Settings screen (3) | Settings screen (4) |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Settings screen (5) | Set theme dialogue | App layout dialogue | Set app PIN dialogue |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Storage & backup | Clear all activities | Reset app dialogue | App updater dialogue |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Changelog dialogue | OS licence dialogue | App version dialogue | |
|---|---|---|---|
![]() |
![]() |
![]() |
- Kotlin
- Java 17+
- Room database (SQLite)
Recommended: Install a standalone JDK (17+ recommended) or use the one bundled with Android Studio.
java -versionDownload and install Android Studio from https://developer.android.com/studio. Ensure the Android SDK, Platform Tools and Emulator are selected during setup.
Add the Android SDK environment variables.
Example for Linux/macOS:
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulatorVerify:
adb --version- Clone the repository:
git clone https://github.com/ASPTechInc/Daymark.git - Open the project and wait for Gradle sync to complete.
- Select a device and click Run ▶.
./gradlew assembleDebug
./gradlew installDebug
adb shell monkey -p com.asptechinc.daymark 1VS Code can be downloaded from https://code.visualstudio.com/download.
-
Open VS Code command palette using
Ctrl+Shift+P.Then, click Debug: Select and Start Debugging or click the dropdown menu next to the green ▶ Run button (upper-left)
-
Pick any of the following launch configurations from the list:
-
Run Android app (emulator)
This calls the Launch Android app (emulator) task, which will start the emulator and run the app.
-
Run Android app (connected device)
This calls the Launch Android app (connected device) task, which will run the app on a connected device.
-
Run Android app (automatically detect device)
This calls the Launch Android app (auto) task, which will run the app on an automatically detected device.
-
Stop Android emulator
This calls the Stop Android emulator task, which will stop the running emulator.
-
-
To stop the server, press
Ctrl+Cin the terminal or click the red square stop button in the debug panel.
./gradlew :app:testDebugUnitTest # Local unit tests
./gradlew connectedDebugAndroidTest # Instrumented device tests
# Check for warnings (optional)
./gradlew :app:help --warning-mode allThis project uses GitHub Actions for automated releases. Pushing a tag matching v* to the main
branch will trigger a build and create a draft release with signed APKs.
Daymark provides two widgets to keep your milestones visible without opening the app:
- Quick add (1x1): Tapping this opens the app directly to the "New Activity" screen.
- Activity list (4x4): Displays a scrollable list of your active counters with their relative time.
- Click the Floating action button (+) to create a new activity.
- Enter a name, optional notes and choose a start date.
- Use the Ellipsis (⋮) on any activity card to access the Edit screen.
- Long Press: activates reorder mode. Drag items to change their position in the list.
- Menu Options:
- Duplicate: creates a copy of an existing activity.
- Share: exports the details of an activity as plain text to other apps.
- Archive: Hide completed activities from the main list.
- Reset: Set the start date to "Now" and clear the end date.
Use the top toolbar to find specific activities:
- Search: Search by activity name.
- Filter: Narrow down the list by category, month, year or status (archived or completed).
- Sort: Toggle between manual reordering and alphabetical sorting.
You can enable or disable notifications for activities with end dates in Settings > General. If enabled, Daymark will alert you the moment an activity reaches its scheduled completion.
- JSON backup: A full technical backup of your database, perfect for restoring data on a new device.
- CSV export: A human-readable export that allows you to view your data in spreadsheet software like Google Sheets or LibreOffice.
- Privacy: All data remains on your device. Daymark does not use cloud storage or third-party analytics.
This project includes Fastlane compatible metadata. This ensures that the app's listing, descriptions, and changelogs are maintained directly within source control for FOSS repository compatibility.
Location: fastlane/metadata/android/en-GB/
Naming convention for resource files
activity_: Entire screen layouts.fragment_: Entire fragment screenitem_: Individual list item layouts.view_: Reusable UI components.row_: One row in a listdialogue_: Custom dialogue layouts.
Contributions are welcome! Please read CONTRIBUTING.md for guidelines on code style, testing, and PR submission.
For useful notes, refer to DEVELOPER_NOTES.md
The project is open-source under the MIT Licence.
Developed by ASPTechnologies Incorporation. If you find Daymark useful, consider Supporting the Developer. Daymark is and will always be ad-free.

































































