Contexte
M.Rivière, ancien chef de cuisine étoilé, a créé CookFusion Lab, une entreprise qui a pour but de se spécialiser dans la création de contenus culinaires interactifs. Il souhaite développer une plateforme permettant aux passionnés de cuisine de partager des recettes, d’apprendre des techniques culinaires, et même de participer à des défis culinaires en ligne. L’idée est de créer une communauté dynamique où les utilisateurs peuvent découvrir des recettes innovantes, échanger avec d’autres cuisiniers amateurs, et se perfectionner dans leur passion pour la cuisine.
Pour se faire connaître et développer son projet, il anime des cours de cuisine afin de faire découvrir de nouvelles recettes à différentes personnes.
Pour cela, il possède un atelier, véritable cuisine organisée pour une dizaine de participants, où tout le monde bénéficie :
- d’un plan de travail individuel
- d’un poste de cuisson
- d’appareils électroménagers
- de l’ensemble des accessoires nécessaires à la réalisation des recettes
CookFusion Lab propose des sessions de cours en fonction de la disponibilité du chef le matin et/ou l’après-midi.
- Le matin, la recette proposée est plutôt rapide, « express ».
- L’après-midi, la recette proposée est souvent plus technique, dite « gourmet », avec des produits de saison.
CookFusion Lab rencontre du succès et M. Rivière ne peut plus répondre comme il faut à la demande, car la proposition des recettes se fait par affichage dans l’atelier et les personnes doivent se rendre sur place pour connaître le planning, la recette et le prix.
NovaSys Solutions est une Entreprise de Services du Numérique (ESN) spécialisée dans le développement d’applications web modernes. Elle fournit des ressources, du savoir-faire technique, et des équipes projets pour accompagner les entreprises clientes dans leurs projets de transformation numérique. En tant que stagiaire dans cette entreprise, vous êtes chargé(s) de réaliser cette demande.
Formulation du besoin
Rivière souhaite moderniser la gestion et la promotion de ses cours de cuisine afin de faire face à une demande croissante. Actuellement, les informations concernant les recettes et les sessions de cours sont affichées uniquement dans l’atelier, obligeant les clients à se déplacer pour consulter les plannings et s’inscrire. Ce fonctionnement n’est plus adapté à l’évolution de l’activité.
Pour répondre à cette problématique, deux outils numériques doivent être développés :
Une application mobile Android, destinée à M. Rivière, permettant de :
- Enregistrer les recettes avec leur description et leur type (entrée, plat, dessert),
- Gérer les sessions de cours (création, modification, suppression),
- Travailler en mode hors-ligne, avec une synchronisation des données via une API vers la base de données centrale du site.
Un site web vitrine destiné au public, permettant aux utilisateurs :
- De consulter les recettes disponibles avec tous leurs détails,
- De visualiser les sessions proposées avec les informations pratiques (date, horaire, prix, recette),
- De s’inscrire à une session,
- De disposer d’un espace d’administration sécurisé pour gérer recettes et sessions (CRUD complet).
Ces deux solutions devront communiquer via une base de données MySQL centralisée. Une architecture MVC sera mise en place pour le site, associée à une couche DAO pour l’accès aux données. L’application mobile devra intégrer un système de déversement des données vers le site pour assurer la cohérence entre les plateformes.
Organisation
- Une équipe de 4 personnes doit être constituée (2 personnes sur la partie mobile avec Android Studio et 2 personnes sur la web avec Netbeans).
- L’organisation du travail doit s’appuyer sur les tâches à réaliser, leur affectation et l’état d’avancement, mis à jour à chaque séance de projet.
- Un Gantt prévisionnel et un Gantt réel associé (20 heures de projet) doivent être établis.
- La partie liée aux données et les choix d’ergonomie doivent être validés par l’enseignant ; proposer des maquettes des futures interfaces.
J’ai travaillé sur la partie Android en binôme avec une autre personne. Nous nous sommes partagé les tâches sur les recettes et une autre sur les sessions. J’ai donc travaillé sur la partie qui concerne les sessions de cours. De plus nous n’avons pas abouti à la communication de la base données local (application mobile) et de la base données distante (serveur mysql).
Fonctionnalité / Explication projet
Fonctionnalités
Les architectures MVC et DAO doivent être respectées.
Structure du projet:
Une page d’accueil
Elle doit contenir :
Un titre : « Atelier Cuisine »
- Un menu contenant les entrées suivantes : « Les recettes », « Les session »
Page présentant le détail de la recette
Elle doit contenir :
- Toutes les informations sur la recette, et son type (entrée, plat ou dessert)
Page présentant des sessions
Elle doit contenir :
- la date du cours
- la ou les recette proposée
une page de détails d’une sessions contenant :
- la date du cours
- l’heure de début
- l’heure de fin
- le prix
Après une connexion sécurisée, il doit être possible de gérer les recettes et les sessions de cours (CRUD).
Extrait de la base de données
Modèle relationnel des données de l’application mobile (MRD)
Recette (NumRecette, libelleRecette, description, numType)
- Clé primaire : NumRecette
- Clé étrangère : NumType → Type.NumType
Type (NumType, libelleType)
- Clé primaire : NumType
SessionCours (NumSession, DateSession, heureDebut, heureFin, prix)
- Clé primaire : NumSession
Proposer (NumRecette, NumSession)
- Clé primaire : (NumRecette, NumSession)
- Clé étrangère : NumRecette → Recette.NumRecette
- Clé étrangère : NumSession → SessionCours.NumSession
Modèle Conceptuelle des données (MCD)
Structure du code de l’application mobile

Diagramme de classe de l’application mobile avec les classes métiers et techniques
zoom sur les classes techniques
zoom sur les classes métiers
Capture d’écran : Recette
Connexion (activity_main) | Proposition (activity_proposition) |
![]() | ![]() |
Liste des Recettes (activity_consulter_recette) | Détails d’une recette (activity_details_recette) |
![]() | ![]() |
Capture d’écran : Sessions
Afficher liste des sessions (activity_sessions) | Ajouter une session (activity_ajouter_session) |
![]() | ![]() |