2.2 KiB
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 Sinceor+ Days Until - Fill form: title, type, date, visibility
- App constructs a
kind: 30078event - 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=publicfor public view
-
Parse date and type for rendering
Edge Cases & Decisions
- Two counters with same
dtag? 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)