Files
swift_companion/swiftyCompanion/README.md
2026-09-29 08:55:59 +02:00

82 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Swifty Companion — dépôt de rendu (42)
Dossier destiné au **code évalué** en soutenance. Inspiré des README `mobileModuleXX/` de [piscine_mobile](../../piscine_mobile/README.md), version **allégée**.
## Contenu attendu
| É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) |
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 :
```bash
cd swiftyCompanion
flutter create swifty_companion
cd swifty_companion
flutter run -d <device>
```
Vérifier l’environnement :
```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).
## Secrets — `.env`
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`).
Variables typiques : `CLIENT_ID`, `CLIENT_SECRET`, `REDIRECT_URI` (adapter au package / schéma OAuth de ton app).
## 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** |
| 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 |
OAuth : **Intra OAuth2** — voir doc API 42.
## Bonus (si obligatoire parfait)
- Renouvellement automatique du token à expiration ; l’app reste utilisable.
## Récapitulatif correction (peer-eval)
| # | 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 |
| 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 |
**Ordre de démo suggéré :** login valide (toi ou un pair) → parcours skills / projets → login faux → couper le réseau → retour recherche.
## Liens
- Index projet : [README racine](../README.md)
- Plan pas à pas : [docs/pedagogie/README.md](../docs/pedagogie/README.md)