# YakBak - Voice Message Social Platform
YakBak Logo
YakBak is a modern social platform built on the Nostr protocol that allows users to share and interact with voice messages. Built with React, TypeScript, and Nostr, it provides a seamless experience for voice-based social interactions. ## Features - 🎤 Voice message recording and playback - 💬 Threaded voice message conversations - ⚡ Lightning Network zaps for voice messages - ❤️ Reactions and engagement tracking - 🔗 Nostr protocol integration - 🎨 Modern UI with shadcn/ui components - 🌐 Real-time updates and interactions ## Tech Stack - **React 18.x**: For building the user interface - **TypeScript**: For type-safe development - **TailwindCSS 3.x**: For styling - **Vite**: For fast development and building - **shadcn/ui**: For accessible UI components - **Nostrify**: For Nostr protocol integration - **React Router**: For client-side routing - **TanStack Query**: For data fetching and caching - **Alby SDK**: For Lightning Network integration ## Getting Started ### Prerequisites - Node.js 18.x or later - npm or yarn - A Nostr wallet (like Alby) for authentication and zaps ### Installation 1. Clone the repository: ```bash git clone https://github.com/derekross/yakbak.git cd yakbak ``` 2. Install dependencies: ```bash npm install ``` 3. Start the development server: ```bash npm run dev ``` 4. Build for production: ```bash npm run build ``` ## Project Structure ``` src/ ├── components/ # React components │ ├── ui/ # shadcn/ui components │ └── ... # Custom components ├── hooks/ # Custom React hooks ├── lib/ # Utility functions ├── pages/ # Page components └── public/ # Static assets ``` ## Key Features ### Voice Messages - Record voice messages directly in the browser - Maximum recording time of 60 seconds - Automatic upload to Blossom servers - Threaded conversations with voice replies ### Nostr Integration - Seamless authentication with Nostr - Real-time event streaming - Profile metadata support - Threaded conversations ### Lightning Network Integration - Send zaps to voice messages - Customizable zap amounts - Real-time zap tracking - Nostr Wallet Connect ### UI Components The project uses shadcn/ui components for a consistent and accessible user interface. Available components include: - Accordion - Alert - Avatar - Button - Card - Dialog - Dropdown Menu - Form - Input - Toast - And many more... ## Development ### Testing Run the test suite: ```bash npm run ci ``` This will: - Type check the code - Build the project - Run any tests ### Code Style The project follows TypeScript best practices and uses ESLint for code quality. Run the linter: ```bash npm run lint ``` ## Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## License This project is licensed under the MIT License - see the LICENSE file for details. ## Acknowledgments - [Nostr Protocol](https://github.com/nostr-protocol/nostr) - [shadcn/ui](https://ui.shadcn.com/) - [Alby](https://getalby.com/)