The Decentralized Super-App for Digital Nomads
Your Identity. Your Network. Your Income. Your Data.
A sovereign platform built on the Nostr protocol and Bitcoin Lightning Network, enabling 35 million digital nomads worldwide to connect, work, travel, and tradeβwithout platform middlemen extracting 15-30% of your income.
π Live at nostr.co.in
End platform extraction. Enable true digital sovereignty.
For 15 years, digital nomads have been promised "location independence"βbut platforms like Airbnb, Upwork, and Instagram extract billions in fees, control your reach with algorithms, and can ban you overnight.
Nostr for Nomads changes that:
- β You own your identity (cryptographic keys, not platform username)
- β You own your network (portable followers, not captive audience)
- β You own your income (0% fees, peer-to-peer payments via Lightning)
- β You own your data (encrypted, not harvested for ads)
Built on battle-tested protocols (Nostr + Bitcoin), not venture-backed extraction machines.
- 35 million digital nomads globally (growing 20% annually β 60M by 2030)
- $1.2 trillion annual economy ($200B+ in platform fees extracted yearly)
- 50+ countries offering digital nomad visas (governments competing for talent)
- Perfect timing: Remote work normalized, platform trust collapsing, Bitcoin maturing
We're building the infrastructure for what comes after platforms.
Core Identity & Communication
- π Sovereign Identity - NIP-05 verification, Lightning address, browser extension support (Alby, nos2x)
- π¬ Private Messaging - NIP-17 gift-wrapped encryption (double-encrypted, E2E secure)
- π€ Profile Management - Custom avatars/banners via Blossom, full CRUD control
The Nomad Tools
-
π Contributions (Share Your Journey)
- Travel stories, location guides, cultural insights
- 13 nomad categories Γ 195 countries coverage
- Rich media support (images, video, audio)
- NIP-33 parameterized replaceable events (fully editable)
-
π Explore (Discover Community Knowledge)
- Real-time queries across 8 global relays
- Filter by region, category, tags
- Media galleries with full metadata
-
ποΈ Marketplace (Commerce Without Middlemen)
- List products/services with 0% commission
- 10 categories: Art, Services, Hardware, Software, Education, etc.
- Multi-media listings (5 attachments per product)
- Full shop management (My Shop dashboard)
Technical Features
- NIP-09 deletion events (true content control)
- Blossom protocol media storage (NIP-96)
- Multi-relay redundancy (censorship-resistant)
- Encrypted cache with 30-day TTL
The Work Platform
- πΌ Work Marketplace (Live in Production)
- Post freelance opportunities with 0% commission
- 10+ categories: Development, Design, Marketing, Writing, Consulting
- Multi-media job listings (images, videos, audio)
- Full CRUD operations (My Work dashboard)
- Remote-first, location-flexible opportunities
Meetups & Events
- π€ Meet (Live in Production)
- Organize local meetups and events with 0% commission
- 6 types: Social Gathering, Workshop, Conference, Networking, Casual, Other
- Virtual and in-person events with RSVP tracking
- Full CRUD operations with generic edit architecture (My Meet dashboard)
- NIP-52 calendar events (Kind 31923 + 31925) for time-based discovery
- Single hero image per event (intentional design matching industry standards)
- Statistics dashboard: Total/Upcoming/Past/RSVPs with reusable components
- RSVP management with accepted/declined/tentative status
- π° Work Escrow - Lightning-based escrow for safe payments
- π€ Meetups - Location-based events with RSVP and Lightning deposits
βοΈ Travel Tools - P2P accommodation booking, visa crowdsourcing- π° Payments Hub - Lightning wallet integration, invoicing, multi-currency
- β‘ Zaps - Lightning tips for creators (NIP-57)
- π Shopping Cart - Multi-vendor cart with NIP-78 storage (service layer complete)
- π± Mobile Apps - Native iOS & Android
- Next.js 15.4.6 - React framework with App Router
- React 18 - UI library with hooks and client components
- TypeScript 5.5.4 - Type-safe development
- Tailwind CSS 3.x - Utility-first styling with @tailwindcss/typography
- Lucide React - Modern icon library
- Framer Motion - Animation library
- nostr-tools 2.17.0 - Nostr protocol implementation (NIPs 01, 05, 07, 17, 19, 23, 33, 44)
- WebSocket - Real-time relay connections to 8 high-reliability relays
- Blossom Client SDK 4.1.0 - Decentralized media protocol (NIP-96)
- Zustand 5.0.8 - Lightweight state management
- React Hooks - Local component state
- IndexedDB (idb 8.0.3) - Client-side data persistence
- Tiptap 3.6.2 - Extensible rich text editor with extensions:
- Character count, color, highlight, links
- Tables, task lists, text alignment
- Subscript, superscript, YouTube embeds
- Tiptap Markdown - Markdown conversion support
- React Markdown - Markdown rendering with remark-gfm
- Blossom Protocol - Decentralized media storage (NIP-96)
- React Easy Crop 5.5.3 - Image cropping and editing
- Multi-file progress tracking - Batch upload management
- ESLint 8.57 - Code linting with TypeScript support
- Prettier 3.3 - Code formatting
- PostCSS - CSS processing with Autoprefixer
- Vercel Analytics 1.5.0 - Performance monitoring
- Upstash Redis 1.35.6 - Edge-compatible caching
The application follows a layered Service-Oriented Architecture with clear separation of concerns:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PRESENTATION LAYER β
β (Pages, Components, Hooks - User Interface) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BUSINESS LOGIC LAYER β
β (Business Services - Domain Logic) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CORE SERVICES LAYER β
β (Infrastructure Services - Technical Capabilities) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PROTOCOL/DATA LAYER β
β (Nostr Services, External APIs, Storage) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Responsibility: User interface, routing, user interactions
- Components:
- Pages (Next.js App Router)
- Reusable UI components (primitives, pages, auth)
- Custom React hooks for state and side effects
- Key Principle: Presentation components are thin and delegate business logic to services
Encapsulates domain-specific business rules and workflows (15 services):
- AuthBusinessService: Authentication flows, key management, sign-up/sign-in
- MessagingBusinessService: Message composition, threading, NIP-17/NIP-44 encryption
- MessageCacheService: Message caching with 30-day TTL and adaptive sync
- ProfileBusinessService: Profile management, validation, NIP-05 verification
- MediaBusinessService: Media upload orchestration, Blossom integration
- ContributionService: Contribution creation, validation, and publishing
- ContributionUpdateService: Update service for editing contributions
- ContributionValidationService: Field-level validation for contributions
- ContributionContentService: Content provider interface for contributions
- ShopService: Product marketplace logic, multi-attachment management
- ProductValidationService: Field-level validation for products
- ShopContentService: Content provider interface for shop products
- WorkService: Work opportunity posting and discovery orchestration
- WorkUpdateService: Update service for editing work opportunities
- WorkValidationService: Field-level validation for work opportunities
- WorkContentService: Content provider interface for work opportunities
- MeetService: Meetup creation, update (
updateMeetup()), and deletion logic - MeetValidationService: Field-level validation for meetups
- MeetContentService: Content provider interface for meetups
- ContentDetailService: Generic content detail provider pattern
Key Characteristics:
- Contains domain logic (e.g., "how to create a user profile")
- Orchestrates multiple core services
- Validates business rules
- Independent of UI frameworks
Provides technical infrastructure capabilities (5 services):
- EventLoggingService: System event tracking and logging
- KVService: Key-value storage abstraction
- LoggingService: Application-wide logging
- ProfileCacheService: Profile data caching
- CacheEncryptionService: Encrypted cache management
Key Characteristics:
- Framework-agnostic utilities
- Reusable across different features
- Technical concerns (logging, caching, storage)
- No business domain knowledge
Handles external protocols and data sources (11 services):
- NostrEventService: Nostr event creation and formatting (Kind 0, 1, 5, 14, 1059, 24242, 30023, 30078, 31923, 31925)
- GenericEventService: Generic NIP-23/NIP-33/NIP-52 event building
- GenericRelayService: WebSocket relay management (8 high-reliability relays)
- GenericBlossomService: Blossom media protocol (NIP-96)
- GenericMediaService: Media upload and management
- GenericAuthService: Cryptographic authentication
- GenericContributionService: Fetches and parses contribution events from Nostr relays
- GenericShopService: Product event parsing with NIP-94 imeta tag support
- GenericWorkService: Work opportunity event queries and parsing
- GenericMeetService: Meetup/event queries and parsing (NIP-52 calendar events)
- EncryptionService: NIP-44 encrypted messaging
- WorkContentService: Work content detail provider
Key Characteristics:
- Direct protocol implementation
- Network communication
- Data persistence
- External API integration
Each service has a single, well-defined responsibility:
// β BAD: Mixed concerns
class MessageService {
sendMessage() { /* business logic + Nostr protocol + UI updates */ }
}
// β
GOOD: Separated concerns
class MessagingBusinessService {
async sendMessage(content: string) {
// Business logic only
const validated = this.validateMessage(content);
const encrypted = await this.encryptionService.encrypt(validated);
return this.nostrService.publishEvent(encrypted);
}
}Services depend on abstractions, not concrete implementations:
// Business service depends on core service interface
class MessagingBusinessService {
constructor(
private nostrService: GenericNostrService,
private encryptionService: EncryptionService,
private cacheService: MessageCacheService
) {}
}Strict dependency rules:
- Presentation β Business Logic β Core Services β Protocol Layer
- Never reverse direction (e.g., Core cannot depend on Business)
- Horizontal communication within same layer is allowed
Page Component
β uses
MessagingBusinessService
β uses
GenericNostrService + EncryptionService
β uses
WebSocket API / Crypto API
Each service is independently testable and replaceable:
// Can mock dependencies for testing
const mockNostrService = { publishEvent: jest.fn() };
const messagingService = new MessagingBusinessService(mockNostrService);
// Can swap implementations without changing consumers
const realNostrService = new GenericNostrService();
const prodMessagingService = new MessagingBusinessService(realNostrService);- Zustand stores (
/src/stores): Global application state (auth, UI) - Service state: Internal service state (connection pools, caches)
- Component state: Local UI state (forms, toggles)
// Global auth state
useAuthStore() // Zustand
// Service manages its own connection state
GenericRelayService.relayConnections // Internal
// Component manages UI state
const [isOpen, setIsOpen] = useState(false) // Local/src
βββ app/ # Next.js App Router pages
β βββ api/ # API routes (event logging)
β βββ my-contributions/ # User's contributions management
β β βββ create/ # Create new contribution
β βββ explore/ # Discover content and communities
β βββ work/ # Work marketplace page
β βββ meetups/ # Local meetup organizer
β βββ messages/ # Messaging page
β βββ meetings/ # Video meetings page
β βββ payments/ # Payment management page
β βββ profile/ # User profile page
β βββ shop/ # Shopping marketplace page
β βββ travel/ # Travel booking page
β βββ work/ # Job board page
β βββ signin/ # Authentication page
β βββ signup/ # Registration page
β βββ user-event-log/ # Event logging dashboard
β βββ layout.tsx # Root layout
β
βββ components/ # React components
β βββ auth/ # Authentication UI (flows, steps, signer)
β βββ generic/ # Reusable components (layouts, dialogs)
β βββ meetings/ # Meeting components (dashboard, URL creator)
β βββ pages/ # Feature-specific components (messages, events)
β βββ primitives/ # Base UI primitives (skeleton, ratings, stats)
β βββ profile/ # Profile-specific UI (image upload, cropper)
β βββ ui/ # Common UI elements (rich text, markdown)
β βββ Header.tsx # Global header navigation
β βββ Footer.tsx # Global footer
β
βββ hooks/ # Custom React hooks
β βββ useAuthHydration.ts
β βββ useConsentDialog.ts
β βββ useConversations.ts
β βββ useMediaUpload.ts
β βββ useMessages.ts
β βββ useMessageSending.ts
β βββ useNostrSigner.ts
β βββ useNostrSignIn.ts
β βββ useNostrSignUp.ts
β βββ useUserProfile.ts
β
βββ services/ # Service layer (SOA)
β βββ business/ # Business logic services
β β βββ AuthBusinessService.ts
β β βββ MessagingBusinessService.ts
β β βββ ProfileBusinessService.ts
β β βββ MediaBusinessService.ts
β β βββ MessageCacheService.ts
β β βββ ContributionService.ts
β β βββ ContributionValidationService.ts
β β βββ ContributionContentService.ts
β β βββ ShopBusinessService.ts
β β βββ WorkService.ts
β β
β βββ core/ # Infrastructure services
β β βββ EventLoggingService.ts
β β βββ KVService.ts
β β βββ LoggingService.ts
β β βββ ProfileCacheService.ts
β β βββ CacheEncryptionService.ts
β β
β βββ generic/ # Generic utilities
β β βββ GenericAuthService.ts
β β βββ GenericBlossomService.ts
β β βββ GenericEventService.ts
β β βββ GenericContributionService.ts
β β βββ GenericShopService.ts
β β βββ GenericWorkService.ts
β β βββ GenericMediaService.ts
β β βββ GenericRelayService.ts
β β βββ EncryptionService.ts
β β βββ MultiFileProgressTracker.ts
β β
β βββ nostr/ # Nostr protocol services
β βββ NostrEventService.ts
β βββ WorkValidationService.ts
β βββ WorkContentService.ts
β
βββ stores/ # Zustand state management
β βββ useAuthStore.ts # Global auth state
β
βββ types/ # TypeScript type definitions
β βββ attachments.ts
β βββ messaging.ts
β βββ nostr.ts
β
βββ utils/ # Utility functions
β βββ keyManagement.ts
β βββ keyExport.ts
β βββ signerFactory.ts
β βββ profileValidation.ts
β βββ nip05.ts
β βββ tagFilter.ts
β
βββ config/ # Configuration files
β βββ relays.ts
β βββ blossom.ts
β βββ media.ts
β
βββ errors/ # Error handling
β βββ AppError.ts
β βββ ErrorTypes.ts
β
βββ styles/ # Global styles
βββ globals.css
βββ tiptap.css
Demonstrates how SOA layers interact:
// 1. USER INTERACTION (Presentation Layer)
// Component: MessageComposer.tsx
const handleSend = async () => {
await messagingBusinessService.sendMessage(content, recipientPubkey);
}
// 2. BUSINESS LOGIC (Business Layer)
// MessagingBusinessService.ts
async sendMessage(content: string, recipient: string) {
// Validate business rules
if (!this.validateRecipient(recipient)) throw new Error();
// Orchestrate core services
const encrypted = await this.encryptionService.encrypt(content, recipient);
const event = await this.eventService.createDirectMessage(encrypted);
// Publish via protocol layer
await this.nostrService.publishEvent(event);
// Update cache
await this.cacheService.cacheMessage(event);
return event;
}
// 3. CORE SERVICES (Core Layer)
// EncryptionService.ts
async encrypt(plaintext: string, pubkey: string) {
// NIP-04 encryption logic
return await nip04.encrypt(this.privateKey, pubkey, plaintext);
}
// 4. PROTOCOL LAYER (Data Layer)
// GenericNostrService.ts
async publishEvent(event: NostrEvent) {
// Send to all connected relays
for (const relay of this.relays) {
await relay.publish(event);
}
}- 100% FREE - No subscriptions, no transaction fees, no ads
- Focus: Reach 100,000 active users (critical mass for network effects)
- Free Tier: All core features, 5 shop listings, 10 contributions
- Creator Tier: 10,000 sats/month (~$10) - Unlimited listings, analytics, featured placement
- Pro Tier: 50,000 sats/month (~$50) - Verified badge, custom domain, API access
- Featured listings, promoted content, event promotion
- Partnership revenue (coworking spaces, travel services, nomad visas)
- Enterprise white-label deployments
Path to $10M ARR: 100K users Γ 5% paid Γ $100/year avg = $500K ARR (Year 1) β $10M+ (Year 3)
- Investor Pitch Deck - Comprehensive 60-slide deck (market, product, business model, financials)
- Critical Guidelines - Development principles and SOA architecture rules
- NIP Implementation Matrix - Nostr protocol implementation status
Try it now: nostr.co.in
- Sign in with browser extension (Alby, nos2x) OR generate new keys
- Complete your profile (add Lightning address for payments)
- Start exploring contributions or list your first product
Sign-up takes 30 seconds. No email. No KYC. Just keys.
Prerequisites
- Node.js 18+
- npm or yarn
Installation
# Clone the repository
git clone https://github.com/psam21/NostrForNomads.git
cd NostrForNomads
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your configuration
# Run development server
npm run devBuild for Production
npm run build
npm start# Development
npm run dev # Start development server
# Building
npm run build # Production build
npm start # Start production server
# Code Quality
npm run lint # Run ESLint
npm run lint:fix # Auto-fix linting issues
npm run lint:prod # Lint with production rules
npm run format:check # Check code formatting
npm run format # Format code with Prettier
npm run typecheck # TypeScript type checking
# Utilities
npm run metrics:export # Export application metrics
npm run bench:signing # Benchmark signing performance
npm run enrich:nostr # Enrich Nostr handles- NIP-01: Basic protocol - events, signatures, relays β
- NIP-05: DNS-based verification -
alice@example.comidentifiers β - NIP-07: Browser extension signing -
window.nostrinterface (Alby, nos2x, Nostore) β - NIP-09: Event deletion - Kind 5 deletion events (used in My Contributions, My Shop, My Work) β
- NIP-17: Private Direct Messages - gift-wrapped encrypted messages (double encryption) β
- NIP-19: Bech32-encoded entities - npub, nsec, note, nprofile, nevent β
- NIP-23: Long-form content - articles, blogs (used in Contribute/Explore/Shop/Work) β
- NIP-33: Parameterized replaceable events - d-tag based content (used in Contribute/Explore/Shop/Work) β
- NIP-44: Encrypted payloads (v2) - ChaCha20-Poly1305 + HKDF-SHA256 for NIP-17 encryption β
- NIP-78: Application-specific data - Kind 30078 for cart/settings storage (service layer ready) β
- NIP-94: File metadata - imeta tags for media attachments β
- NIP-96: Blossom protocol - decentralized media hosting with SHA-256 verification β
- NIP-11: Relay capability discovery
- NIP-46: Remote signer protocol - Nostr Connect for mobile apps
- NIP-57: Lightning Zaps - tip creators
- NIP-65: Relay list metadata - user's preferred relay list
The application connects to multiple Nostr relays for redundancy:
- Default relays configured in
/src/config/relays.ts - WebSocket-based real-time communication
- Automatic reconnection and failover
- Multi-relay publishing for redundancy
- Private keys: Stored securely in browser (encrypted localStorage via KVService)
- Public keys: User identity (npub format)
- Signing: All events cryptographically signed (ed25519)
- Backup: Exportable key backup files (keyExport utility)
- Browser extension: NIP-07 compatible (Alby, nos2x, etc.)
- Service layer methods (business logic in isolation)
- Utility functions (key management, validation)
- Core services (caching, encryption)
- Service composition (business β core β protocol)
- Nostr event flow
- Authentication workflows
- User journeys (signup, messaging, profile updates)
- Cross-feature workflows
- Client-side encryption: Messages encrypted before transmission (NIP-04)
- No password storage: Nostr uses cryptographic key pairs (ed25519)
- Relay privacy: Users can choose their own relays
- Censorship resistance: Decentralized architecture with multi-relay publishing
- Key backup: User-controlled key management with export functionality
- Encrypted caching: Sensitive data encrypted in browser storage (CacheEncryptionService)
- Event validation: All events validated before signing (GenericEventService)
- Content sanitization: User input sanitized to prevent XSS attacks
# Nostr Relays (comma-separated WebSocket URLs)
NEXT_PUBLIC_DEFAULT_RELAYS=wss://relay1.example.com,wss://relay2.example.com
# Blossom Media Server
NEXT_PUBLIC_BLOSSOM_SERVER=https://blossom.example.com
# Analytics (optional)
NEXT_PUBLIC_ENABLE_ANALYTICS=true
# Redis/Upstash (for server-side caching, optional)
UPSTASH_REDIS_REST_URL=https://your-redis-url
UPSTASH_REDIS_REST_TOKEN=your-redis-token
# Environment
APP_ENV=production # or developmentThis isn't just a startup. This is a movement.
For 15 years, we've been told:
- "Work from anywhere!"
- "Travel the world!"
- "Live on your terms!"
The Reality:
- Platforms extract 15-30% of your income
- Algorithms control your reach
- Accounts vanish overnight
- Reputation trapped on each platform
- Data sold to advertisers
Nostr for Nomads is what digital nomadism should have been from the start:
| Traditional Platforms | Nostr for Nomads |
|---|---|
| Username = platform property | Cryptographic keys = yours forever |
| Followers locked to platform | Portable across any Nostr app |
| Can be deleted/censored | Signed by your key = permanent |
| Reputation starts at zero | Travels with your public key |
| 10-30% fees | 0% today, <5% future |
| Data sold | Encrypted, you control |
We're not just replacing platforms. We're making them obsolete.
Read docs/nc-critical-guidelines.md before contributing.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow SOA architecture principles (mandatory - see critical-guidelines.md)
- Write and test your changes
- Run
npm run buildto ensure no errors - Commit with concise messages (
git commit -m 'feat: Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- SOA Compliance: Follow service-oriented architecture (non-negotiable)
- TypeScript: All code must be properly typed
- Testing: Test features end-to-end before marking complete
- Documentation: Add JSDoc comments for complex components
- Linting: Code must pass ESLint checks (
npm run lint) - No Dead Code: Remove unused imports, functions, and files
- Developers: Check GitHub issues tagged
good-first-issue - Designers: UI/UX improvements always welcome
- Nomads: User feedback, bug reports, feature requests
- Writers: Documentation, guides, tutorials
- Investors: See docs/Nostr-for-Nomads-Deck.md
Current Phase: Production MVP with active users
Metrics (as of November 2025)
- β 12 NIPs implemented (01, 05, 07, 09, 17, 19, 23, 33, 44, 52, 78, 94, 96)
- β 10 Event kinds (Kinds 0, 1, 5, 14, 1059, 24242, 30023, 30078, 31923, 31925)
- β 14 Features in production (Sign Up, Sign In, Profile, Messages, Explore, My Contributions, My Shop, Shop, My Work, Work, My Meet, Meet, User Event Log, Payments UI)
- β 8 high-reliability global relays integrated
- β Service-Oriented Architecture (4-layer design with 36 services)
- β Production deployment on Vercel
- β 99.9% uptime target
- β Full CRUD with generic edit architecture for Shop, Work, Meet, and Contributions
- β Standardized statistics dashboards across all My pages (reusable StatCard/StatBreakdown components)
- β Selective attachment operations for multi-image features (Contributions/Shop/Work)
- β Single-image design for Meet events (intentional, industry-standard pattern)
- π Early adopter user base growing
- π Community feedback driving roadmap
Next Milestones
- Q1 2026: Freemium launch (Creator/Pro tiers)
- Q2 2026: Mobile apps (iOS + Android)
- Q3 2026: Work marketplace with Lightning escrow
- Q4 2026: 100,000 active users
Seeking $500K seed round to:
- Hire core team (3 engineers, 1 designer, 1 growth lead)
- Scale to 100,000 users
- Achieve product-market fit in 12-18 months
- Position for Series A
Investment highlights:
- Working product (not vaporware)
- Massive TAM ($1.2T nomad economy)
- Protocol moat (network effects = defensibility)
- Path to $10M ARR in 3 years
- 100-400x return potential
Contact: contact@nostr.co.in | Read full pitch deck
This project is open source and available under the MIT License.
Nostr Protocol
Bitcoin & Lightning
Tech Stack
Community
Built with β‘ by nomads, for nomads
35 million digital nomads are waiting for this. Let's build it.