# 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 ```bash 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 ```bash 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)