Kotlin Multiplatform
Domain logic, use cases and repositories live in a shared module and compile for both Android and Wear OS. A reminder behaves the same wherever you open it.
About
String is built by Do It And Be Done, a small shop that makes tools we wanted to use ourselves. It started because every reminders app we tried either pushed a subscription on day one or was vague about what it learned from us along the way.
One shared Kotlin codebase compiled for each platform, rather than two apps that drift apart.
Domain logic, use cases and repositories live in a shared module and compile for both Android and Wear OS. A reminder behaves the same wherever you open it.
The interface is Compose, with Compose for Wear OS on the watch. A browser build compiles to WebAssembly and is in development.
Typed SQL against a local SQLite database, with checked migrations so an update never eats your data.
Intents in, state out, pure reducers. Side effects go through use cases, which keeps behaviour predictable and testable.
Every reminder is written to your device first. That write is the source of truth, which is why the app is instant and works in a tunnel.
Authentication and Firestore power sync and sharing. They sit behind a repository boundary, so the app works perfectly well without them.
Plain answers about what the app does with your data. No guessing required.
The privacy policy lists every service that receives anything, what each one gets, and how long it is kept. It also has a section on what String does not collect — which is most of what apps in this category usually do.
There is no analytics SDK in the app and no advertising SDK. Nothing counts what you tap. The only thing String sends about itself is a crash report when it breaks.
No sign-up wall. Open it and start writing. Signing in is what turns sync on, and it is entirely your choice.
The download page lists every permission String asks Android for and why — including the microphone, which is only ever used for voice notes that stay on your device.
String is in closed testing, which is exactly when feedback is worth most.
Email us with your device, Android version, and what you expected to happen. A screenshot or a screen recording saves everyone a round trip.
Tell us. We are small enough that a good suggestion from a tester can land in the next build.