181 lines
3.7 KiB
Markdown
181 lines
3.7 KiB
Markdown
# CSV - Documentation détaillée
|
|
|
|
## Architecture
|
|
|
|
```mermaid
|
|
graph TD
|
|
subgraph "Frontend (React/Vite)"
|
|
App[App.jsx]
|
|
Router[React Router]
|
|
Pages[Pages]
|
|
Auth[AuthContext]
|
|
end
|
|
|
|
subgraph "Backend (Express ESM)"
|
|
Server[index.js]
|
|
Routes[Routes API]
|
|
Multer[Multer Uploads]
|
|
end
|
|
|
|
subgraph "Base de données"
|
|
MariaDB[(MariaDB<br/>csv)]
|
|
end
|
|
|
|
App --> Router
|
|
Router --> Pages
|
|
Pages --> Auth
|
|
Pages -->|API calls| Server
|
|
Server --> Routes
|
|
Server --> Multer
|
|
Routes --> MariaDB
|
|
```
|
|
|
|
## Modèle de données
|
|
|
|
```mermaid
|
|
erDiagram
|
|
USERS ||--o{ ARTICLES : "écrit"
|
|
USERS ||--o{ EVENTS : "crée"
|
|
USERS ||--o{ LISTINGS : "publie"
|
|
USERS ||--o{ HELP_REQUESTS : "demande"
|
|
USERS ||--o{ BUSINESSES : "possède"
|
|
CATEGORIES ||--o{ LISTINGS : "classe"
|
|
CATEGORIES ||--o{ EVENTS : "classe"
|
|
|
|
USERS {
|
|
int id PK
|
|
string name
|
|
string email UK
|
|
string password
|
|
string phone
|
|
string address
|
|
enum role user|admin
|
|
string avatar
|
|
}
|
|
|
|
ARTICLES {
|
|
int id PK
|
|
string title
|
|
text content
|
|
string image
|
|
int author_id FK
|
|
boolean published
|
|
}
|
|
|
|
EVENTS {
|
|
int id PK
|
|
string title
|
|
text description
|
|
date date
|
|
time time
|
|
string location
|
|
string image
|
|
string category
|
|
int author_id FK
|
|
}
|
|
|
|
LISTINGS {
|
|
int id PK
|
|
string title
|
|
text description
|
|
float price
|
|
string image
|
|
string category
|
|
int author_id FK
|
|
}
|
|
|
|
HELP_REQUESTS {
|
|
int id PK
|
|
string title
|
|
text description
|
|
string urgency
|
|
int author_id FK
|
|
}
|
|
|
|
BUSINESSES {
|
|
int id PK
|
|
string name
|
|
string description
|
|
string address
|
|
string phone
|
|
string email
|
|
string website
|
|
string category
|
|
int owner_id FK
|
|
}
|
|
|
|
CATEGORIES {
|
|
int id PK
|
|
string name
|
|
enum type listing|event
|
|
}
|
|
```
|
|
|
|
## API Routes
|
|
|
|
| Méthode | Route | Description |
|
|
|---------|-------|-------------|
|
|
| POST | `/api/auth/register` | Inscription |
|
|
| POST | `/api/auth/login` | Connexion |
|
|
| GET | `/api/auth/me` | Profil |
|
|
| GET | `/api/articles` | Liste articles |
|
|
| POST | `/api/articles` | Créer article |
|
|
| GET | `/api/events` | Liste événements |
|
|
| POST | `/api/events` | Créer événement |
|
|
| GET | `/api/listings` | Liste annonces |
|
|
| POST | `/api/listings` | Créer annonce |
|
|
| GET | `/api/help-requests` | Liste demandes d'aide |
|
|
| POST | `/api/help-requests` | Créer demande |
|
|
| GET | `/api/businesses` | Liste entreprises |
|
|
| POST | `/api/businesses` | Créer entreprise |
|
|
| GET | `/api/categories` | Liste catégories |
|
|
|
|
## Fonctionnalités
|
|
|
|
### Articles
|
|
- CRUD avec images (upload Multer)
|
|
- Système de publication (brouillon/publié)
|
|
- Auteur lié
|
|
|
|
### Événements
|
|
- Date, heure, lieu
|
|
- Catégories (musique, sport, culture, etc.)
|
|
- Images
|
|
|
|
### Petites Annonces (Listings)
|
|
- Prix, catégorie
|
|
- Images uploadées
|
|
- Recherche par catégorie
|
|
|
|
### Demandes d'Aide
|
|
- Niveau d'urgence
|
|
- Mise en relation entre utilisateurs
|
|
|
|
### Annuaire Entreprises
|
|
- Informations contact
|
|
- Site web, téléphone
|
|
- Catégories métier
|
|
|
|
### Administration
|
|
- Panel admin pour gérer les contenus
|
|
- Modération des articles/annonces
|
|
- Gestion des utilisateurs
|
|
|
|
## Développement
|
|
|
|
```bash
|
|
# Backend
|
|
cd backend
|
|
npm install
|
|
node src/index.js # Express sur :3002
|
|
|
|
# Frontend
|
|
cd frontend
|
|
npm install
|
|
npm run dev # Vite sur :5173
|
|
```
|
|
|
|
## Auto-migration BDD
|
|
|
|
Le backend crée automatiquement les tables au démarrage via `CREATE TABLE IF NOT EXISTS`. Pas de migration nécessaire.
|