Aug 5, 2025

Zapstore - OpenSats Progress Report

Time Spent

Zapstore is composed by many projects, from clients to servers to libraries.

The overall goal for this quarter was wrapping up the core libraries and pushing out a revamped Zapstore CLI.

Noteworthy changes for each below.

Libraries

purplebase/models

I created this powerful library to build nostr apps in Dart, with pluggable implementations, from scratch. The main idea behind it is to power different UI systems (GUIs, TUIs) without coupling them to the actual implementation.

This is the cornerstone of all Zapstore projects interaction with nostr.

It features a relatively small API surface, ideal for both humans and AIs. It is offline-first. Instead of NIP-jargon, uses type-safe classes with domain language to interact with nostr, with many common nostr event kinds available (or bring your own). As well as relationships, which are really the secret sauce for deep integration without too much API pollution. (Case in point, see zaplab)

Repository and README: purplebase/models

Changelog: CHANGELOG (0.1.x releases for this period)

purplebase/purplebase

Since models by default has a dummy implementation (great for prototyping), purplebase offers a real implementation, featuring a SQLite-backed storage and a websocket pool.

Also created from scratch during this period. This is the actual implementation used in the new Zapstore app, and Zapstore CLI.

Repository: purplebase/purplebase

purplebase/nip07_signer

The models package also exposes a Signer interface, this implementation (mostly used in Zapstore CLI, but can also run standalone) offers opening a browser window to sign app and release events via NIP-07.

Repository: purplebase/nip07_signer

purplebase/amber_signer

This Signer implementation uses a NIP-55 Dart library and connects to the Amber app in Android.

Repository: purplebase/amber_signer

Servers

zapstore/relay

In order to phase out the limited relay implementation currently running at relay.zapstore.dev (repo: github.com/zapstore/ftsrelay), developed a relay implementation from scratch in Go, based on the rely framework. Including Zapstore specific features such as whitelisting, support for communities (upcoming), etc.

Repository: zapstore/relay

zapstore/blossomd

A Dart implementation of a Blossom server following the Blossom specification for storing and serving blobs with nostr authentication. Includes a whitelisting mechanism.

Migration has been performed, all assets now served from this new server.

Repository: zapstore/blossomd

zapstore/indexer

Based on the latest Zapstore CLI, indexer holds a number of YAML snippets that specify how to crawl/fetch/index different applications from around the web, with the goal of providing updates.

Work here has been around updating to the new YAML format, and adding more apps requested by users.

Repository: zapstore/indexer

Clients

zapstore/zapstore

No significant changes in this period.

zapstore/zapstore-cli

This is the CLI tool developers use to sign and publish releases to the Zapstore relay.

Complete rewrite to make it more developer friendly, in particular this means:

  1. Remove dependencies on external tooling, which frustrated many - so an APK parsing library was built from scratch in pure Dart

  2. More signing options including nsec, NIP-07 browser signing, NIP-46 bunkers, output unsigned (see the amber_signer and nip07_signer libraries

  3. Improved YAML format for app parsing specification

Natively support Github, Gitlab, F-Droid.

On the package manager side of it, added the ability to zap.

Repository: zapstore/zapstore-cli

Details here: CHANGELOG (for this period, look at 0.2.0 releases)

zapstore/website

No significant changes in this period.

Plans for Next Quarter

Migrations

  • Migrate old relay (zapstore/ftsrelay) running on relay.zapstore.dev to the new implementation

  • Separate indexed releases from dev-signed releases by introducing bridge.zapstore.dev

  • Migrate indexer from a cron-based call to the CLI, to a full-fledged Dart program with fine tuning, to prepare for the indexing of thousands of new apps, as well as user suggestions

UI

  • New Zapstore app stable release, including relay (and Blossom server, DVM) selection in the UIs (this depends on the migration described above). Many new social features and fixes requested by users for a long time, unattended updates, and more.

Other

  • Streamlining internal processes, even easier tools for developers to publish, marketing and support efforts