Swifty Companion
Application mobile — profil étudiant 42 via l’API Intra (OAuth2).
Dépôt de rendu école : ce dossier est la racine du dépôt Git Vogosphere. Pas de
docs/ni de sujet traduit ici (dépôt perso séparé).
État : partie obligatoire + bonus refresh token (401 → refresh → retry API).
Lancer le projet
cd swifty_companion
# Créer .env ici (voir .env.example à la racine du dépôt école)
flutter pub get
flutter run -d <device>
Le fichier .env doit être dans swifty_companion/.env (déclaré comme asset dans pubspec.yaml).
Vérifications :
flutter doctor
flutter devices
flutter analyze
flutter test
Configuration (.env)
- App OAuth : profile.intra.42.fr/oauth/applications
- Scopes :
public+projects(projets sur le profil) - Redirect URI (ex. téléphone) :
com.example.swiftycompanion://callback— identique sur l’Intra et dans.env - Ne jamais committer
.env
API : api.intra.42.fr/apidoc
Parcours app
- Se connecter avec 42 (token réutilisé pour toutes les requêtes)
- Rechercher un login
- Profil : photo, champs, skills (niveau + %), projets validés et failed
- Retour → nouvelle recherche
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 + 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 |
| 9 | OAuth2 — un token réutilisé |
Certaines données peuvent être masquées par l’API (confidentialité).
Bonus
- Refresh token :
IntraAuthService.refreshAccessToken()+ retry dansintraApiGetsur 401.
Soutenance — checklist peer-eval
| # | Test | Démo |
|---|---|---|
| 1 | flutter test |
Tests OK |
| 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 | UI lisible |
| 8 | Bonus | Refresh token si implémenté |
Ordre suggéré : connexion → profil → login faux → hors ligne → retour → flutter test.
Fichiers de ce dépôt
| Fichier | Rôle |
|---|---|
README.md |
Ce document |
.gitignore |
Exclut .env, build, etc. |
.env.example |
Modèle sans secrets |
swifty_companion/ |
Projet Flutter (lib/, android/, …) |