first commit

This commit is contained in:
2026-09-29 08:55:59 +02:00
commit 987519da5f
12 changed files with 390 additions and 0 deletions

81
swiftyCompanion/README.md Normal file
View File

@@ -0,0 +1,81 @@
# 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)