mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
Création complète de l'application NoteFlow - Notes & Todo List
Application web Dockerisée moderne avec: - Backend Node.js + Express + SQLite - Frontend HTML/CSS/JavaScript vanilla - Authentification JWT + bcrypt - Gestion des notes avec images et todos intégrés - Sidebar todos globaux avec filtres - Interface utilisateur fluide avec animations CSS - Administration des utilisateurs - Sécurité production-ready (Helmet, rate limiting, validation) - Configuration Docker complète - Documentation README détaillée Stack technique: - Node.js 20 Alpine - SQLite3 avec indexes optimisés - Multer pour upload d'images - Winston pour logging - Express-validator pour validation - Architecture modulaire (routes, middleware, config) Fonctionnalités: - Notes: CRUD complet, recherche, images, todos intégrés - Todos globaux: création, toggle, filtres, suppression - Auth: JWT 24h, bcrypt 12 rounds - Admin: gestion utilisateurs complète - UI: masonry grid, modal animations, responsive Configuration Docker: - Healthcheck intégré - Volumes persistants pour data et uploads - Network nginx_default pour reverse proxy - Variables d'environnement configurables Prêt pour déploiement avec: docker-compose up -d
This commit is contained in:
22 files changed
+3414
-589
No files matched your search
@@ -1 +1,187 @@
|
||||
# Welcome to your Dyad app
|
||||
# 📝 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=3000
|
||||
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:3000
|
||||
```
|
||||
|
||||
### 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:3000;
|
||||
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
|
||||
Reference in new issue
Block a user