Files
2026-05-03 21:58:59 +02:00

90 lines
2.0 KiB
Markdown

# Le Juste Poids
Monorepo contenant:
- API NestJS (`apps/api`)
- Front NextJS (`apps/web`)
- Base PostgreSQL (via Docker Compose)
## Demarrage rapide
1. Installer les dependances
```bash
npm install
```
2. Configurer l'environnement
Le fichier `.env` est deja present a la racine pour Docker Compose.
3. Lancer toute la stack
```bash
docker compose up --build
```
Services:
- Front: http://localhost:3002
- API: http://localhost:3001
- DB: localhost:5432
## Authentification
L'admin est un vrai compte en base de donnees. Au demarrage de l'API, un compte
admin est cree (ou mis a jour) avec:
- `ADMIN_USERNAME`
- `ADMIN_PASSWORD`
Connexion JWT:
```bash
curl -X POST http://localhost:3001/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"change_me_admin_password"}'
```
La reponse contient `accessToken` (JWT Bearer).
La reponse contient aussi `refreshToken` pour renouveler la session.
Renouveler la session:
```bash
curl -X POST http://localhost:3001/auth/refresh \
-H "Content-Type: application/json" \
-d '{"refreshToken":"<REFRESH_TOKEN>"}'
```
## API admin: gestion des comptes
Routes protegees par JWT + role `ADMIN`:
- `POST /users` creer un compte
- `GET /users` lister les comptes
- `PATCH /users/:id` modifier username/password/role
- `DELETE /users/:id` supprimer un compte
Routes utilisateur connecte (ADMIN ou FAMILY):
- `GET /users/me` recuperer son profil
- `PATCH /users/me` modifier son pseudo (`displayName`)
- `POST /users/me/photo` uploader sa photo de profil (multipart `file`, PNG/JPG/WEBP)
Exemple creation d'utilisateur:
```bash
curl -X POST http://localhost:3001/users \
-H "Authorization: Bearer <JWT_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"username":"maman","password":"motdepassefort","role":"FAMILY"}'
```
## Frontend
- `/` : page de login utilisateur
- `/admin` : login admin + creation/liste/modification/suppression des comptes
- `/profile` : page profil pour les utilisateurs non-admin (pseudo + photo)
Healthcheck API:
```bash
curl http://localhost:3001/health
```