# zapwall4Science Plateforme de publication d'articles scientifiques et de science-fiction avec système de sponsoring, commissions et rémunération des avis. Les lecteurs peuvent lire les aperçus gratuitement et débloquer le contenu complet en payant avec Lightning Network. ## Features - **Nostr Authentication**: Authenticate using Alby browser extension (NIP-07) - **Free Previews**: Public notes showing article previews - **Paid Content**: Private notes containing full content, unlocked after 800 sats zap - **Lightning Payments**: Integrated Alby/WebLN for Lightning payments (works with Alby and other Lightning wallets) - **Payment Modal**: User-friendly payment interface with invoice display - **TypeScript**: Fully typed codebase ## Getting Started 1. Install dependencies: ```bash npm install ``` 2. Run the development server: ```bash npm run dev ``` 3. Open [http://localhost:3000](http://localhost:3000) in your browser ## Environment Variables - `NEXT_PUBLIC_NOSTR_RELAY_URL`: Nostr relay URL (default: wss://relay.damus.io) - `NEXT_PUBLIC_NIP95_UPLOAD_URL`: NIP-95 media upload endpoint URL (required for image/video uploads) ### NIP-95 Upload Service The application requires a NIP-95 compatible upload service for media uploads (images and videos). You can use services like: - [nostr.build](https://nostr.build/) - Public NIP-95 service - [void.cat](https://void.cat/) - Another public NIP-95 service - Or host your own NIP-95 compatible service Example `.env.local`: ``` NEXT_PUBLIC_NOSTR_RELAY_URL=wss://relay.damus.io NEXT_PUBLIC_NIP95_UPLOAD_URL=https://nostr.build/api/v2/upload ``` ## Lightning Wallet Setup This project uses Alby browser extension for both Nostr authentication and Lightning payments: - **Alby**: Install the [Alby browser extension](https://getalby.com/) - Alby provides both Nostr authentication (NIP-07) and Lightning payments (WebLN) Users need to have Alby installed to authenticate and make payments. The application will prompt them to connect when needed. ## Project Structure - `/pages`: Next.js pages - `/components`: React components - `/lib`: Utilities and Nostr helpers - `/types`: TypeScript type definitions - `/hooks`: Custom React hooks