Files
NostrCounter/Context.md
2025-07-19 09:31:12 +02:00

2.2 KiB

context.md

Purpose

The goal of this app is to provide a minimalist but powerful tool for people to track life milestones using the Nostr protocol. It's completely censorship-resistant and optionally anonymous.

Examples:

  • Days since quitting alcohol
  • Days since last porn use
  • Days since last cigarette
  • Days until a planned event like a trip, wedding, or conference

The app encourages positive habit tracking and event anticipation. Counters are personal but shareable, with optional zapping support.


User Roles

Anonymous Visitor

  • Can view public counters
  • Cannot create or save counters

Nostr Logged-In User

  • Can create counters (published to Nostr relays)
  • Can edit/delete own counters (via NIP-01 signature)
  • Can receive zaps

User Flows

1. Login

  • User connects a Nostr signer (e.g. extension or mobile app)
  • App stores the pubkey in state (no server-side session needed)

2. Create a Counter

  • Click + Days Since or + Days Until
  • Fill form: title, type, date, visibility
  • App constructs a kind: 30078 event
  • Signs and publishes it to relays

3. View Dashboard

  • Shows counters created by the user
  • Sorted by creation or date proximity

4. Public Viewing

  • Counters from all users marked public
  • Optional featured section
  • Zap button visible if NIP-05 or lightning address is detected

5. Share a Counter

  • Permalink to /counter/:slug
  • Users can repost or share

Event Fetch Logic

  • Use NDK to fetch kind 30078

  • Filter by:

    • Author pubkey (for personal dashboard)
    • Tag visibility=public for public view
  • Parse date and type for rendering


Edge Cases & Decisions

  • Two counters with same d tag? Latest one overrides for that user
  • Private counters are not displayed publicly, even if published to relays
  • If date is in the future and type is since, display warning
  • Zap metadata must be fetched separately using NIP-05 or kind:0 event

Philosophy

This is a lightweight, open, and empowering way to track progress. It's built on top of Nostr to ensure:

  • Decentralized data storage
  • No vendor lock-in
  • Optional pseudonymity
  • Easy integration with the Lightning Network (via zaps)