A decentralized, privacy-focused chat application built on the Nostr protocol. Experience truly secure messaging with end-to-end encryption, no data collection, and complete user sovereignty over communications.
- 🌐 Decentralized - No central servers, operates on the Nostr network
- 🔒 Real End-to-End Encryption - Messages encrypted on your device using NIP-04 and NIP-17 protocols
- 👤 Anonymous - No registration required, you control your identity
- 🔓 Permissionless - Open protocol, censorship-resistant
- 🚫 No Tracking - Zero data collection or analytics
- ⚡️ Lightning Powered - Built-in Lightning Network support
- 🧅 Tor Compatible - Enhanced privacy protection
- 📱 Cross-Platform - iOS, Android, and Web support
- Expo - React Native framework for cross-platform development
- React Native - Mobile app framework
- TypeScript - Type-safe JavaScript
- Expo Router - File-based routing system
- nostr-tools - Core Nostr protocol implementation
- NDK (Nostr Development Kit) - Advanced Nostr functionality
- NIP-04 - Direct message encryption
- NIP-17 - Private direct messages with enhanced privacy
- NIP-44 - Versioned encryption standard
- Zustand - Lightweight state management
- AsyncStorage - Persistent local storage
- React Context - Global state management for Nostr connections
- Custom Design System - Consistent theming and typography
- React Native Reanimated - Smooth animations
- Expo Symbols - Native system icons
- Custom Fonts - Inter and Poppins font families
- @noble/ciphers - Cryptographic primitives
- @noble/curves - Elliptic curve cryptography
- @noble/hashes - Hash functions
- @scure/bip32 - HD key derivation
- @scure/bip39 - Mnemonic seed phrases
- Node.js (v18 or later)
- pnpm (recommended) or npm
- Expo CLI (
npm install -g @expo/cli) - iOS Simulator (macOS) or Android Studio (for emulators)
-
Clone the repository
git clone <repository-url> cd nostr-chat-client
-
Install dependencies
pnpm install # or npm install -
Start the development server
pnpm start # or npm start
pnpm ios
# or
npm run iospnpm android
# or
npm run androidpnpm web
# or
npm run web- Install Expo Go on your mobile device
- Scan the QR code from the terminal after running
pnpm start
# Build for iOS
pnpm eas:build:ios
# Submit to App Store
pnpm eas:submit:ios
# Build and submit in one command
pnpm eas:release:ios# Prebuild Android
pnpm prebuild:android
# Build Android APK/AAB
pnpm eas:build:androidnostr-chat-client/
├── app/ # App screens (file-based routing)
│ ├── chat/ # Chat screens (NIP-04 & NIP-17)
│ ├── chatlist/ # Chat list and contacts
│ ├── login/ # Authentication screens
│ └── keys/ # Key management
├── components/ # Reusable UI components
│ ├── Chat/ # Chat-specific components
│ ├── Context/ # React Context providers
│ └── ui/ # Design system components
├── hooks/ # Custom React hooks
├── interal-lib/ # Core Nostr implementation
├── store/ # Zustand state stores
├── constants/ # App constants and configuration
└── utils/ # Utility functions
# Development
pnpm start # Start Expo dev server
pnpm ios # Run on iOS simulator
pnpm android # Run on Android emulator
pnpm web # Run in web browser
# Code Quality
pnpm lint # Run ESLint
pnpm doctor # Run Expo doctor
# Building
pnpm prebuild:ios # Prebuild for iOS
pnpm prebuild:android # Prebuild for Android
# Version Management
pnpm update:version # Update app version
pnpm update:build # Update build numberThis application prioritizes user privacy and security:
- Local Key Management - Private keys never leave your device
- End-to-End Encryption - All messages encrypted before transmission
- No Data Collection - Zero telemetry or analytics
- Decentralized Architecture - No central servers to compromise
- Open Source - Transparent, auditable code
- Nostr Tools Usage Guide - Comprehensive guide to the Nostr implementation
- Expo Documentation - Framework documentation
- Nostr Protocol - Learn about the Nostr protocol
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
This project is private and proprietary. All rights reserved.