cc9635c8b69ac7ebcfa9751a3da7a6e011aa64fb
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
- URL : https://gestion.secourit.fr
- LXC : 104 (IP 10.10.10.21)
- Port : 3005
- SSL : Let's Encrypt via Nginx Proxy Manager
- BDD : PostgreSQL sur LXC 101 (10.10.10.10)
- Preprod : https://gestion-preprod.secourit.fr (LXC 110, port 3105)
Languages
TypeScript
96.6%
JavaScript
2.1%
Python
0.9%
CSS
0.2%
Shell
0.2%