Files

3.9 KiB

SecourIT - Gestion

Application de gestion commerciale : clients (prospects/clients), devis avec calcul de marge et frais de déplacement, contrats, factures, ventes, coûts de produits, to-do list. Interface en français, PWA.

Stack technique

Composant Technologie
Framework Next.js 14 (App Router)
Langage TypeScript
Base de données PostgreSQL 17 (LXC distante)
ORM Prisma 5
Authentification JWT (jose) + bcryptjs
UI Tailwind CSS + Lucide React
Formulaires react-hook-form + zod
Graphes Recharts
Emails Nodemailer (SMTP Infomaniak)

Déploiement

cd /opt/gestion

# Installer les dépendances
npm install

# Générer le client Prisma
npx prisma generate

# Pousser le schema en BDD
npx prisma db push

# Lancer en production
NODE_ENV=production npx next start -p 3005

Note

: Pas de process manager en production. Le process est lancé via nohup. Un redémarrage automatique n'est pas garanti.

Structure

/opt/gestion/
├── src/
│   ├── app/
│   │   ├── api/             # Routes API (App Router)
│   │   │   ├── auth/        # Login, logout, register, me, change-password
│   │   │   ├── clients/     # CRUD clients
│   │   │   ├── quotes/      # Devis
│   │   │   ├── contracts/   # Contrats
│   │   │   ├── invoices/    # Factures
│   │   │   ├── sales/       # Ventes
│   │   │   ├── servers/     # Gestion serveurs
│   │   │   ├── tickets/     # Support/tickets
│   │   │   ├── todos/       # To-do list
│   │   │   └── dashboard/   # Tableau de bord
│   │   ├── login/           # Page de connexion
│   │   └── layout.tsx       # Layout principal
│   └── lib/                 # Utilitaires (auth, BDD)
├── prisma/
│   ├── schema.prisma        # Modèles de données
│   ├── seed.js              # Données initiales
│   └── seed-demo.js         # Données de démonstration
├── public/                  # Assets statiques
├── .env                     # Variables d'environnement
├── next.config.js           # Config Next.js
├── tailwind.config.js       # Config Tailwind
└── package.json

Modèles de données (Prisma)

  • User - Utilisateurs avec sessions
  • Client - Prospects et clients (type enum PROSPECT/CLIENT)
  • Quote / QuoteItem - Devis avec lignes, marge, frais déplacement
  • Contract - Contrats liés aux devis acceptés
  • Invoice - Factures
  • Sale / SaleItem - Ventes avec lignes
  • ProductCost - Coûts des produits
  • TodoItem - Liste de tâches

Variables d'environnement

Variable Description Valeur
DATABASE_URL Connexion PostgreSQL postgresql://gestion_user:L0relei69@10.10.10.10:5432/gestion_secourit
JWT_SECRET Secret JWT configuré dans .env
SERVER_MONITOR_SECRET Secret monitoring configuré dans .env
SMTP_HOST Serveur SMTP smtp.infomaniak.ch
SMTP_PORT Port SMTP 465
SMTP_USER Email SMTP support@secourit.fr
SMTP_PASS Mot de passe SMTP configuré dans .env
NODE_ENV Environnement production

Commandes utiles

npx prisma db push        # Pousser le schema en BDD
npx prisma generate       # Générer le client Prisma
npx prisma studio         # Interface web pour la BDD
npx prisma migrate reset  # Reset complet de la BDD
node prisma/seed.js       # Insérer les données initiales
node prisma/seed-demo.js  # Insérer des données de test

Domaine de production