90 lines
2.0 KiB
Markdown
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
|
|
```
|