# Swifty Companion Application mobile — profil étudiant 42 via l’**API Intra** (OAuth2). > **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. **État :** OAuth + vue recherche + vue profil (skills, projets). Prochaine étape : polish layout / tests device (dépôt de travail : `docs/pedagogie/00-reprise-et-etat.md`). ## Lancer le projet ```bash cd swifty_companion # Seul ce fichier compte pour Flutter (asset .env) : # swifty_companion/.env # Optionnel : copie de sauvegarde dans swiftyCompanion/.env — garder les deux identiques. flutter pub get flutter run -d ``` Écrans : **connexion OAuth 42** → **recherche par login** → **profil** (photo, champs, skills, projets validés / failed). Vérifications : ```bash flutter doctor flutter devices ``` ## Configuration (`.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`) Documentation API : [api.intra.42.fr/apidoc](https://api.intra.42.fr/apidoc) ## Partie obligatoire (rappel sujet v4) | # | 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** 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 | Contraintes : dernière API 42 disponible ; secrets uniquement en local (`.env`). Certaines données peuvent ne pas être affichées (confidentialité / réglementation). ## Bonus - Rafraîchissement du token à expiration ; l’application reste fonctionnelle. *(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 ` | 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 | UI lisible | | 8 | Bonus | Refresh token si implémenté | **Ordre suggéré :** login valide → skills / projets → login faux → hors ligne → retour recherche. ## Fichiers de ce dépôt | 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) |