Files
swift_companion/swiftyCompanion/README.md
2026-09-29 14:26:17 +02:00

84 lines
3.1 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
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 :** projet Flutter dans le sous-dossier `swifty_companion/`. Prochaine étape : OAuth Intra (dépôt de travail : `docs/pedagogie/etape-02-oauth-intra.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 <device>
```
Écran actuel : **connexion OAuth 42** puis affichage du login (`/v2/me`).
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 <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é :** 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) |