# Gestion de Projets — Body Control Technologies

Application interne de gestion de projets pour [Body Control Technologies](https://bodycontroltechnologies.com).

**Production** : [projets.bodycontroltechnologies.com](https://projets.bodycontroltechnologies.com)

## Fonctionnalités

- **Kanban** — Vue en colonnes (À faire / En cours / Terminé) avec drag & drop
- **Liste** — Vue tabulaire avec tri et filtres (projet, priorité, statut, assigné)
- **Calendrier** — Vue mensuelle des tâches par date
- **Gantt** — Diagramme de Gantt (date de début → deadline)
- **Forum** — Espace de discussion par projet
- **Tickets** — Système de tickets par projet
- **Fichiers** — Gestion de fichiers par projet
- **Gestion des membres** — Rôles : admin, chef de projet, membre, client

## Stack technique

### Client
- React 19 + Vite 7
- Axios
- Single-file App (`client/src/App.jsx`)

### Serveur
- Node.js + Express 5
- SQLite (better-sqlite3)
- JWT (jsonwebtoken) + bcryptjs
- Nodemailer

## Installation locale

```bash
# Client
cd client
npm install
npm run dev

# Serveur
cd server
npm install
node index.js
```

Configurer le fichier `server/.env` :
```
PORT=3000
JWT_SECRET=votre_secret
CLIENT_URL=http://localhost:5173
```

## Déploiement

```bash
cd client
bash deploy-bct.sh
```

Le script build le client, envoie les fichiers sur le serveur et redémarre le backend via PM2.

## Structure

```
client/
  src/App.jsx          # Application React (SPA single-file)
  src/api.js           # Configuration Axios
  deploy-bct.sh        # Script de déploiement
server/
  index.js             # Point d'entrée Express
  database.js          # Initialisation SQLite
  middleware/auth.js    # Middleware JWT
  routes/
    auth.js            # Authentification (login)
    users.js           # Gestion des utilisateurs
    projects.js        # CRUD projets
    tasks.js           # CRUD tâches
    tickets.js         # Système de tickets
    topics.js          # Forum / discussions
    links.js           # Liens utiles
```
