Files
gestion/README.md
T

113 lines
3.9 KiB
Markdown

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