Zapstore - OpenSats Progress Report

franzap

5. August 2025August 5, 2025 · 4 Min. Lesezeit4 min read

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: https://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#

UI#

Other#

Written by

Comments

No comments yet. Start the conversation.

Contents

5 sections

  1. Time Spent
  2. Libraries
  3. Servers
  4. Clients
  5. Plans for Next Quarter