Une plateforme SaaS complète no-code qui permet aux utilisateurs non-techniques de créer, personnaliser, héberger et gérer des sites web professionnels avec facilité.
- 🎯 Présentation
- ✨ Fonctionnalités
- 🛠 Stack technique
- 📁 Architecture du projet
- 🚀 Installation et démarrage
- 🔧 Configuration
- 📡 API Reference
- 🎨 Éditeur visuel
- 👥 Gestion des rôles
- 🌐 Déploiement
- 📊 Monitoring API
- 🗄 Base de données
- 🤝 Contribution
WebsiteMaker est une plateforme complète de création de sites web sans code qui se compose de deux parties principales :
- Frontend React : Interface utilisateur moderne avec éditeur drag-and-drop
- Backend Next.js : API REST complète avec authentification et gestion de données
- 📝 Blog : Sites de contenu avec articles et catégories
- 💼 Portfolio : Sites de présentation professionnelle
- 🛒 E-commerce : Boutiques en ligne complètes
- 🏢 Vitrine : Sites d'entreprise et services
- 🎓 Éducation : Plateformes de cours en ligne
- 🎪 Évènements : Sites d'événements et réservations
- Éditeur Drag-and-Drop : Interface intuitive pour construire sans code
- Prévisualisation temps réel : Voir les changements instantanément
- Bibliothèque de composants : Headers, Heroes, Textes, Images, Boutons, Formulaires
- Design responsive : Optimisé mobile, tablette, desktop
- Système de templates : Templates pré-construits optimisés
- Contrôle d'accès basé sur les rôles : Owner, Editor, Collaborator, Viewer
- Collaboration temps réel : Travail d'équipe simultané
- Gestion des membres : Invitation et gestion des équipes
- Contrôle de version : Suivi des modifications
- Restauration : Retour aux versions précédentes
- Historique détaillé : Journal complet des actions
- Déploiement automatisé : Intégration Vercel en un clic
- Gestion des domaines : Configuration de domaines personnalisés
- Certificats SSL : HTTPS automatique
- Optimisations : Performance intégrée
- Framework : React 19 + Vite 7
- Langage : TypeScript
- Styling : TailwindCSS
- Build : Vite avec HMR (Hot Module Replacement)
- Linting : ESLint avec règles React
- Framework : Next.js 15 (App Router)
- Langage : TypeScript
- ORM : Prisma 6
- Base de données : PostgreSQL
- Authentification : NextAuth.js + JWT custom
- API : REST endpoints avec App Router
- Package Manager : pnpm
- Déploiement : Vercel API
- Monitoring : API logging avec BroadcastChannel
- Environnements : Staging et Production
websitemaker/
├── websitemakerfrontend/ # Application React frontend
│ ├── src/
│ │ ├── components/ # Composants React réutilisables
│ │ ├── pages/ # Pages de l'application
│ │ ├── hooks/ # Hooks React personnalisés
│ │ ├── utils/ # Utilitaires et helpers
│ │ └── styles/ # Styles CSS/SCSS
│ ├── public/ # Assets statiques
│ ├── package.json # Dépendances frontend
│ └── vite.config.js # Configuration Vite
│
├── websitemakerbackend/ # API Backend Next.js
│ ├── src/
│ │ ├── app/
│ │ │ ├── api/ # Endpoints REST (App Router)
│ │ │ │ ├── auth/ # Authentification
│ │ │ │ ├── projects/ # Gestion des projets
│ │ │ │ ├── pages/ # Gestion des pages
│ │ │ │ ├── components/ # Gestion des composants
│ │ │ │ ├── collaborators/ # Gestion des équipes
│ │ │ │ ├── deploy/ # Déploiement
│ │ │ │ ├── history/ # Historique
│ │ │ │ ├── blog/ # Fonctionnalités blog
│ │ │ │ ├── ecommerce/ # Fonctionnalités e-commerce
│ │ │ │ ├── education/ # Fonctionnalités éducation
│ │ │ │ ├── events/ # Fonctionnalités événements
│ │ │ │ ├── vitrine/ # Fonctionnalités vitrine
│ │ │ │ └── portfolio/ # Fonctionnalités portfolio
│ │ │ └── admin/ # Page d'administration
│ │ ├── components/ # Composants Next.js
│ │ ├── hooks/ # Hooks personnalisés
│ │ ├── lib/ # Bibliothèques et utilitaires
│ │ │ ├── api.ts # Client API avec logging
│ │ │ ├── auth.ts # Gestion authentification
│ │ │ ├── prisma.ts # Client base de données
│ │ │ ├── permissions.ts # Contrôle d'accès
│ │ │ ├── templates.ts # Système de templates
│ │ │ └── project-generator.ts # Génération de projets
│ │ └── types/ # Définitions TypeScript
│ ├── prisma/
│ │ ├── schema.prisma # Schéma de base de données
│ │ └── migrations/ # Migrations
│ └── package.json # Dépendances backend
│
└── README.md # Ce fichier
- Node.js 18+
- PostgreSQL
- pnpm (recommandé)
- Compte Vercel (pour les déploiements)
git clone <repository-url>
cd websitemakercd websitemakerbackend
pnpm installcd ../websitemakerfrontend
pnpm installcd ../websitemakerbackend
pnpm prisma generate
pnpm prisma db push
# Optionnel : pnpm prisma studiocd websitemakerbackend
pnpm dev
# Serveur sur http://localhost:3000cd websitemakerfrontend
pnpm dev
# Serveur sur http://localhost:5173Créer .env.local dans websitemakerbackend/ :
# Base de données
DATABASE_URL="postgresql://username:password@localhost:5432/websitemaker"
# NextAuth.js
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key-here"
# JWT pour auth custom
JWT_SECRET="your-jwt-secret-here"
# OAuth Google
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
# OAuth GitHub
GITHUB_CLIENT_ID="your-github-client-id"
GITHUB_CLIENT_SECRET="your-github-client-secret"
# Vercel API
VERCEL_TOKEN="your-vercel-token"Le frontend se connecte automatiquement au backend sur http://localhost:3000.
POST /api/auth/login— Connexion email/mot de passe (JWT)POST /api/auth/signup— Inscription utilisateurPOST /api/auth/signout— Déconnexion[...nextauth]— Handler NextAuth (OAuth)
GET /api/projects— Liste des projets accessiblesPOST /api/projects— Création d'un projetGET /api/projects/[id]— Détails d'un projetPUT /api/projects/[id]— Mise à jour projetDELETE /api/projects/[id]— Suppression projetGET /api/projects/[id]/members— Liste des membresPOST /api/projects/[id]/members— Inviter un membreGET /api/projects/[id]/pages— Liste des pagesGET /api/projects/[id]/components— Liste des composantsGET /api/projects/[id]/history— Historique du projet
GET /api/pages/[projectId]— Pages d'un projetPOST /api/pages/create— Créer une pagePUT /api/page/update— Mettre à jour une pageDELETE /api/page/delete— Supprimer une page
POST /api/element/create— Créer un composantPUT /api/element/update— Mettre à jour un composantDELETE /api/element/delete— Supprimer un composant
GET /api/collaborators/list— Liste des membresPOST /api/collaborators/add— Ajouter un collaborateurDELETE /api/collaborators/remove— Retirer un collaborateur
POST /api/projects/[id]/deploy— Démarrer un déploiementGET /api/projects/[id]/deploy— Statut des déploiements
- Blog :
/api/blog/*— Posts, catégories, commentaires - E-commerce :
/api/ecommerce/*— Produits, commandes - Éducation :
/api/education/*— Cours, leçons - Événements :
/api/events/*— Événements, inscriptions - Vitrine :
/api/vitrine/*— Services, équipe - Portfolio :
/api/portfolio/*— Projets, compétences
- Interface Drag-and-Drop : Placement intuitif des composants
- Prévisualisation temps réel : Changements instantanés
- Bibliothèque de composants : Headers, Heroes, Textes, Images, Boutons, Formulaires
- Personnalisation de style : Couleurs, polices, espacement, layouts
- Design responsive : Prévisualisations mobile, tablette, desktop
- Réorganisation : Ajustements faciles de layout
- Layout : Container, Grid, Flex
- Texte : Titre, Paragraphe, Liste
- Média : Image, Vidéo, Galerie
- Interaction : Bouton, Lien, Formulaire
- Navigation : Menu, Breadcrumb, Pagination
- Contenu : Card, Modal, Accordion
| Rôle | Permissions |
|---|---|
| Owner | Contrôle total du projet, gestion d'équipe, déploiement |
| Editor | Édition de contenu, gestion des pages, déploiement staging |
| Collaborator | Édition limitée, accès pages spécifiques, commentaires |
| Viewer | Accès lecture seule, visualisation des commentaires |
- Contrôle granulaire par page et composant
- Workflow d'approbation pour les modifications
- Historique des actions par utilisateur
- Notifications des changements d'équipe
- API Vercel : Déploiements automatisés
- Gestion d'environnements : Staging et production
- Domaines personnalisés : Configuration automatique
- Certificats SSL : HTTPS automatique
- Optimisations : Performance intégrée
- Validation du projet
- Génération du code statique
- Upload vers Vercel
- Configuration DNS
- Activation SSL
- Notification de succès
Une page d'admin complète est disponible sur /admin qui offre :
- Monitoring temps réel : Visualisation des appels API en direct
- Interface style Insomnia : Inspection détaillée des requêtes/réponses
- Filtrage avancé : Par méthode, endpoint, statut
- Export JSON : Copie des données de requête/réponse
- Historique : Conservation des 300 derniers appels
- Métriques de performance : Temps de réponse, taux d'erreur
- Logs détaillés : Headers, payload, réponses
- Alertes : Notifications d'erreurs critiques
- Analytics : Statistiques d'utilisation API
- User : Gestion des utilisateurs et authentification
- Project : Projets avec configurations spécifiques par type
- ProjectMember : Collaboration d'équipe avec hiérarchie de rôles
- Page : Pages individuelles avec contenu
- Component : Composants UI réutilisables avec props et styling
- History : Contrôle de version et suivi des changements
- Deployment : Historique et statut des déploiements
- Blog : Posts, Categories, Comments, Tags
- Portfolio : Projects, Skills, Testimonials
- E-commerce : Products, Orders, Categories, Customers
- Vitrine : Services, TeamMembers, Testimonials
- Education : Courses, Lessons, Students, Instructors
- Events : Events, Registrations, Speakers, Venues
# Développement
pnpm dev # Serveur de développement
pnpm build # Build de production
pnpm start # Serveur de production
pnpm lint # ESLint
# Base de données
pnpm prisma generate # Générer le client Prisma
pnpm prisma db push # Pousser le schéma vers la DB
pnpm prisma migrate dev # Créer et exécuter les migrations
pnpm prisma studio # Ouvrir Prisma Studio# Développement
pnpm dev # Serveur de développement Vite
pnpm build # Build de production
pnpm preview # Prévisualiser le build
pnpm lint # ESLint- Connecter le repository à Vercel
- Configurer les variables d'environnement
- Définir la commande de build :
pnpm build - Définir le répertoire de sortie :
.next - Déploiement automatique sur push
Assurez-vous que toutes les variables requises sont configurées :
- Connexion base de données
- Secrets d'authentification
- Credentials OAuth
- Tokens API Vercel
- Fork le repository
- Créer une branche feature :
git checkout -b feature/amazing-feature - Commit les changements :
git commit -m 'Add amazing feature' - Push vers la branche :
git push origin feature/amazing-feature - Ouvrir une Pull Request
- Utiliser TypeScript pour tous les nouveaux fichiers
- Suivre les conventions ESLint
- Ajouter des tests pour les nouvelles fonctionnalités
- Documenter les nouvelles API endpoints
- Respecter la structure de dossiers existante
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
- 📧 Email : support@websitemaker.com
- 📖 Documentation : docs.websitemaker.com
- 🐛 Issues : GitHub Issues
- 💬 Discord : Communauté WebsiteMaker
- Endpoints API : 45+ endpoints implémentés
- Types de projets : 6 types supportés
- Composants UI : 20+ composants drag-and-drop
- Templates : 15+ templates pré-construits
- Langues : Support multilingue (FR/EN)
WebsiteMaker - Donner à chacun le pouvoir de créer de beaux sites web sans code ! 🚀
Développé avec ❤️ par l'équipe WebsiteMaker