Files
swift_companion/swiftyCompanion
2026-09-30 08:24:20 +02:00
..
2026-09-30 08:24:20 +02:00
2026-09-29 14:26:17 +02:00
2026-09-29 09:39:56 +02:00
2026-09-30 08:24:20 +02:00

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)

  1. App OAuth : profile.intra.42.fr/oauth/applications
  2. Scopes : public + projects (projets sur le profil)
  3. Redirect URI (ex. téléphone) : com.example.swiftycompanion://callback — identique sur l’Intra et dans .env
  4. Ne jamais committer .env

API : api.intra.42.fr/apidoc

Parcours app

  1. Se connecter avec 42 (token réutilisé pour toutes les requêtes)
  2. Rechercher un login
  3. Profil : photo, champs, skills (niveau + %), projets validés et failed
  4. 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 dans intraApiGet sur 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/, …)