Some notes on local-first development

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • sqlsync

    SQLSync is a collaborative offline-first wrapper around SQLite. It is designed to synchronize web application state between users, devices, and the edge.

  • Here's another local-first collaborative component: SQLSync [0]

    [0] https://github.com/orbitinghail/sqlsync

  • pashto-dictionary

    monorepo for LingDocs Pashto dictionary, account, and backend

  • I made an open-source dictionary with a (local-first) word list (with spaced repititon review) that syncs with PouchDb/CouchDb. It's a free dictionary but you pay to get the word list sync. The whole dictionary is designed to be an offline-first SPA so a local-first DB/sync for the word made sense, although I wasn't aware of the "local-first" name when I built it.

    https://dictionary.lingdocs.com

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • obsidian-releases

    Community plugins list, theme list, and releases of Obsidian.

  • Obsidian[0], as well as many other Zettelkasten applications are local-first.

    https://obsidian.md

  • evolu

    Local-first platform designed for privacy, ease of use, and no vendor lock-in

  • localfirstweb.dev

    A list of various resources for local-first web development

  • This is sometimes called "LoFi" development these days and there's a Discord where people discuss it:

    https://localfirstweb.dev/

    Despite the name it's not really a web exclusive community.

    Actually the web isn't a great way to do this, there's alternate stacks that maybe can work better. The Android stack has been rewritten in recent years by Google and parts are now usable on desktop and iOS. Someone posted this to the Kotlin slack earlier today which is how they implement local-first using the Kotlin stack:

    https://medium.com/@mike_21858/auto-generating-an-http-serve...

    The idea is that you can use Kotlin for both server, Android and also a desktop client, and with KMP you're also able to use it on iOS for the backend (UI is still in Swift). So you can share your domain model across all devices and the underlying sync protocols and logic can be auto generated using a compiler plugin. The underlying DB is SQLite wrapped using a library from Google called Room which makes SQLite a bit easier to use.

    I’ve been working on apps for limited connectivity environments such as Afghanistan and rural Rwanda for many years. I think we have to make offline-first a lot easier than it is now. Our own app Ustad Mobile has more than 60 tables in the database. Writing manual logic to run all of those offline would 1) exceed the resources we have and 2) be prone to human error.

    This article introduces Door: our open-source way to automate the generation of an offline-first data layer using Kotlin Multiplatform and Kotlin Symbol Processing (KSP). Door is still a work-in-progress and not ready for production use in other apps yet, but we think it’s a game-changer for offline-first development. Feedback on the concept and API is welcome. Door can automatically generate HTTP server endpoints and an offline first client based on a Room database.

    Deploying such an app on Android is obvious, for iOS you need to learn about Kotlin/Multiplatform but obviously SQLite can run on iOS just fine and Kotlin can interop with Objective-C/Swift. For desktop, deployment is easy if you use Conveyor, which the Ustad guys are planning to do, as it supports Kotlin desktop apps out of the box. You do need to buy signing certificates (or distribute via the app stores) but that's a one time cost.

    The main issue here is if you're wedded to the web. Probably stuff can be done with WASM but it's not going to be as natural as just using the tech on the JVM.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts