# zapwall4Science [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue.svg)](https://www.typescriptlang.org/) [![Next.js](https://img.shields.io/badge/Next.js-14-black.svg)](https://nextjs.org/) 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. **Repository**: [https://git.4nkweb.com/4nk/story-research-zapwall](https://git.4nkweb.com/4nk/story-research-zapwall) ## Table of Contents - [Features](#features) - [Getting Started](#getting-started) - [Configuration](#configuration) - [Lightning Wallet Setup](#lightning-wallet-setup) - [Project Structure](#project-structure) - [Contributing](#contributing) - [Documentation](#documentation) - [License](#license) ## 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 ## Configuration The application stores all configuration in IndexedDB (browser storage) with hardcoded defaults. No environment variables are required. ### Default Configuration - **Nostr Relay**: `wss://relay.damus.io` (default) - **NIP-95 Upload API**: `https://nostr.build/api/v2/upload` (default) - **Platform Lightning Address**: Empty by default ### Customizing Configuration Configuration is stored in IndexedDB and can be customized through the application settings. The application supports: - Multiple Nostr relays (with priority ordering) - Multiple NIP-95 upload APIs (with priority ordering) - Platform Lightning address for commissions All configuration values are stored locally in the browser and persist across sessions. Default values are hardcoded in the application code. ## 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 ## Déploiement ### Documentation complète La documentation complète du déploiement est disponible dans le dossier `docs/` : - **[Documentation complète du déploiement](docs/deployment.md)** : Guide détaillé de déploiement, configuration et maintenance - **[Référence des scripts](docs/scripts-reference.md)** : Description de tous les scripts disponibles - **[Guide de référence rapide](docs/quick-reference.md)** : Commandes essentielles ### Déploiement rapide Le site est déployé sur `zapwall.fr` (serveur : `92.243.27.35`). **Mise à jour du site** : ```bash # Méthode recommandée : Script automatique ./update-remote-git.sh ``` **Vérification du statut** : ```bash ssh debian@92.243.27.35 'sudo systemctl status zapwall' ``` ### Informations de déploiement - **Répertoire** : `/var/www/zapwall.fr` - **Port application** : `3001` - **Service systemd** : `zapwall.service` - **Nginx** : Conteneur Docker `lecoffre_nginx_test` - **HTTPS** : Configuré avec redirection automatique HTTP → HTTPS Pour plus de détails, consultez la [documentation complète](docs/deployment.md). ## Contributing We welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md) to get started. ### How to Contribute 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Make your changes following our [coding guidelines](CONTRIBUTING.md#coding-guidelines) 4. Run lint and type-check (`npm run lint && npm run type-check`) 5. Commit your changes (`git commit -m 'Add amazing feature'`) 6. Push to the branch (`git push origin feature/amazing-feature`) 7. Open a Pull Request Please ensure your code follows our strict quality standards: - No fallbacks or silent failures - Full TypeScript typing (no `any`, no `ts-ignore`) - Proper error handling and logging - Accessibility compliance (ARIA, keyboard navigation, contrast) See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. ## Documentation - **[User Guide](docs/user-guide.md)**: Complete user documentation - **[Technical Documentation](docs/technical.md)**: Architecture and technical details - **[Deployment Guide](docs/deployment.md)**: Deployment and configuration - **[FAQ](docs/faq.md)**: Frequently asked questions - **[Publishing Guide](docs/publishing-guide.md)**: How to publish articles - **[Payment Guide](docs/payment-guide.md)**: Lightning payment setup ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.