150 lines
5.5 KiB
Markdown

# 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.