Skip to content

faridig/flotte-pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flotte Pro

Application de gestion de flotte automobile pour entreprise. SPA vanilla JS + API REST Node.js/Express + PostgreSQL, orchestrée par Docker Compose.


Stack technique

Couche Technologie
Frontend HTML/CSS/JS vanilla (frontend/index.html)
API Node.js + Express
Base de données PostgreSQL 16
Reverse proxy Nginx
Orchestration Docker Compose

Prérequis

  • Docker + Docker Compose installés
  • Git

Premier démarrage

# 1. Cloner le dépôt
git clone <url-du-repo>
cd flotte_pro

# 2. Configurer les variables d'environnement
cp .env.example .env
# Éditer .env et remplacer les valeurs "changeme"

# 3. Démarrer tous les services
docker compose up -d --build

L'application est accessible sur http://localhost (port 80 par défaut, configurable via PORT dans .env).

Les migrations SQL s'exécutent automatiquement au démarrage de l'API.


Variables d'environnement (.env)

Variable Description Valeur par défaut
PORT Port d'écoute Nginx 80
POSTGRES_USER Utilisateur PostgreSQL flotte
POSTGRES_PASSWORD Mot de passe PostgreSQL
POSTGRES_DB Nom de la base flotte_pro
JWT_SECRET Clé de signature JWT
ADMIN_PRENOM Prénom du compte admin prod Admin
ADMIN_NOM Nom du compte admin prod Prod
ADMIN_EMAIL Email du compte admin prod
ADMIN_PASSWORD Mot de passe du compte admin prod

Commandes courantes

# Démarrer tous les services
docker compose up -d

# Arrêter
docker compose down

# Rebuild API uniquement (après modification du code API)
docker compose up -d --build api

# Voir les logs API en direct
docker compose logs api -f

# Voir les logs de tous les services
docker compose logs -f

Données de test

Le script seed.js remet à zéro la base, injecte un jeu de données complet, puis recrée l'admin depuis le .env.

docker compose exec api node src/seed.js

Comptes créés (mot de passe unique : flotte123) :

Rôle Email
Gestionnaire m.dupont.rh@entreprise.fr
Gestionnaire jp.blanc@entreprise.fr
Gestionnaire c.rousseau@entreprise.fr
Salarié (plusieurs, voir seed.js)

Réinitialisation en production

Le script wipe-prod.js vide toutes les tables et recrée uniquement le compte admin depuis le .env (sans données de test).

docker compose exec api node src/wipe-prod.js

Les variables ADMIN_EMAIL et ADMIN_PASSWORD sont obligatoires dans le .env.


Structure du projet

flotte_pro/
├── frontend/
│   └── index.html          # SPA complète
├── api/
│   ├── Dockerfile
│   ├── package.json
│   ├── db/
│   │   └── schema.sql      # Schéma PostgreSQL initial
│   └── src/
│       ├── index.js        # Entry point Express + migrations auto
│       ├── db.js           # Pool PostgreSQL
│       ├── seed.js         # Données de test (wipe complet + admin depuis .env)
│       ├── wipe-prod.js    # Wipe prod : vide tout + recrée admin depuis .env
│       ├── middleware/
│       │   └── auth.js     # Vérification JWT + requireRole()
│       └── routes/         # auth, users, vehicules, km, contacts,
│                           # entretien, sinistres, documents,
│                           # messages, regles, dashboard
├── nginx.conf              # Config reverse proxy
├── docker-compose.yml
├── .env.example
└── .env                    # Non versionné

Deux rôles utilisateur

  • gestionnaire : accès complet (tableau de bord, validation km, gestion comptes, etc.)
  • salarie : accès limité à ses propres données (saisie km, signalements, messagerie, etc.)

Le rôle est stocké en base et transmis dans le JWT. Il n'est pas modifiable côté client.


Réinitialiser le mot de passe d'un utilisateur

node api/src/reset-pwd.js

Déploiement sur serveur distant

Serveur OVH : farid@10.0.10.130/home/farid/flotte-pro — port 8081

Premier déploiement

# 1. Créer le dossier sur le serveur
ssh farid@10.0.10.130 "mkdir -p ~/flotte-pro"

# 2. Envoyer les fichiers (depuis la machine locale)
rsync -avz --exclude='.git' --exclude='node_modules' --exclude='.next' \
  --exclude='uploads' --exclude='*.log' --exclude='.DS_Store' \
  --exclude='.rtk' --exclude='.venv' \
  /home/farid/Documents/projets_accro/flotte-pro/ farid@10.0.10.130:~/flotte-pro/

# 3. Envoyer le .env (non transféré par rsync)
scp .env farid@10.0.10.130:~/flotte-pro/.env

# 4. Builder et démarrer
ssh farid@10.0.10.130 "cd ~/flotte-pro && docker compose up -d --build"

Mises à jour suivantes

rsync -avz --exclude='.git' --exclude='node_modules' --exclude='.next' \
  --exclude='uploads' --exclude='*.log' --exclude='.DS_Store' \
  --exclude='.rtk' --exclude='.venv' \
  /home/farid/Documents/projets_accro/flotte-pro/ farid@10.0.10.130:~/flotte-pro/

ssh farid@10.0.10.130 "cd ~/flotte-pro && docker compose up -d --build api"

Migrer la base de données locale vers le serveur

# Dump local
docker exec flotte-pro-db-1 pg_dump -U flotte flotte_pro > /tmp/flotte-pro-dump.sql

# Envoyer
scp /tmp/flotte-pro-dump.sql farid@10.0.10.130:/tmp/

# Vider et recréer la BDD sur le serveur
ssh farid@10.0.10.130 "docker exec flotte-pro-db-1 dropdb -U flotte flotte_pro && \
  docker exec flotte-pro-db-1 createdb -U flotte -O flotte flotte_pro"

# Restaurer
ssh farid@10.0.10.130 "docker exec -i flotte-pro-db-1 psql -U flotte flotte_pro < /tmp/flotte-pro-dump.sql"

About

Gestion de flotte automobile · SPA vanilla JS + Node.js/Express + PostgreSQL + Docker

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors