Une application web moderne inspirée de Wiki.js pour la gestion collaborative de documentation avec support d'arborescence, gestion d'utilisateurs avancée et édition Markdown.
- Organisation hiérarchique : Structurez vos documents avec des dossiers et sous-dossiers
- Édition Markdown : Interface d'édition moderne avec prévisualisation en temps réel
- Support DOCX : Intégration OnlyOffice pour les documents Word (optionnel)
- Versioning : Historique des modifications avec possibilité de restauration
- Authentification : Connexion sécurisée par email/mot de passe
- Groupes d'utilisateurs : Organisation flexible des utilisateurs
- Permissions granulaires : Contrôle d'accès par document, dossier, utilisateur ou groupe
- Emails de bienvenue : SMTP configurable pour l'envoi automatique d'emails
- Recherche full-text : Recherche avancée dans le contenu et les métadonnées
- Navigation intuitive : Interface moderne et responsive
- Filtrage : Par tags, auteur, date, type de contenu
- Chiffrement JWT : Authentification sécurisée
- HTTPS : Communication chiffrée
- Validation des données : Protection contre les injections
- Rate limiting : Protection contre les attaques par déni de service
- Express.js : Framework web
- PostgreSQL : Base de données relationnelle
- Sequelize : ORM pour la gestion des données
- JWT : Authentification
- Nodemailer : Envoi d'emails
- Multer : Upload de fichiers
- Vue 3 : Framework JavaScript moderne
- Vuetify 3 : Composants Material Design
- Pinia : Gestion d'état
- Vue Router : Navigation
- Axios : Communication avec l'API
- Node.js (v16 ou supérieur)
- PostgreSQL (v12 ou supérieur)
- Git
# Cloner le repository
git clone https://github.com/Doud-FR/Wiki.git
cd Wiki
# Démarrer avec Docker Compose
docker-compose up -dL'application sera accessible sur :
- Production : http://localhost:3000 (application complète)
- Développement : http://localhost:8080 (frontend) + http://localhost:3000 (API)
- Cloner le repository
git clone https://github.com/Doud-FR/Wiki.git
cd Wiki- Installer les dépendances
npm run install:all- Configuration de la base de données
# Créer la base de données PostgreSQL
createdb wiki_db
# Configurer les variables d'environnement
cp backend/.env.example backend/.env- Configurer les variables d'environnement
Éditer
backend/.envavec vos paramètres :
DB_HOST=localhost
DB_PORT=5432
DB_NAME=wiki_db
DB_USER=your_db_user
DB_PASSWORD=your_db_password
JWT_SECRET=your-super-secret-jwt-key
SMTP_HOST=your-smtp-host
SMTP_USER=your-smtp-user
SMTP_PASS=your-smtp-password- Démarrer l'application
# Mode développement (backend + frontend)
npm run dev
# Ou séparément
npm run dev:backend # Port 3000
npm run dev:frontend # Port 8080Pour activer l'envoi d'emails de bienvenue, configurez les paramètres SMTP dans le fichier .env :
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
SMTP_FROM=noreply@yourwiki.com- En développement: Accéder à http://localhost:8080 (frontend) et http://localhost:3000 (API)
- En production: Accéder à http://localhost:3000 (application complète)
- Créer un compte administrateur
- Configurer les groupes d'utilisateurs
- Créer la structure de dossiers
- Inviter des utilisateurs
- Read : Lecture seule
- Write : Lecture + écriture
- Admin : Tous les droits + gestion des permissions
- Deny : Accès refusé (prioritaire)
📁 Racine
├── 📁 Documentation
│ ├── 📁 API
│ │ ├── 📄 Guide d'authentification
│ │ └── 📄 Référence des endpoints
│ └── 📁 Utilisateurs
│ └── 📄 Guide de démarrage
└── 📁 Projets
├── 📁 Projet A
└── 📁 Projet B
Wiki/
├── backend/ # API Node.js
│ ├── config/ # Configuration (DB, etc.)
│ ├── models/ # Modèles Sequelize
│ ├── routes/ # Routes API
│ ├── middleware/ # Middlewares (auth, permissions)
│ ├── services/ # Services métier
│ └── app.js # Point d'entrée
├── frontend/ # Application Vue.js
│ ├── src/
│ │ ├── components/ # Composants réutilisables
│ │ ├── views/ # Pages de l'application
│ │ ├── store/ # Gestion d'état Pinia
│ │ ├── services/ # Services API
│ │ └── router/ # Configuration des routes
│ └── public/
├── docker-compose.yml # Configuration Docker
└── package.json # Dépendances racine
npm run dev # Développement (backend + frontend)
npm run dev:backend # Backend seul
npm run dev:frontend # Frontend seul
npm run build # Build de production
npm run start # Démarrage production
npm run install:all # Installation toutes dépendances# Tests backend
cd backend && npm test
# Tests frontend
cd frontend && npm test# Build et déploiement
docker-compose up -d --build
# Vérifier le statut
docker-compose ps
# Voir les logs
docker-compose logs -fL'application sera accessible sur http://localhost:3000
# Build frontend
npm run build
# Démarrer en production
NODE_ENV=production npm startSi vous ne pouvez pas accéder à l'application sur votre IP réseau (ex: http://192.168.10.20:3000), vérifiez :
Note importante : L'application est configurée pour fonctionner en HTTP sur les réseaux locaux. Les en-têtes de sécurité (HSTS) qui forcent HTTPS ont été désactivés pour permettre l'accès via HTTP sur les adresses IP locales.
- Variables d'environnement - Créez un fichier
.envà la racine du projet :
# Server Configuration
NODE_ENV=production
PORT=3000
FRONTEND_URL=http://YOUR_IP:3000
# JWT Secret
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
# Database Configuration (using Docker Compose defaults)
DB_HOST=postgres
DB_PORT=5432
DB_NAME=wiki_db
DB_USER=wiki_user
DB_PASSWORD=wiki_password- Build du frontend - Assurez-vous que le frontend est compilé :
npm run build- Docker Compose - Redémarrez les services :
docker-compose down
docker-compose up -d --build- Vérification des logs :
docker-compose logs -f appNODE_ENV=production(et nonMODE_ENV) pour activer le mode productionFRONTEND_URLdoit correspondre à l'IP d'accès si différente de localhost- Les services Docker doivent être "healthy" avant le démarrage de l'app
- Port 3000 : Application web (production)
- Port 8080 : Frontend (développement uniquement)
- Port 5432 : PostgreSQL
- L'application écoute sur
0.0.0.0:3000en production pour accepter les connexions externes
L'application est configurée pour fonctionner en HTTP sur les réseaux locaux :
- HSTS désactivé : Pas de redirection forcée vers HTTPS
- Autres sécurités maintenues : XSS protection, content type options, frame options
- Pour un déploiement public, considérez l'ajout d'un reverse proxy (nginx) avec SSL
- Authentification et gestion des utilisateurs
- Système de permissions granulaires
- Gestion des groupes
- Structure de dossiers hiérarchique
- Édition Markdown basique
- Éditeur Markdown avancé avec prévisualisation
- Recherche full-text avancée
- Intégration OnlyOffice pour DOCX
- Versioning des documents
- API pour intégrations externes
- Thèmes personnalisables
- Notifications en temps réel
- Export en PDF
- Mode hors-ligne
Les contributions sont les bienvenues ! Merci de :
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commit vos changements
- Push vers la branche
- Ouvrir une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Pour toute question ou problème :
- Ouvrir une issue
- Consulter la documentation
- Contacter l'équipe de développement
Wiki App - Documentation collaborative moderne et intuitive 🚀