mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-17 20:29:07 +02:00
Modifications: - docker-compose.yml: port mapping 2222:2222 et variable PORT=2222 - Dockerfile: EXPOSE 2222 et healthcheck sur port 2222 - server.js: port par défaut changé de 3000 à 2222 - .env.example: PORT=2222 - README.md: toutes les références au port 3000 remplacées par 2222 (installation, accès, configuration Nginx) L'application écoute maintenant sur le port 2222 au lieu de 3000.
188 lines
4.0 KiB
Markdown
188 lines
4.0 KiB
Markdown
# 📝 NoteFlow - Application de Notes et Todo List
|
|
|
|
Application web moderne de gestion de notes et de tâches, Dockerisée, avec authentification JWT, interface utilisateur fluide et animations CSS natives.
|
|
|
|
## ✨ Fonctionnalités
|
|
|
|
### 🔐 Authentification
|
|
- Connexion JWT sécurisée avec bcrypt
|
|
- Session de 24 heures
|
|
- Gestion des utilisateurs par les administrateurs
|
|
|
|
### 📝 Gestion des Notes
|
|
- Création, édition et suppression de notes
|
|
- Support des images (upload, preview, suppression)
|
|
- Todos intégrés dans les notes
|
|
- Recherche en temps réel par titre/contenu
|
|
- Interface masonry layout responsive
|
|
- Animations fluides sur les interactions
|
|
|
|
### ✅ Todos Globaux
|
|
- Sidebar permanente avec quick tasks
|
|
- Création, modification, suppression de todos
|
|
- Toggle completed/active
|
|
- Filtres : Toutes / Actives / Terminées
|
|
- Compteur de tâches restantes
|
|
|
|
### 👥 Administration
|
|
- Gestion des utilisateurs (création, modification, suppression)
|
|
- Attribution des droits administrateur
|
|
- Interface dédiée pour les admins
|
|
|
|
## 🛠️ Stack Technique
|
|
|
|
- **Backend** : Node.js 20 + Express
|
|
- **Base de données** : SQLite3
|
|
- **Authentification** : JWT + bcrypt
|
|
- **Frontend** : HTML5/CSS3/JavaScript vanilla
|
|
- **Sécurité** : Helmet.js, rate limiting, validation des entrées
|
|
- **Logging** : Winston
|
|
- **Upload** : Multer
|
|
- **Container** : Docker + Docker Compose
|
|
|
|
## 🚀 Installation et Démarrage
|
|
|
|
### Prérequis
|
|
- Docker et Docker Compose installés
|
|
- Réseau Docker `nginx_default` (ou adapter dans docker-compose.yml)
|
|
|
|
### Installation
|
|
|
|
1. **Cloner le repository**
|
|
```bash
|
|
git clone <repository-url>
|
|
cd noteflow
|
|
```
|
|
|
|
2. **Configurer les variables d'environnement**
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Éditer le fichier `.env` :
|
|
```env
|
|
PORT=2222
|
|
JWT_SECRET=<générer_une_clé_secrète_forte>
|
|
NODE_ENV=production
|
|
```
|
|
|
|
**Générer un JWT_SECRET fort** :
|
|
```bash
|
|
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
|
|
```
|
|
|
|
3. **Builder et démarrer l'application**
|
|
```bash
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
4. **Accéder à l'application**
|
|
```
|
|
http://localhost:2222
|
|
```
|
|
|
|
### Identifiants par défaut
|
|
```
|
|
Username: admin
|
|
Password: admin
|
|
```
|
|
|
|
**⚠️ IMPORTANT** : Changez immédiatement le mot de passe admin en production !
|
|
|
|
## 🐳 Commandes Docker
|
|
|
|
```bash
|
|
# Démarrer
|
|
docker-compose up -d
|
|
|
|
# Arrêter
|
|
docker-compose down
|
|
|
|
# Rebuild
|
|
docker-compose build
|
|
|
|
# Logs
|
|
docker-compose logs -f
|
|
|
|
# Backup base de données
|
|
docker cp notes-todo-app:/app/data/notes.db ./backup_$(date +%Y%m%d).db
|
|
|
|
# Restore
|
|
docker cp ./backup.db notes-todo-app:/app/data/notes.db
|
|
docker-compose restart
|
|
```
|
|
|
|
## ⚙️ Configuration Nginx
|
|
|
|
```nginx
|
|
location /notes {
|
|
proxy_pass http://notes-todo-app:2222;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection 'upgrade';
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
client_max_body_size 10M;
|
|
}
|
|
```
|
|
|
|
## 📡 API Endpoints
|
|
|
|
### Authentification
|
|
```
|
|
POST /api/auth/login
|
|
POST /api/auth/logout
|
|
GET /api/auth/me
|
|
```
|
|
|
|
### Utilisateurs (Admin)
|
|
```
|
|
GET /api/users
|
|
POST /api/users
|
|
PUT /api/users/:id
|
|
DELETE /api/users/:id
|
|
```
|
|
|
|
### Notes
|
|
```
|
|
GET /api/notes
|
|
POST /api/notes
|
|
GET /api/notes/:id
|
|
PUT /api/notes/:id
|
|
DELETE /api/notes/:id
|
|
POST /api/notes/:id/image
|
|
DELETE /api/notes/:id/image
|
|
GET /api/search?q=query
|
|
```
|
|
|
|
### Todos Notes
|
|
```
|
|
POST /api/notes/:id/todos
|
|
PUT /api/notes/todos/:todoId
|
|
DELETE /api/notes/todos/:todoId
|
|
```
|
|
|
|
### Todos Globaux
|
|
```
|
|
GET /api/todos
|
|
POST /api/todos
|
|
PUT /api/todos/:id
|
|
DELETE /api/todos/:id
|
|
```
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- Bcrypt 12 rounds
|
|
- JWT expiration 24h
|
|
- Helmet.js
|
|
- Rate limiting
|
|
- Input validation
|
|
- File type whitelist
|
|
- SQL prepared statements
|
|
|
|
## 📝 Licence
|
|
|
|
MIT
|