Une plateforme moderne d'hébergement de sites statiques avec gestion de fichiers et déploiement en temps réel. Statix est L'Alternative open-source a Netlify.
- Gestion de sites statiques : Uploadez et gérez facilement vos sites HTML/CSS/JS
- Interface multilingue : Support du français et de l'anglais (changement de langue en temps réel)
- Dashboard intuitif : Visualisez vos sites, statistiques et fichiers en un coup d'œil
- Déploiement instantané : Vos sites sont accessibles immédiatement après upload
- Routage par sous-domaine : Accédez à vos sites via
slug.lvh.me:3000ou/sites/id/ - Fichier principal configurable : Choisissez quel fichier HTML servir par défaut
- Authentification sécurisée : Système de login/register avec JWT
- Gestion de fichiers : Upload, suppression et organisation de vos fichiers
- React 18 avec TypeScript
- Vite pour le build et le dev server
- Tailwind CSS pour le styling
- shadcn/ui pour les composants UI
- Zustand pour la gestion d'état
- i18next pour l'internationalisation
- Framer Motion pour les animations
- Express.js pour l'API REST
- SQLite pour la base de données (par défaut), avec support de MySQL/MariaDB et Supabase (Postgres)
- Multer pour l'upload de fichiers
- JWT pour l'authentification
- bcrypt pour le hashage des mots de passe
- Node.js 18+ et npm
- Git
# Cloner le repository
git clone https://github.com/luoxthedev/static-site-host.git
cd static-site-host
# Installer les dépendances du frontend
npm install
# Installer les dépendances du backend
cd server
npm install
cd ..# Dans le dossier racine, lancer le backend
npm run server
# Dans un autre terminal, lancer le frontend
npm run devBackend (port 3000) :
cd server
npm startFrontend (port 8080) :
npm run dev- Frontend : http://localhost:8080
- Backend API : http://localhost:3000
- Sites déployés :
- Par ID : http://localhost:3000/sites/[site-id]/
- Par sous-domaine : http://[slug].lvh.me:3000/
Créez un fichier .env dans le dossier server/ (voir server/.env.example) :
PORT=3000
JWT_SECRET=votre_secret_jwt_ici
SITES_ROOT=uploadsStatix supporte trois types de bases de données. Définissez DB_TYPE dans votre fichier .env :
DB_TYPE=sqlite
SQLITE_FILE=./database.sqliteInstallez d'abord le driver :
cd server && npm install mysql2DB_TYPE=mysql
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=votre_mot_de_passe
MYSQL_DATABASE=statixInstallez d'abord le driver :
cd server && npm install pgUtilisez ensuite la chaîne de connexion directe depuis le Dashboard Supabase (Settings → Database) :
DB_TYPE=supabase
SUPABASE_DB_URL=postgresql://postgres:password@db.xxxxx.supabase.co:5432/postgres
SUPABASE_SSL=trueModifiez server/config.js pour personnaliser :
module.exports = {
appDomain: 'lvh.me', // Domaine pour les sous-domaines
port: 3000, // Port du serveur
sitesRoot: 'uploads', // Dossier de stockage des sites
enableSubdomains: true // Activer le routage par sous-domaine
};.
├── src/ # Code source frontend
│ ├── components/ # Composants React
│ ├── pages/ # Pages de l'application
│ ├── stores/ # State management (Zustand)
│ ├── locales/ # Fichiers de traduction (FR/EN)
│ └── lib/ # Utilitaires
├── server/ # Code source backend
│ ├── routes/ # Routes Express
│ ├── middleware/ # Middleware (auth, etc.)
│ ├── database/ # Adaptateurs de base de données (sqlite, mysql, supabase)
│ ├── uploads/ # Sites hébergés
│ ├── database.js # Initialisation de la base de données (sélection d'adaptateur)
│ └── index.js # Point d'entrée backend
└── public/ # Assets statiques- Créer un nouveau site avec nom et slug
- Uploader des fichiers (HTML, CSS, JS, images, etc.)
- Définir un fichier principal personnalisé
- Supprimer des fichiers
- Redéployer un site
- Inscription avec nom, email et mot de passe
- Connexion avec JWT
- Option "Se souvenir de moi"
- Mot de passe oublié
- Vue d'ensemble de tous vos sites
- Statistiques : nombre de sites, sites actifs, stockage utilisé
- Recherche et filtrage de sites
- Accès rapide à la gestion de chaque site
- Basculer entre français et anglais
- Changement de langue en temps réel
- Persistance de la préférence linguistique
npm run dev # Démarrer le frontend en mode développement
npm run build # Compiler le frontend pour la production
npm run preview # Prévisualiser le build de production
npm run server # Démarrer le backendMIT
Développé par luoxthedev