|
1 | 1 | # NextShape |
2 | 2 |
|
3 | | -Une application web permettant de calculer les calories, l'IMC d'un utilisateur et de lui donner un suivi de son évolution au cours du temps |
| 3 | +NextShape est une application web de suivi de forme physique, qui permet à un utilisateur de : |
| 4 | + |
| 5 | +- Gérer son **compte utilisateur** (inscription avec vérification e-mail, connexion, modification, suppression, réinitialisation du mot de passe). |
| 6 | +- Calculer son **IMC**, son **BMR**, son **TDEE** et ses **calories recommandées** en fonction de ses données personnelles. |
| 7 | +- Visualiser l'évolution de ses données corporelles dans un **historique**. |
| 8 | + |
| 9 | +L'application est construite avec : |
| 10 | + |
| 11 | +- **Frontend** : Vue 3, TypeScript, PrimeVue, Pinia, Vite |
| 12 | +- **Backend** : Django, Django REST Framework, JWT par cookie HttpOnly |
| 13 | +- **Base de données** : PostgreSQL |
| 14 | +- **CI/CD** : Docker, docker-compose, Render, GitHub Actions |
| 15 | + |
| 16 | +## Fonctionnalités |
| 17 | + |
| 18 | +- Authentification JWT via cookies HttpOnly |
| 19 | +- Calcul de l'IMC |
| 20 | +- Calcul du métabolisme de base (BMR), du TDEE et des calories recommandées |
| 21 | +- Historique dynamique avec tableau et modale responsive |
| 22 | +- Mise à jour et suppression des enregistrements |
| 23 | +- Envoi de codes par email via SMTP (Brevo) |
| 24 | +- Pipeline CI/CD avec test et déploiement Render (dev/prod) |
| 25 | + |
| 26 | +## Installation |
| 27 | + |
| 28 | +### Prérequis |
| 29 | + |
| 30 | +- Docker + Docker Compose + PostgreSQL |
| 31 | +- Créer un fichier `.env` à la racine avec les variables suivantes : |
| 32 | + |
| 33 | +``` |
| 34 | +# Environnement et secrets Django |
| 35 | +ENV=local |
| 36 | +DJANGO_SECRET_KEY=django-insecure-... |
| 37 | +DJANGO_DEBUG=True |
| 38 | +DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost |
| 39 | +
|
| 40 | +# Secrets de la base de données |
| 41 | +DATABASE_NAME=nextshape_db |
| 42 | +DATABASE_USER=nextshape_user |
| 43 | +DATABASE_PASSWORD=nextshape_pwd |
| 44 | +DATABASE_HOST=db #(en lançant avec Docker et localhost si on veut lancer le serveur avec le terminal) |
| 45 | +DATABASE_PORT=5432 |
| 46 | +
|
| 47 | +# Secrets pour l'envoi de mails à partir du serveur Django |
| 48 | +#(Exemple : utilisation de Brevo) |
| 49 | +EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend |
| 50 | +EMAIL_HOST=smtp.brevo.com |
| 51 | +EMAIL_PORT=587 |
| 52 | +EMAIL_HOST_USER=user@email.com |
| 53 | +EMAIL_HOST_PASSWORD=motdepasse |
| 54 | +DEFAULT_FROM_EMAIL=NextShape <dev@email.com> |
| 55 | +EMAIL_USE_TLS=True |
| 56 | +
|
| 57 | +# URL vers l'API qu'utilisera le front pour envoyer les requêtes. |
| 58 | +VITE_API_URL=http://localhost:8000/api/ |
| 59 | +``` |
| 60 | + |
| 61 | +- Lancer en local |
| 62 | + |
| 63 | +``` |
| 64 | +docker-compose up --build |
| 65 | +``` |
| 66 | + |
| 67 | +- Puis aller sur : |
| 68 | + |
| 69 | + - Interface web : http://localhost |
| 70 | + |
| 71 | + - API : http://localhost:8000/api/ |
| 72 | + |
| 73 | +### Base de données de test |
| 74 | + |
| 75 | +Un utilisateur fictif avec des données déjà initialisées peut être un bon moyen de faire une démo très rapidement. |
| 76 | +C'est pour cela que durant le ENTRYPOINT, on réalise un **seed** qui injecte ces données fictives : |
| 77 | + |
| 78 | +- Utilisateur : |
| 79 | + - Email : jessem@mail.com |
| 80 | + - Mot de passe : 123 (Pas du tout sécurisé) |
| 81 | +- Les données de l'utilisateur (des calculs de besoins caloriques) trouvés à la page Historique. |
0 commit comments