# CSV - Plateforme de Vie Locale Application communautaire : articles, événements, petites annonces (listings), demandes d'aide, annuaire d'entreprises locales, avec comptes utilisateurs et panneau d'administration. ## Stack technique | Composant | Technologie | |-----------|------------| | Backend | Node.js + Express (ESM) | | Frontend | React 18 + Vite 5 + Tailwind 3 | | Base de données | MariaDB (instance distante, LXC 102) | | Authentification | JWT (jsonwebtoken) + bcryptjs | | Uploads | Multer | ## Déploiement ```bash cd /opt/csv docker compose up -d ``` - **Backend** : http://localhost:3002 - **Frontend** : http://localhost:3003 La BDD est auto-créée au démarrage du backend (tables `users`, `articles`, `events`, `listings`, `help_requests`, `businesses`, `categories`). ## Structure ``` /opt/csv/ ├── backend/ │ ├── src/ │ │ ├── index.js # Point d'entrée Express + auto-create tables │ │ ├── config/db.js # Pool MySQL │ │ ├── routes/ │ │ │ ├── auth.js # Inscription, connexion, profil │ │ │ ├── articles.js # CRUD articles │ │ │ ├── events.js # CRUD événements │ │ │ ├── listings.js # Petites annonces │ │ │ ├── helpRequests.js # Demandes d'aide │ │ │ └── businesses.js # Annuaire entreprises │ │ └── uploads/ # Fichiers uploadés │ └── package.json ├── frontend/ │ ├── src/ │ │ ├── App.jsx # Routeur React │ │ ├── components/ # Composants UI │ │ └── pages/ # Pages │ └── package.json ├── docker-compose.yml └── nginx.conf ``` ## API Routes | Méthode | Route | Description | |---------|-------|-------------| | POST | `/api/auth/register` | Inscription | | POST | `/api/auth/login` | Connexion | | GET/POST | `/api/articles` | Liste/Création articles | | GET/POST | `/api/events` | Liste/Création événements | | GET/POST | `/api/listings` | Liste/Création petites annonces | | GET/POST | `/api/help-requests` | Liste/Création demandes d'aide | | GET/POST | `/api/businesses` | Liste/Création entreprises | ## Variables d'environnement | Variable | Description | Valeur | |----------|-------------|--------| | `PORT` | Port backend | `3002` | | `DB_HOST` | Host MariaDB | `10.10.10.11` | | `DB_PORT` | Port MariaDB | `3306` | | `DB_USER` | Utilisateur BDD | `csvusr` | | `DB_PASSWORD` | Mot de passe BDD | `Fdp1989Dor@` | | `DB_NAME` | Nom de la BDD | `csv` | | `JWT_SECRET` | Secret JWT | `csv-secret-key-change-in-production` | > **Sécurité** : Le JWT_SECRET est une valeur par défaut. Il doit être changé en production. ## Domaine de production - **URL** : https://csv.secourit.fr - **LXC** : 106 (IP 10.10.10.23) - **Backend** : port 3002 - **Frontend** : port 3003 - **SSL** : Let's Encrypt via Nginx Proxy Manager - **BDD** : MariaDB sur LXC 102 (10.10.10.11), base `csv`