Textus
You hold the pen. AI keeps your ink flowing. Textus is a free, open-source, next-generation Markdown editor for macOS, Windows and Linux, with a writing assistant built in.
Record your voice or type text — SpeakAlert says it out loud at the right time, even when your phone is locked. Free talking reminder app for Android, no ads.
ProductivityKotlin · PythonGitHub @ghostgramlabsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Talking reminders for Android in your own voice or text-to-speech. Offline, no account, no ads.
Loading the full README.
Read the full README ↗Most reminder apps post a silent notification. SpeakAlert plays the reminder out loud, so you hear it even when the phone is in your pocket or across the room.
Requirements:
git clone https://github.com/ghostgramlabs/SpeakAlert.git
cd SpeakAlert
./gradlew assembleDebug # Windows: gradlew.bat assembleDebug
The debug APK lands in app/build/outputs/apk/debug/. Install it on a device or emulator
running Android 8.0 (API 26) or later:
./gradlew installDebug
Debug builds need no configuration. Only release builds need a signing key (see Release signing).
./gradlew testDebugUnitTest
Unit tests live in app/src/test and run on the JVM. Exact-alarm and notification behaviour
also needs testing on real devices; docs/REMINDER_RELIABILITY_TEST_PLAN.md
lists the manual checks.
Release builds read their signing key from local.properties, which git ignores:
speakalert.storeFile=your-release-key.jks
speakalert.storePassword=...
speakalert.keyAlias=...
speakalert.keyPassword=...
storeFile is resolved relative to the app/ directory. Never commit a keystore or its
passwords.
The app is a single Gradle module written in Kotlin with Jetpack Compose, Room, DataStore, AlarmManager, WorkManager and Media3, following an MVVM layout.
app/src/main/java/com/ghostgramlabs/speakalert/
├── alarm/ Exact-alarm scheduling, alarm receivers, boot rescheduling
├── audio/ Voice recording, processing, playback
├── data/ Room database, DAOs, repositories, backup/restore
├── domain/ Domain models and recurrence logic
├── service/ Foreground playback service and text-to-speech
├── ui/ Compose screens: home, add/edit, details, alert, settings
├── widget/ Home-screen widgets
└── util/ Shared helpers
docs/ Website served at ghostgramlabs.com/SpeakAlert (GitHub Pages)
store/ Play Store listing, screenshots and icons
tools/ Python scripts that generate the icon, screenshots and promo video
Translations are in app/src/main/res/values-*/strings.xml.
| Permission | Why |
|---|---|
RECORD_AUDIO | Record voice reminders |
POST_NOTIFICATIONS | Show reminder alerts (Android 13+) |
SCHEDULE_EXACT_ALARM, USE_EXACT_ALARM | Fire reminders at the exact minute |
USE_FULL_SCREEN_INTENT | Full-screen alert on the lock screen |
FOREGROUND_SERVICE, FOREGROUND_SERVICE_MEDIA_PLAYBACK | Keep playback running while a reminder speaks |
RECEIVE_BOOT_COMPLETED | Reschedule reminders after a restart |
ACCESS_NOTIFICATION_POLICY | Optional Do Not Disturb bypass |
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS | Ask to be exempted from battery limits that delay alarms |
BLUETOOTH_CONNECT | Route private playback to Bluetooth headphones |
WAKE_LOCK, VIBRATE | Wake the device and vibrate on alerts |
| Document | What it covers |
|---|---|
| ARCHITECTURE.md | How the app is built: packages, data model, the alarm and playback flow |
| CHANGELOG.md | What changed in each release |
| CONTRIBUTING.md | Reporting bugs, translating, and submitting pull requests |
| docs/REMINDER_RELIABILITY_TEST_PLAN.md | Manual device checks before a release |
Bug reports, translations and pull requests are welcome. See CONTRIBUTING.md. To report a security problem, follow SECURITY.md instead of opening a public issue. Everyone taking part is expected to follow the code of conduct.
SpeakAlert is released under the Apache License 2.0. You may use, modify and redistribute it, including commercially, as long as you keep the copyright notice and the NOTICE file, which credits GhostGram Labs.
The SpeakAlert name and icon are not covered by the license. If you publish a fork, give it its own name, icon and application ID.
Made by GhostGram Labs.