PlebDevs ⚡️
A one-of-a-kind developer education, content, and community platform built on Nostr and fully Lightning integrated.
https://plebdevs.com
Overview
PlebDevs is an open-source platform that combines educational content, community interaction, and Bitcoin/Lightning integration. The platform publishes content to Nostr and actively pulls from Nostr relays, creating a distributed, interoperable trail of Documents, Videos, and Courses.
Technical Implementation
Nostr Integration
- Content Distribution: Implements NIP-23 for rich multimedia content embedding
- Content Encryption: Paid content bodies are encrypted while maintaining metadata visibility
- Authentication:
- Multi-method signup (NIP-07, Email, GitHub, Anonymous)
- Ephemeral keypair generation for non-Nostr users
- Account linking and recovery system
- Lists & Courses: NIP-51 implementation for structured content organization
- Monetization: NIP-99 for digital content sales
- Automated Subscriptions: NIP-47 (Nostr Wallet Connect) for recurring payments
- Badge System: NIP-58 for automated achievement rewards
- Identity: NIP-05 for custom platform identities
- Additional NIPs: Implements NIP-01, NIP-19, NIP-39, NIP-57
Platform Architecture
- Content Management:
- Draft system with preview capabilities
- Parameterized replaceable events
- Multi-format support (Markdown, Video, Mixed Media)
- Course builder with drag-and-drop ordering
- User Management:
- Profile synchronization with Nostr
- Activity tracking and progress monitoring
- Custom relay configuration
- Wallet connection management
- Admin Features:
- Protected admin routes based on pubkey configuration
- Content creation and management interface
- Draft/publish workflow
- Course assembly tools
Key Features
- ☁️ Content Distribution: All content is published to Nostr and pulled from Nostr relays
- 📝 Content Types:
- Documents: Markdown documents posted as NIP-23 long-form events
- Video: Formatted markdown documents with rich media support, including embedded videos, also posted as NIP-23 events
- Courses: Nostr lists (NIP-51) that combines multiple documents and videos into a structured learning path.
- ⚡️ Monetization:
- Free content available to all (viewable on any Nostr client) and zappable
- Premium content purchasable with Lightning or through a PlebDevs subscription
- Subscription options:
- Pay-as-you-go: 50,000 sats - One-time payment for one month of access
- Recurring: 50,000 sats/month - Automatic renewal via Nostr Wallet Connect
- ⭐️ Subscription Benefits:
- Full access to all paid content
- 1:1 calendar for tutoring/help
- Custom PlebDevs.com Lightning Address
- Custom PlebDevs.com Nostr NIP-05 identity
- 👥 Community Features:
- Nostr-based chat (Read/Write)
- Discord integration (Read Only)
- StackerNews ~devs territory integration (Read Only)
Tech Stack
Frontend ⚛️
Backend 🔧
Infrastructure ⚙️
Bitcoin & Nostr Integration 🔌
Deployment Options
Self-Hosting Requirements
- Docker environment
- PostgreSQL database
- Redis instance
- Lightning node (optional)
- Nostr relay (optional for improved performance)
Configuration (still in development)
- Customizable platform branding
- Configurable subscription tiers
- Custom relay preferences
- Admin pubkey management
- Content pricing controls
Running locally
- Clone the repository
- Install dependencies
- Create a
.env
file based on the.env.example
file - Open Docker Desktop
- Run
docker compose up --build
- In schema.prisma, ensure you have the local datasource uncommented and the production datasource commented out.
- Exec into the container and run
npx prisma migrate dev
- Restart the docker compose
- Rerun
docker compose up --build
Now the database is running and the migrations are applied. You can now run locally.
Linting and Code Formatting
We use ESLint with Next.js configuration and Prettier for code formatting:
- First-time setup:
npm run setup-lint
- Check code:
npm run lint
- Fix issues:
npm run lint:fix
Before submitting a PR, please run npm run lint:fix
to ensure your code follows our standards.
Contributing
Contributions are welcome! Whether you're fixing bugs, improving documentation, or proposing new features, please feel free to open an issue or submit a PR.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Connect with Us 🤝
Support the Project ⚡️
Lightning Address: plebdevs@plebdevs.com