113 lines
3.9 KiB
Markdown
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)
|