init import projet
This commit is contained in:
@@ -1,2 +1,89 @@
|
||||
# mybabyguess
|
||||
# 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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user