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.
- 🎤 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
- 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
- Node.js 18.x or later
- npm or yarn
- A Nostr wallet (like Alby) for authentication and zaps
- Clone the repository:
git clone https://github.com/derekross/yakbak.git
cd yakbak- Install dependencies:
npm install- Start the development server:
npm run dev- Build for production:
npm run buildsrc/
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ └── ... # Custom components
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── pages/ # Page components
└── public/ # Static assets
- Record voice messages directly in the browser
- Maximum recording time of 60 seconds
- Automatic upload to Blossom servers
- Threaded conversations with voice replies
- Seamless authentication with Nostr
- Real-time event streaming
- Profile metadata support
- Threaded conversations
- Send zaps to voice messages
- Customizable zap amounts
- Real-time zap tracking
- Nostr Wallet Connect
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...
Run the test suite:
npm run ciThis will:
- Type check the code
- Build the project
- Run any tests
The project follows TypeScript best practices and uses ESLint for code quality. Run the linter:
npm run lint- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
