docs : rewrite README with full project documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
168
README.md
168
README.md
@@ -1,10 +1,151 @@
|
|||||||
# Lesstime
|
# Lesstime
|
||||||
|
|
||||||
Application de gestion de projet. Symfony 8 + API Platform 4 + Nuxt 4.
|
Application de gestion de projet avec suivi du temps et portail client.
|
||||||
|
|
||||||
## MCP Server
|
## Stack
|
||||||
|
|
||||||
Lesstime expose un serveur MCP (Model Context Protocol) permettant aux assistants IA (Claude Code, ChatGPT, Codex) d'interagir avec les projets, tâches et le suivi du temps.
|
| Couche | Technologies |
|
||||||
|
|--------|-------------|
|
||||||
|
| **Backend** | PHP 8.4, Symfony 8, API Platform 4, Doctrine ORM |
|
||||||
|
| **Frontend** | Nuxt 4 (SPA), Vue 3, Pinia, Tailwind CSS |
|
||||||
|
| **Base de données** | PostgreSQL 16 |
|
||||||
|
| **Auth** | JWT HTTP-only cookie (lexik/jwt-authentication-bundle) |
|
||||||
|
| **Infrastructure** | Docker (PHP-FPM, Nginx, PostgreSQL) |
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
- Gestion de projets et tâches (kanban, groupes, priorités, tags, efforts)
|
||||||
|
- Suivi du temps (timer, calendrier, vue liste)
|
||||||
|
- Portail client avec tickets (bug, amélioration, autre)
|
||||||
|
- Gestion de documents (upload, prévisualisation, téléchargement)
|
||||||
|
- Profil utilisateur avec avatar (crop circulaire)
|
||||||
|
- Notifications temps réel
|
||||||
|
- Intégration Gitea (issues, repos)
|
||||||
|
- Serveur MCP pour assistants IA
|
||||||
|
- Multi-langue (i18n)
|
||||||
|
|
||||||
|
## Prérequis
|
||||||
|
|
||||||
|
- Docker & Docker Compose
|
||||||
|
- Git
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Cloner le repo
|
||||||
|
git clone <url> && cd lesstime
|
||||||
|
|
||||||
|
# 2. Démarrer les containers
|
||||||
|
make start
|
||||||
|
|
||||||
|
# 3. Installation complète (composer, migrations, fixtures, build Nuxt)
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
L'application est accessible sur **http://localhost:8082**.
|
||||||
|
|
||||||
|
### Comptes de test (fixtures)
|
||||||
|
|
||||||
|
| Utilisateur | Mot de passe | Rôle | Détails |
|
||||||
|
|-------------|-------------|------|---------|
|
||||||
|
| `admin` | `admin` | ROLE_ADMIN | Administrateur |
|
||||||
|
| `alice` | `alice` | ROLE_USER | Utilisateur interne |
|
||||||
|
| `bob` | `bob` | ROLE_USER | Utilisateur interne |
|
||||||
|
| `charlie` | `charlie` | ROLE_USER | Utilisateur interne |
|
||||||
|
| `client-liot` | `client` | ROLE_CLIENT | Client LIOT (projet SIRH) |
|
||||||
|
| `client-acme` | `client` | ROLE_CLIENT | Client ACME (projet CRM) |
|
||||||
|
|
||||||
|
## Commandes
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make start # Démarrer les containers
|
||||||
|
make stop # Arrêter les containers
|
||||||
|
make restart # Redémarrer les containers
|
||||||
|
make shell # Shell dans le container PHP
|
||||||
|
make shell-root # Shell root dans le container PHP
|
||||||
|
```
|
||||||
|
|
||||||
|
### Développement
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make dev-nuxt # Dev server Nuxt (hot reload, port 3002)
|
||||||
|
make cache-clear # Vider le cache Symfony
|
||||||
|
make logs-dev # Tail logs Symfony
|
||||||
|
```
|
||||||
|
|
||||||
|
### Base de données
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make migration-migrate # Lancer les migrations
|
||||||
|
make fixtures # Charger les fixtures
|
||||||
|
make db-reset # Reset BDD + migrations + fixtures (⚠️ supprime les données)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tests & Qualité
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make test # PHPUnit
|
||||||
|
make php-cs-fixer-allow-risky # Fix code style PHP (Symfony + PSR-12)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installation complète
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make install # Composer + migrations + fixtures + build Nuxt
|
||||||
|
make reset # Tout supprimer et réinstaller (⚠️ supprime la BDD)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
src/
|
||||||
|
├── Entity/ # Entités Doctrine
|
||||||
|
├── Controller/ # Controllers custom Symfony
|
||||||
|
├── State/ # Providers et Processors API Platform
|
||||||
|
├── Service/ # Services métier
|
||||||
|
├── Security/ # Authenticators custom
|
||||||
|
├── Mcp/Tool/ # MCP tools par domaine
|
||||||
|
├── Command/ # Commandes console
|
||||||
|
├── Repository/ # Repositories Doctrine
|
||||||
|
└── DataFixtures/ # Fixtures
|
||||||
|
|
||||||
|
frontend/
|
||||||
|
├── pages/ # Pages Nuxt (routing auto)
|
||||||
|
├── layouts/ # Layouts (default, portal)
|
||||||
|
├── components/ # Composants Vue (ui/, task/, user/, etc.)
|
||||||
|
├── composables/ # Composables (useApi, useNotifications, etc.)
|
||||||
|
├── stores/ # Stores Pinia (auth, ui, timer)
|
||||||
|
├── services/ # Services API et DTOs
|
||||||
|
├── i18n/locales/ # Traductions
|
||||||
|
└── middleware/ # Middleware auth
|
||||||
|
|
||||||
|
config/ # Config Symfony
|
||||||
|
migrations/ # Migrations Doctrine
|
||||||
|
docker/ # Dockerfiles et config Nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
| Container | Port | Description |
|
||||||
|
|-----------|------|-------------|
|
||||||
|
| `php-lesstime-fpm` | 3002 (dev Nuxt) | PHP-FPM + Node 24 |
|
||||||
|
| `nginx-lesstime` | 8082 | Nginx reverse proxy |
|
||||||
|
| PostgreSQL | 5435 | Base de données |
|
||||||
|
|
||||||
|
Configuration : `docker/.env.docker` (override local : `docker/.env.docker.local`)
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
Toutes les routes API sont préfixées `/api` (API Platform).
|
||||||
|
|
||||||
|
- Documentation auto-générée : **http://localhost:8082/api**
|
||||||
|
- Auth : `POST /login_check` avec `{ username, password }` → cookie JWT `BEARER`
|
||||||
|
|
||||||
|
## Serveur MCP
|
||||||
|
|
||||||
|
Lesstime expose un serveur MCP (Model Context Protocol) permettant aux assistants IA d'interagir avec les données.
|
||||||
|
|
||||||
### Tools disponibles (22)
|
### Tools disponibles (22)
|
||||||
|
|
||||||
@@ -16,13 +157,6 @@ Lesstime expose un serveur MCP (Model Context Protocol) permettant aux assistant
|
|||||||
| TaskMeta | `list-statuses`, `list-priorities`, `list-efforts`, `list-tags`, `list-groups`, `create-group`, `update-group` |
|
| TaskMeta | `list-statuses`, `list-priorities`, `list-efforts`, `list-tags`, `list-groups`, `create-group`, `update-group` |
|
||||||
| TimeEntry | `list-time-entries`, `create-time-entry`, `update-time-entry`, `delete-time-entry` |
|
| TimeEntry | `list-time-entries`, `create-time-entry`, `update-time-entry`, `delete-time-entry` |
|
||||||
|
|
||||||
### Transports
|
|
||||||
|
|
||||||
| Transport | Usage | Auth |
|
|
||||||
|-----------|-------|------|
|
|
||||||
| **STDIO** | Claude Code sur la machine locale | Aucune |
|
|
||||||
| **HTTP** (`/_mcp`) | Clients MCP sur le réseau local | API token (`Authorization: Bearer <token>`) |
|
|
||||||
|
|
||||||
### Configuration locale (STDIO)
|
### Configuration locale (STDIO)
|
||||||
|
|
||||||
```json
|
```json
|
||||||
@@ -55,17 +189,19 @@ Lesstime expose un serveur MCP (Model Context Protocol) permettant aux assistant
|
|||||||
### Gestion des tokens API
|
### Gestion des tokens API
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Générer un token pour un utilisateur
|
|
||||||
docker exec -u www-data php-lesstime-fpm php bin/console app:generate-api-token <username>
|
docker exec -u www-data php-lesstime-fpm php bin/console app:generate-api-token <username>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Mise en production (réseau local)
|
## Déploiement
|
||||||
|
|
||||||
1. Déployer le code sur le serveur
|
1. Déployer le code sur le serveur
|
||||||
2. `composer install --no-dev --optimize-autoloader`
|
2. `composer install --no-dev --optimize-autoloader`
|
||||||
3. `php bin/console doctrine:migrations:migrate --no-interaction`
|
3. `php bin/console doctrine:migrations:migrate --no-interaction`
|
||||||
4. `php bin/console cache:clear --env=prod`
|
4. `php bin/console cache:clear --env=prod`
|
||||||
5. `docker restart nginx-lesstime`
|
5. `cd frontend && npm install && npm run build:dist`
|
||||||
6. `php bin/console app:generate-api-token admin` — noter le token
|
6. `docker restart nginx-lesstime`
|
||||||
7. Ouvrir le port 8082 sur le firewall du serveur (LAN uniquement)
|
7. Ouvrir le port 8082 sur le firewall (LAN uniquement)
|
||||||
8. Configurer les clients MCP avec l'URL `http://<ip-serveur>:8082/_mcp` + le token
|
|
||||||
|
## Licence
|
||||||
|
|
||||||
|
Propriétaire — Tous droits réservés.
|
||||||
|
|||||||
Reference in New Issue
Block a user