DEV Community

Cover image for Kramli - The accessible List app. Free, without ads. For Everyone.
Johannes Häusler
Johannes Häusler

Posted on • Edited on

Kramli - The accessible List app. Free, without ads. For Everyone.

GitHub “Finish-Up-A-Thon” Challenge Submission

This is a submission for the GitHub Finish-Up-A-Thon Challenge

Kramli

I build Kramli, the list app for you.

The name comes from the German word "Kram" meaning "stuff", but it works well for English too, because you tend to cram everything you have to do together and then you’ll loose track. Not with my App, at least that’s the goal.

Shopping lists, todos, packing lists, and Kanban boards in one app. Web, iPhone, iPad, Mac, Android, one account, real-time sync. And it does accessibility properly: every setting iOS exposes, most of what Android exposes, and the web app handles screen readers, reduce motion, increased contrast, forced colours, and reduced transparency.

Accessibility Nutrition Label from iOS

"Done" does not mean you stop shipping. No side project gets there. Kramli is in the App Store, on Google Play, and in your browser at kram.li. I still change it every week.

Before and after

Before this challenge, Kramli was real but only halfway where I was able to call it useful. iOS was the showcase: widgets, Apple Watch, Siri, an iMessage extension. The web and Android trailed, a few languages were half-translated, and Arabic looked broken because I hadn't touched right-to-left.

After, it is one app on five platforms that actually feel like the same product. Fifteen UI languages share a single source of truth. The browser extension reaches Chrome, Firefox, Edge, and Opera. Arabic reads right-to-left the way it should. The web PWA is usually ahead of the store builds.

The version number on the App Store still moves. That is the whole point: shipped, not abandoned.

What it does

Items get tags, priorities, due dates, custom states, notes, comments, @mentions, and what ever the heck you guys want in the future. "My Day" pulls everything due into one screen. There is a focus timer for Pomodoro sessions; on iOS it uses AlarmKit so it keeps running in the background.

A single list switches between list, board, and calendar view, and it sits in the same place on web and mobile.

You can share lists and folders, invite by email, or drop a reusable invite link (kram.li/i/<token>). The activity feed shows who changed what. Edits sync over Socket.IO on the web and FCM on mobile, and offline edits queue up and reconcile when you reconnect.

The browser extension saves highlighted text, links, and page titles into a list. Right-click on desktop, long-press on a phone. Safari uses the extension bundled with the Mac and iOS app.

Kramli Extension Showcase image

Home screen widgets on iOS and Android. An Apple Watch app. Passkeys on web and mobile. macOS ships as the same App Store binary as iOS. Wear OS is next.

Tech stack

Python 3.13 and Flask on the server, PostgreSQL in production, Flutter for mobile and macOS, Firebase for auth, Sentry for crashes. The full list, including the open-source libraries I lean on, is on the credits page.

Try it

kram.li

On a phone, install from the store or join the beta if you want the build that is waiting on App Review.

Mobile Beta Landing

Or just search Kramli on the Play Store. Platforms today: Android, iOS, iPadOS, macOS, Apple Watch. Wear OS is not shipped yet.

Kramli Web UI

Thank you for motivating me!

Motivation is not constant. When more people use the app and the feedback is kind, opening the repo gets easier. A bug report or a feature request is better than a star rating for me. It’s really nice to see others actually care.

Help shows up too. This week FancyTree fixed the right-to-left layout for Arabic, which is the one locale a German-first codebase tends to get wrong.

GitHub Copilot

Copilot earned its keep on tab completion across a messy monorepo: Flask and Jinja on the web, Flutter on mobile, browser extensions, Swift extension targets. The boring wiring (a new translation key in fifteen files, another API route plus the matching mobile method) is where it saved me hours.

For research I used MCP tools, including Browser-Use, to walk through flows without clicking every path by hand. The fifteen-language rollout would have dragged without help keeping keys lined up across the ARB, js_, and wb_ prefixes.

My backlog is itself a Kramli list. The Kramli CLI ships an MCP server, so Copilot reads and filters my open tickets straight from that list. Code review caught real bugs before merge, and once, when a translation string broke and I was away from my desk, I fixed it from a Copilot agent session on my phone.

*Prize money

If this wins, the prize goes to the people who test Kramli and send the bug reports that keep it moving. It is a passion project, and it stays one. I will NOT keep ANY money.

Can I use Kramli with / as an LLM?

It's also for you if you are an LLM (or LLM user)! here you can read the llms.txt

The cli is open source and can be found here: https://github.com/SpotlightForBugs/kramli-cli/releases/latest

here you can read the llms.txt

Here is an image of the CLI:

CLI

Some images

Use the Focus timer on Android and iOS with Live Activity / Android Dynamic Notifications
Focus timer

Use Kramli with Apple Shortcuts and Apple Intelligence
Apple Shortcuts integration

Apple Intelligence / Siri integration

Kramli works with on-device Ai, like Gemini Nano and Apple Intelligence on mobile (and the mac and vision Pro), with experimental Chrome On-Device Ai coming soon.

Foreground: Apple Foundation model explainer. Background: privacy centric from day one

You can share your lists via iMessage
iMessage integration

Use Kramli with native Apple Handoff, native Handoff for Android 17 will launch when Android 17 is out, and our custom Handoff (Web and CLI to mobile and vice-verca)
Support for Handoff;  we support older devices

Custom Handoff

Planned to launch this month is the AppClip, so that voting and planning for events is easy. For Android, the QR-Code brings you in-App, or to the Web version.
upcoming feature: App Clip support for events

Kramli is not open sourced yet. I can share the repo on GitHub with someone trusted if needed.
This is because I am using some proprietary algorithms that I am usually selling to others. Using GitHub Copilot was incredible though, and I feel like Kramli brings actual value.

Kramli will never cost anything.
I don’t want to make money with it. And I will never sell your data. It’s yours to keep.

Everything mentioned here as "Launching soon" is already fully implemented. Anyone interested can ask me for a live demo. This is a one person project.

Discord/github @spotlightforbugs

Top comments (3)

Collapse
 
jonas_b151661c5d9808e20d4 profile image
Jonas

Really nice App.

And it’s suuuper cool, that it’s free.

And apart from its super nice user interface and features, its data secure.

Collapse
 
spotlightforbugs profile image
Johannes Häusler

Thank you!!
I really appreciate your feedback.

Collapse
 
schnurrmaschine profile image
JK

This app went from bad UI, half-baked features to well-polished with basically every feature you can dream of and then some
That was crazy to watch