2024-02-16 22:51:50 +01:00
# P61 - Projet
## À propos
2024-02-23 16:21:17 +01:00
Application mobile en [React Native ](https://reactnative.dev/ ) pour le projet du module P61 Développement avancé.
2024-02-16 22:51:50 +01:00
2024-02-23 14:30:35 +01:00
Un tracker d'habitudes pour performer au boulot et dans la vie de tous les jours.
2024-02-23 16:21:17 +01:00
### Membres du Groupe 7
2024-02-16 22:51:50 +01:00
- [Théo LUDWIG ](https://git.unistra.fr/t.ludwig )
- [Haoxuan LI ](https://git.unistra.fr/haoxuan.li )
- [Maxime RUMPLER ](https://git.unistra.fr/m.rumpler )
- [Maxime RICHARD ](https://git.unistra.fr/maximerichard )
2024-03-15 22:48:28 +01:00
### Documentation
2024-03-16 00:36:44 +01:00
- [Sujet ](./docs/SUJET.md ) + [Cahier des charges ](./docs/CAHIER-DES-CHARGES.md )
2024-03-15 22:48:28 +01:00
- [Modèle Logique des Données (MLD) ](./docs/MLD.md )
2024-03-16 00:36:44 +01:00
- [Architecture ](./docs/ARCHITECTURE.md )
2024-03-15 22:48:28 +01:00
- [Conventions développement informatique ](./docs/CONVENTIONS.md )
#### Principaux Outils Informatiques Utilisés
- [TypeScript ](https://www.typescriptlang.org/ ): Langage de programmation.
2024-03-22 10:23:28 +01:00
- [React Native ](https://reactnative.dev/ ) + [Expo ](https://expo.io/ ): Framework pour le développement d'applications mobiles.
2024-03-15 22:48:28 +01:00
- [React Native Paper ](https://callstack.github.io/react-native-paper/ ): Bibliothèque de composants pour React Native.
2024-03-22 10:23:28 +01:00
- [React Hook Form ](https://react-hook-form.com/ ) + [Zod ](https://zod.dev/ ): Gestion des formulaires et validation des données.
2024-03-15 22:48:28 +01:00
- [Supabase ](https://supabase.io/ ): Backend, serveur d'API pour le stockage des données.
2024-03-16 00:36:44 +01:00
<!--
- [WatermelonDB ](https://nozbe.github.io/WatermelonDB/ ): Base de données locale, pour permettre une utilisation hors-ligne de l'application.
-->
2024-03-15 22:48:28 +01:00
2024-02-23 16:21:17 +01:00
## Développement du projet en local
### Prérequis
2024-02-16 22:51:50 +01:00
- [Node.js ](https://nodejs.org/ ) >= 20.0.0
- [npm ](https://www.npmjs.com/ ) >= 10.0.0
- [Expo Go ](https://expo.io/client )
2024-03-15 22:48:28 +01:00
- [Docker ](https://www.docker.com/ ) (facultatif, utilisé pour lancer [Supabase ](https://supabase.io/ ) en local)
2024-02-16 22:51:50 +01:00
2024-02-23 16:21:17 +01:00
### Installation
2024-02-16 22:51:50 +01:00
```sh
2024-02-23 16:21:17 +01:00
# Cloner le projet
git clone git@git.unistra.fr:rrll/p61-project.git
2024-03-15 22:48:28 +01:00
# Se déplacer dans le répertoire du projet
cd p61-project
# Configurer les variables d'environnement
cp .env.example .env
2024-02-23 16:21:17 +01:00
# Installer les dépendances
2024-02-16 22:51:50 +01:00
npm clean-install
```
2024-02-23 16:21:17 +01:00
### Lancer l'application
2024-02-16 22:51:50 +01:00
```sh
npm run start
2024-02-23 16:21:17 +01:00
```
2024-03-15 22:48:28 +01:00
### Lancer Supabase (facultatif)
2024-02-23 16:21:17 +01:00
2024-03-23 01:04:20 +01:00
Ce n'est pas strictement nécessaire pour le développement de l'application (même si recommandé), de lancer [Supabase ](https://supabase.io/ ) en local, car l'application est déjà déployée sur un serveur [Supabase ](https://supabase.io/ ) en production (`.env.example` est pré-configuré avec cet environnement).
2024-02-23 16:21:17 +01:00
```sh
2024-03-15 22:48:28 +01:00
npm run supabase
2024-02-16 22:51:50 +01:00
```
2024-03-22 10:23:28 +01:00
#### Principales Commandes Supabase
```sh
# Pour réinitialiser la base de données avec les données de test (seed.sql)
npm run supabase db reset
2024-03-23 01:04:20 +01:00
# Pour synchroniser le modèle (local) avec la base de données (remote)
2024-03-22 10:23:28 +01:00
npm run supabase db pull
2024-03-23 01:04:20 +01:00
# Pour synchroniser la base de données (remote) avec le modèle (local)
2024-03-22 10:23:28 +01:00
npm run supabase db push
# Pour générer les types TypeScript
npm run supabase gen types typescript -- --local > ./infrastructure/repositories/supabase/supabase-types.ts
# Crée un nouveau script de migration à partir des modifications déjà appliquées à votre base de données locale (remplacer `<name-of-migration>` avec le nom de la migration)
npm run supabase db diff -- -f < name-of-migration >
```