Files
boris/node_modules/applesauce-core
Gigi 5d53a827e0 feat: initialize markr nostr bookmark client
- Add project structure with TypeScript, React, and Vite
- Implement nostr authentication using browser extension (NIP-07)
- Add NIP-51 compliant bookmark fetching and display
- Create minimal UI with login and bookmark components
- Integrate applesauce-core and applesauce-react libraries
- Add responsive styling with dark/light mode support
- Include comprehensive README with setup instructions

This is a minimal MVP for a nostr bookmark client that allows users to
view their bookmarks according to NIP-51 specification.
2025-10-02 07:17:07 +02:00
..

applesauce-core

AppleSauce is a collection of utilities for building reactive nostr applications. The core package provides an in-memory event database and reactive models to help you build nostr UIs with less code.

Key Components

  • Helpers: Core utility methods for parsing and extracting data from nostr events
  • EventStore: In-memory database for storing and subscribing to nostr events
  • Models: Complex subscriptions for common nostr data patterns

Documentation

For detailed documentation and guides, visit:

Example

import { EventStore } from "applesauce-core";
import { ProfileModel, TimelineModel } from "applesauce-core/models";
import { Relay } from "nostr-tools/relay";

// Create a single EventStore instance for your app
const eventStore = new EventStore();

// Use any nostr library for relay connections (nostr-tools, ndk, nostrify, etc...)
const relay = await Relay.connect("wss://relay.example.com");

// Subscribe to events and add them to the store
const sub = relay.subscribe([{ authors: ["3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"] }], {
  onevent(event) {
    eventStore.add(event);
  },
});

// Subscribe to profile changes using ProfileModel
const profile = eventStore.model(ProfileModel, "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d");

profile.subscribe((parsed) => {
  if (parsed) console.log(parsed);
});

// Subscribe to a timeline of events
const timeline = eventStore.model(TimelineModel, { kinds: [1] });

timeline.subscribe((events) => {
  console.log(events);
});