This is a submission for the GitHub Finish-Up-A-Thon Challenge
Kramli
I build Kramli, the list app for you.
"Done" does not mean you never ship another update. No side project gets there. Kramli is in the App Store, on Google Play, and in the browser at kram.li. I still change it every week.
Shopping lists, todos, packing lists, and Kanban boards live in one app. Web, iPhone, iPad, Mac, and Android share the same account; edits sync over Socket.IO on the web and push on mobile. You can share lists and folders, send invite links (kram.li/i/...), and see who changed what in the activity feed.
Items get tags, priorities, due dates, custom states, notes, comments, and server-side undo. There is a calendar, a "My Day" view, a focus timer, and search across lists.
Browser extensions for Chrome, Firefox, and Edge clip text and links into a list (right-click on desktop, long-press on phone). Safari uses the extension bundled with the Mac and iOS app. Widgets exist on iOS and Android; there is an Apple Watch app. Wear OS is in progress.
Fifteen UI languages share one set of ARB files (app_de.arb and siblings); scripts/sync_l10n.py feeds Flutter, the Flask web app, extension _locales, and native strings. Android also ships on the Play Store and as a Google-free APK (Obtainium link on the landing page).
The web build on kram.li is usually ahead of the store builds. Betas are at kram.li/beta when App Review holds up a release.
Try it
On a phone, install from the store or join the beta program if you want the build that is waiting on review.
Or search for Kramli on the Play Store.
Platforms today: Android, iOS, iPadOS, macOS, Apple Watch. Wear OS is not shipped yet.
Why I kept shipping
Motivation is not constant. When more people use the app and the feedback is kind, it is easier to open the repo again. That is what "finished" means for this challenge: shipped, not abandoned.
GitHub Copilot
Copilot helped most with tab completions in a big monorepo (Flask + Jinja web, Flutter mobile, browser extensions). For research I used MCP tools (including Browser-Use) so I did not have to click through every flow by hand. The 15-language rollout would have taken longer without help keeping ARB keys and sync scripts consistent.
Copilot code review caught issues before merge. The mobile agent session from the phone was useful when a localization string broke and I was away from my desk.
I still made the product calls: web/mobile feature parity, where settings live, German copy with real umlauts. Copilot did not replace that; it cut time on repetitive edits.


Top comments (0)