🛰 Projet. Créer votre application.
Sujet
Créer une application Flutter qui fonctionne aussi bien sur Android que sur iOS.
Vous devrez créer une application permettant de s'attribuer des objets mais aussi de savoir à qui appartient un objet grâce à du NFC et un Back-end. L'application permettra également de prendre des photos et de lier une ou plusieurs photographies à un objet.
Vous êtes en Master maintenant et on attend de vous que vous ayez une vision plus globale des systèmes que vous allez concevoir et développer. C'est pourquoi, dans ce projet vous allez réaliser le back-end et le front-end.
Materiel requis :
- Un ou plusieurs tag NFC (fournis, à rendre en fin de projet)
- Au moins 1 smartphone iOS (si iOS vous aurez besoin d'un mac aussi) ou Android.
🏗 Architecture
Basez vous sur le schéma suivant pour comprendre ce que l'on attend de votre système.
🍿Le back-end
Grace à ce que vous avez appris lors du module de déploiement des solutions, vous devrez :
- Mettre en place un back-end Strapi avec une base de données 🐘 Postgres
- Déployer le tout sur Heroku
- Utiliser un serveur de stockage S3 pour les images (fourni)

L'application mobile doit être capable de scanner des tags NFC, sur Android et iOS, de prendre des photos puis d'envoyer les informations à votre back-end.
Vous devrez donc définir correctement les modèles de données sur l'application et sur le back-end, gérer le flux de données et les envois d'image.
Si vous vous débrouillez bien, le back-end ne nécessite aucune ligne de code, que de la configuration.
📱L'application
Utiliser les maquettes fournies pour éviter de perdre du temps en conception
Il se peut que vous deviez ajouter / modifier les interfaces en fonction de contraintes de développement ou de vos choix, mais ne déviez pas trop, vous n'aurez pas le temps.
Les images
- La prise de photo sur le téléphone doit se faire via une interface que vous aurez créé vous (pas d'utilisation du sélecteur d'image par défaut du système) et qui utilise le flux vidéo de la caméra.
- L'envoi et la reception d'image ne doit pas se faire en base64, vous devrez gérer du binaire (Multipart ou binary body).

Natif
Puisque vous allez toucher à des fonctionnalités bas niveau du framework de chaque système, vous devrez modifier un peu de configuration native, donc lisez bien la documentation des bibliothèques pour le NFC et la caméra, mais aussi pour le réseau !
🆙 Upload d'image sur Strapi
Vous devrez configurer l'upload des fichier sur Strapi :
Nous avons mis en place un bucket Scaleway pour vous. Heroku ne garanti pas la conservation des fichiers images ou SQLite puisque l'environnement se détruit / se reconstruit aléatoirement.
- Il faudra utiliser le plugin
Upload
de Strapi quand vous en serez là demander moi les identifiants du bucket s3 et nous pourrons mettre ca en place. - Il est possible (et recommandé) d'utiliser le `plugin provider` suivant : https://github.com/team-appforge/strapi-provider-upload-scaleway qui va vous faciliter la tâche
🪝Points importants
- L'application ne nécessite pas de compte pour fonctionner
- Pensez à autoriser le Role
public
a upload des images et poster des produits dansStrapi
- Pensez à autoriser le Role
- Utilisez les api d'asynchronicité de Flutter (Stream et Future) et comprenez les, pour l'examen finale il y aura des questions dessus.
- Pas de mode hors-ligne demandé, mais pour sauvegarder les identifiants de vos objets sur l'app il faudra surement utiliser les
sharedPreferences
Modalités
- 🙌 Travail par équipe de 4 maximum.
- 🗓 A rendre pour le 3 Décembre.
- Exercice bonus : Quand un tag est scanné, la localisation de l’appareil est envoyé au serveur pour prévenir le propriétaire via une notification push. Si vous faites ca proprement en plus de l'app vous aurez facilement 5 points de plus sur le module.
Rendus

Sur Teams seront attendus :
- Les liens de vos répertoires git pour le projet
- 1 repertoire pour l'application
- 1 pour la partie serveur.
- Une démonstration de l'application sous forme de vidéo
- L'URL du serveur (en ligne et accessible)
- L'URL de la documentation d'API du serveur
Pour l'évaluation il est pris en compte l'aspect sécurité, ne versionnez jamais des identifiants de connexion, ou des clés d'API !
📹 Pour la vidéo
- La vidéo de présentation doit permettre de montrer que votre système gère un scénario de récupération d'un tag (objet de quelqu'un d'autre trouvé par vous).
- Un scénario d'attribution d'un tag (objet) avec un mot de passe, des photos de l'objet et les informations du propriétaire.
🎤 Présentation finale le 3 Décembre :
Présentez votre solution, tout le monde doit parler, les personnes ayant travaillé le back-end devront expliquer le front-end et inversement.
Avec une démo fonctionnelle 🔥
Ressources pour réaliser le projet
- Insomnia ou Postman pour tester votre API
- Strapi et Heroku
- Content API dans Strapi
- Flutter et le NFC (Pensez à bien utiliser l'app d'exemple du package)
- Pub.dev - http, Camera, nfc_manager
- Générer votre documentation d'API
- Generer un UUID depuis Dart
- Upload d'un objet et d'une ou plusieurs images dans la même requête avec Strapi
Déploiement sur le Play Store

Bonus : Vous pourrez déployez votre app sur le PlayStore, nous vous prêteront notre compte développeur Google
Rendez vous ici pour deployer votre application sur le Playstore.