guidephase3
This commit is contained in:
@@ -1,81 +1,78 @@
|
||||
# Swifty Companion — dépôt de rendu (42)
|
||||
# Swifty Companion
|
||||
|
||||
Dossier destiné au **code évalué** en soutenance. Inspiré des README `mobileModuleXX/` de [piscine_mobile](../../piscine_mobile/README.md), version **allégée**.
|
||||
Application mobile — profil étudiant 42 via l’**API Intra** (OAuth2).
|
||||
|
||||
## Contenu attendu
|
||||
> **Dépôt de rendu école** : ce dossier est conçu pour être la **racine** du dépôt Git déposé sur l’Intra. Il ne contient pas la documentation de travail (sujet traduit, guides) du dépôt perso.
|
||||
|
||||
| Élément | Détail |
|
||||
|---------|--------|
|
||||
| **Dossier de rendu** | `swiftyCompanion/` (ce répertoire) |
|
||||
| **Projet** | Application mobile (Flutter recommandé après la piscine) — nom suggéré : `swifty_companion` |
|
||||
| **Sujet** | [docs/sujets/swifty-companion.md](../docs/sujets/swifty-companion.md) |
|
||||
**État :** projet Flutter dans le sous-dossier `swifty_companion/`. Prochaine étape : OAuth Intra (dépôt de travail : `docs/pedagogie/etape-02-oauth-intra.md`).
|
||||
|
||||
Le dépôt Git à la racine `swifty_companion/` peut aussi contenir `docs/` ; **seul ce qui est dans le repo** compte à la soutenance — garde ici tout le nécessaire pour `flutter run`.
|
||||
|
||||
## Création du projet (quand tu es prêt — étape 1)
|
||||
|
||||
Depuis ce dossier :
|
||||
## Lancer le projet
|
||||
|
||||
```bash
|
||||
cd swiftyCompanion
|
||||
flutter create swifty_companion
|
||||
cd swifty_companion
|
||||
flutter pub get
|
||||
flutter run -d <device>
|
||||
```
|
||||
|
||||
Vérifier l’environnement :
|
||||
Vérifications :
|
||||
|
||||
```bash
|
||||
flutter doctor
|
||||
flutter devices
|
||||
```
|
||||
|
||||
Doc détaillée machine : [piscine_mobile — Ubuntu natif](../../piscine_mobile/docs/pedagogie/flutter/09-ubuntu-natif-dev-android.md).
|
||||
## Configuration (`.env`)
|
||||
|
||||
## Secrets — `.env`
|
||||
1. Créer une app OAuth : [profile.intra.42.fr/oauth/applications](https://profile.intra.42.fr/oauth/applications)
|
||||
2. Copier `.env.example` → `.env` et renseigner `CLIENT_ID`, `CLIENT_SECRET`, `REDIRECT_URI`
|
||||
3. Ne **jamais** pousser `.env` sur le dépôt école (déjà ignoré par `.gitignore`)
|
||||
|
||||
1. Créer une application sur [profile.intra.42.fr/oauth/applications](https://profile.intra.42.fr/oauth/applications).
|
||||
2. Copier [`.env.example`](../.env.example) vers `.env` **à la racine du repo** ou dans `swifty_companion/` (selon où tu charges les variables).
|
||||
3. Ne **jamais** committer `.env` (déjà dans `.gitignore`).
|
||||
Documentation API : [api.intra.42.fr/apidoc](https://api.intra.42.fr/apidoc)
|
||||
|
||||
Variables typiques : `CLIENT_ID`, `CLIENT_SECRET`, `REDIRECT_URI` (adapter au package / schéma OAuth de ton app).
|
||||
## Partie obligatoire (rappel sujet v4)
|
||||
|
||||
## Critères obligatoires (rappel)
|
||||
|
||||
| # | À montrer en soutenance |
|
||||
|---|-------------------------|
|
||||
| 1 | ≥ 2 vues |
|
||||
| 2 | Erreurs gérées : login inconnu, réseau, etc. |
|
||||
| 3 | Vue 2 : infos du login si existant |
|
||||
| 4 | ≥ 4 champs (login, email, mobile, level, location, wallet, evaluations…) + **photo** |
|
||||
| # | Exigence |
|
||||
|---|----------|
|
||||
| 1 | Au moins **2 vues** |
|
||||
| 2 | **Toutes** les erreurs gérées (login inconnu, réseau, …) |
|
||||
| 3 | Vue 2 : infos du login s’il **existe** |
|
||||
| 4 | **≥ 4 détails** (login, email, mobile, level, location, wallet, evaluations, …) + **photo de profil** |
|
||||
| 5 | **Skills** : niveau + pourcentage |
|
||||
| 6 | **Projets** terminés, **y compris failed** |
|
||||
| 7 | Retour vers la vue 1 |
|
||||
| 8 | Layout adaptatif (tailles / plateformes) |
|
||||
| 9 | **Un seul token OAuth** réutilisé — pas un token par requête API |
|
||||
| 6 | **Projets** réalisés, **y compris les failed** |
|
||||
| 7 | Retour possible vers la **vue 1** |
|
||||
| 8 | Layout **adaptatif** (tailles / plateformes) |
|
||||
| 9 | **OAuth2 Intra** — **un token réutilisé**, pas un token par requête |
|
||||
|
||||
OAuth : **Intra OAuth2** — voir doc API 42.
|
||||
Contraintes : dernière API 42 disponible ; secrets uniquement en local (`.env`).
|
||||
|
||||
## Bonus (si obligatoire parfait)
|
||||
Certaines données peuvent ne pas être affichées (confidentialité / réglementation).
|
||||
|
||||
- Renouvellement automatique du token à expiration ; l’app reste utilisable.
|
||||
## Bonus
|
||||
|
||||
## Récapitulatif correction (peer-eval)
|
||||
- Rafraîchissement du token à expiration ; l’application reste fonctionnelle.
|
||||
|
||||
| # | Test | Démo rapide |
|
||||
|---|------|-------------|
|
||||
| 1 | `cd swifty_companion && flutter test` | Tests passent (si tu en ajoutes) |
|
||||
| 2 | `flutter run -d <device>` | Vue 1 : saisie login valide → vue 2 |
|
||||
| 3 | (même session) | Vue 2 : photo + ≥ 4 infos + skills + projets (dont failed) |
|
||||
| 4 | Login invalide | Message d’erreur clair, pas de crash |
|
||||
| 5 | Hors ligne / API coupée | Erreur réseau gérée |
|
||||
*(Bonus évalué seulement si la partie obligatoire est parfaite.)*
|
||||
|
||||
## Soutenance — checklist peer-eval
|
||||
|
||||
| # | Test | Démo |
|
||||
|---|------|------|
|
||||
| 1 | `flutter test` | Tests OK (si présents) |
|
||||
| 2 | `flutter run -d <device>` | Vue 1 → login valide → vue 2 |
|
||||
| 3 | Profil | Photo + ≥ 4 champs + skills + projets (dont failed) |
|
||||
| 4 | Login invalide | Message clair, pas de crash |
|
||||
| 5 | Réseau coupé | Erreur réseau gérée |
|
||||
| 6 | Navigation | Retour vue 1, nouvelle recherche |
|
||||
| 7 | Petit écran / rotation (si possible) | UI lisible (layout flexible) |
|
||||
| 8 | Bonus uniquement si tout OK | Laisser expirer le token ou forcer refresh → app toujours OK |
|
||||
| 7 | Petit écran / rotation | UI lisible |
|
||||
| 8 | Bonus | Refresh token si implémenté |
|
||||
|
||||
**Ordre de démo suggéré :** login valide (toi ou un pair) → parcours skills / projets → login faux → couper le réseau → retour recherche.
|
||||
**Ordre suggéré :** login valide → skills / projets → login faux → hors ligne → retour recherche.
|
||||
|
||||
## Liens
|
||||
## Fichiers de ce dépôt
|
||||
|
||||
- Index projet : [README racine](../README.md)
|
||||
- Plan pas à pas : [docs/pedagogie/README.md](../docs/pedagogie/README.md)
|
||||
| Fichier | Rôle |
|
||||
|---------|------|
|
||||
| `README.md` | Ce document (correcteurs / peer-eval) |
|
||||
| `.gitignore` | Règles Git pour le rendu école |
|
||||
| `.env.example` | Modèle de variables (sans secrets) |
|
||||
| `lib/`, `android/`, … | Code Flutter (après `flutter create` ou développement) |
|
||||
|
||||
Reference in New Issue
Block a user