Création d’une app pour la cantine (partie 1/4)

Baptiste Carlier
3 min readJan 13, 2020

--

Avant tout, un peu de contexte : ma fille est entrée en CP cette année.

Je me suis dit que cela serait sympa d’avoir une notification avant le repas du midi avec le menu de l’école afin savoir ce qu’elle mange. Notamment pour ne pas cuisiner à peu près la même chose le soir.

Le but serait de ne plus être forcé de consulter le PDF de la page Menu de la cantine du site de l’école.

Aller. Je me lance dans le dev d’une petite app Android juste pour moi.

NB : Quelques semaines plus tard, c’est en ligne sur le Play Store avec le compte de l’école. 🤓

Le but de cet article est de partager un peu la démarche du projet et son architecture globale.

1. Données & stockage via Firebase Cloud Firestore 📦

Première chose à gérer sur un projet mobile : d’où viennent les données ? Non évidemment il y a plein d’autres choses plus importantes comme : la sécurité, faire un produit à la fois utile et utilisable, avoir un business plan, … Mais le nerf de la guerre dans l’IT ce sont aussi les données.

Pour me simplifier la tâche, l’outil Firebase Cloud Firestore (qu’on appellera “Firestore” par la suite pour des raisons évidentes d’hygiène) m’a semblé être le plus pratique.

On peut dire ce qu’on veut mais la suite d’outils Firebase est plutôt sympa. Elle se complète chaque année avec de nouveaux produits. Firestore est lui-même assez récent.

Revenons à nos moutons : pourquoi utiliser Firestore ? Plusieurs points vont venir appuyer ma décision :

  • Firestore permet de stocker des données en ligne et de les synchroniser avec les utilisateurs
  • Une structuration des données simple et totalement suffisante pour mes données
  • Une mise à jour des données en direct si nécessaire
  • La librairie Android est simple à utiliser et efficace
  • Un support pour le mode hors-ligne
  • Il y a un ensemble de règles de sécurité pour gérer les accès lecture / écriture

En parlant de Firebase (et on va en reparler 😬), j’aurais aussi pu utiliser Firebase Realtime Database. Cependant, pas besoin de l’accès en temps réel qui caractérise Realtime Database. Donc je me suis orienté sur Firestore. Mais j’ai ouï-dire que c’était aussi très bien.

Le modèle simple

Sur Firestore, on a une hiérarchie simple pour les données :

  • Des collections
  • Des documents
  • Des données
    (ou des collections aussi)

Ce qu’il me faut au final est une liste de menu. Pas la peine d’aller plus loin. J’ai là exactement ce qu’il me faut.

Pas de base de données à implémenter

Je démarre donc un projet Android Studio, crée un projet Firestore, mets les données en ligne, fait mes objets pour le mapping dans l’application et c’est tout.

Pour simplifier mes développements et ne pas faire trop d’appels réseau, je profite du mode hors-ligne de Firestore pour ne récupérer les données qu’une fois pas jour si l’utilisateur ouvre l’app.

En somme : pas de base de données à mettre en place dans l’application grace à Firestore.

L’architecture à cette étape :

--

--