Blog d’entreprise bilingue (Français / Créole Haïtien) pour ODTHAN S.R.L., avec administration complète, SEO avancé, sécurité de base et design corporate (marine / or / blanc).
Construit avec Node.js + Express + EJS, sans base de données externe
requise (les contenus sont stockés dans des fichiers JSON dans /data,
facilement remplaçables par MySQL/PostgreSQL plus tard — voir plus bas).
git clone <votre-repo>
cd odthan-blog
npm install
cp .env.example .env
Ouvrez .env et remplissez au minimum :
SESSION_SECRET — une longue chaîne aléatoire uniqueADMIN_EMAIL / ADMIN_PASSWORD — vos identifiants admin (utilisés une
seule fois pour créer le compte)SITE_URL, WHATSAPP_NUMBER, CONTACT_EMAIL, CONTACT_PHONE, CONTACT_ADDRESSCréez ensuite le compte administrateur (le mot de passe est haché, jamais stocké en clair) :
npm run create-admin
Démarrez le site :
npm start
Le site est disponible sur http://localhost:3000, l’administration sur
http://localhost:3000/admin/login.
Le prompt d’origine contenait un identifiant et un mot de passe administrateur en clair. Ne les utilisez jamais tels quels et ne les committez jamais sur GitHub :
ADMIN_PASSWORD dans .env pour un mot de passe fort et unique
avant de lancer npm run create-admin..env est déjà exclu par .gitignore — vérifiez qu’il
n’apparaît jamais dans git status avant de pousser sur GitHub.GitHub héberge le code source, mais GitHub Pages ne peut pas exécuter Node.js (c’est un hébergement statique). Pour un site avec espace admin fonctionnel, deux étapes :
git init
git add .
git commit -m "Initial commit — ODTHAN blog"
git branch -M main
git remote add origin https://github.com/<votre-compte>/odthan-blog.git
git push -u origin main
Choisissez un hébergeur Node.js et connectez-le à votre dépôt GitHub
(déploiement automatique à chaque push) :
npm install → Start command npm startpm2 :
npm install -g pm2
pm2 start server.js --name odthan-blog
pm2 save && pm2 startup
Dans tous les cas, définissez les variables d’environnement du .env
directement dans les paramètres de l’hébergeur (jamais dans le code).
Pointez ensuite votre nom de domaine (odthan.com) vers cet hébergement
et activez le certificat SSL (automatique sur Render/Railway ; via
Let’s Encrypt + Certbot sur un VPS).
odthan-blog/
├── server.js # Point d'entrée Express
├── routes/ # Routes (site, blog, contact, admin)
├── views/ # Templates EJS (public + admin)
├── public/ # CSS, JS, images, favicons
├── config/
│ ├── locales/fr.json # Traductions français
│ ├── locales/ht.json # Traductions créole
│ └── store.js # Accès aux données JSON
├── data/ # "Base de données" JSON (articles, catégories, contacts)
├── middleware/ # i18n, auth admin, CSRF
└── scripts/create-admin.js # Création sécurisée du compte admin
Rendez-vous sur /admin/login avec les identifiants créés à l’étape 1.
Le contenu des articles accepte du HTML simple (<p>, <h2>, <ul>,
<img>…).
httpOnly, secure en production)Non inclus par défaut, à ajouter avant une mise en production
sérieuse : authentification à deux facteurs (2FA) réelle (ex.
speakeasy + envoi de code par email/SMS), sauvegardes automatiques
programmées, et migration vers une vraie base de données
(MySQL/PostgreSQL) si le volume de contenu grandit — la couche
config/store.js est conçue pour être remplacée facilement sans toucher
aux routes ni aux vues.
sitemap.xml et robots.txt générés dynamiquementOrganization sur tout le site,
Article sur chaque article de blog)hreflang pour le bilinguisme FR / HT/blog/mon-article)Pensez à soumettre https://votredomaine.com/sitemap.xml à Google
Search Console une fois le site en ligne.
public/images/logo-mark.svg et
public/favicon.svg) si vous en faites créer une version finale par
un designerviews/contact.ejs)