06. Technologies - Iziclock/T304-Projet-Integration_IziClock GitHub Wiki

Technologies

Backend : GoLang

  • Go étant un langage compilé, il est plus rapide que les langages interprétés.
  • Go fonctionne via des goroutines légères qui le rend parfait pour un système qui doit traiter des événements en temps réel, comme la gestion des alarmes et la communication avec un serveur.
  • Go est bien intégré dans les plateformes cloud. Puisque nous envisageons d’héberger l'état des alarmes sur un serveur cloud, Go offre de nombreuses bibliothèques et services pour faciliter cette intégration.
  • Go est conçu pour la scalabilité. Dans le cas où nous voudrions multiplier le nombre de clients, Go pourrait répondre à ces exigences sans trop de complexité en termes d’optimisation.
  • Go attire de plus en plus et prend une réelle place dans le marché du backend global.

Sources

Frontend : Ionic Angular

  • Ionic permet de développer des applications mobiles hybrides qui fonctionnent à la fois sur Android et iOS en un seul code. La plateforme devant être mobile, c'est un vrai atout.
  • Angular est un framework qui se base sur la structure et la robustesse et offre une architecture claire avec des composants réutilisables. Cela simplifie la gestion de la logique de l'application pour pour gérer les alarmes, les calendriers, et les interactions avec le serveur.
  • Ionic a beaucoup de plugins qui permettent d'accéder aux fonctionnalités natives des OS mobiles (notifications, géolocalisation, stockage local, etc.). La géolocalisation ou l'utilisation de notification est obligatoire et importante au projet.
  • Ionic Angular est conçu pour fonctionner avec des API REST. C'est essentiel pour la communication avec le backend (Go dans ce cas), pour synchroniser l'état des alarmes avec le serveur et le réveil physique.
  • Ionic propose de manière native des composants d'interface utilisateur prêts à l'emploi pour les différentes plateformes. Cela accélère le développement.
  • Ionic a beaucoup évolué pour améliorer les performances des applications mobiles, en particulier avec Angular, qui a optimisé le rendu et la gestion des données en temps réel.

Sources

Base de données : PostgreSQL

  • PostgreSQL est reconnu pour sa robustesse et sa capacité à gérer des bases de données complexes de manière fiable. Dans notre cas, la gestion des alarmes et des calendriers nécessite une précision et une intégrité des données.
  • L'application aura besoin de gérer différentes sortes de données (alarme, événements de calendriers, utilisateur, alarme, ...). PostgreSQL prend en charge les données relationnelles classiques, mais aussi des formats non structurés comme JSON, ce qui permet plus de flexibilité dans la gestion des données issues de différents calendriers en ligne.
  • PostgreSQL offre des fonctionnalités telles que les vues, les triggers, et les procédures stockées qui peuvent être utiles pour automatiser certaines tâches, comme la mise à jour des statuts des alarmes.
  • PostgreSQL est extensible grâce à des modules supplémentaires. Par exemple, il propose PostGIS pour la gestion des données géospatiales, ce qui pourrait être utile puisque l'application devra gérer des événements basés sur la localisation.
  • PostgreSQL est gratuit et open source, ce qui réduit les coûts de développement.
  • Il existe de nombreux drivers et outils pour intégrer PostgreSQL avec Go, Ici "pgx" sera utilisé. C'est important de créer une relation entre backend et la base de données pour la gestion des événements d'alarme.

Sources

Matériel Electronique :

  • Bread Board (à rendre)
  • Chargeur à induction
  • Module Wi-Fi (à rendre)
  • Module Bluetooth (à rendre)
  • Raspberry Pi 4 (à rendre)
  • Haut parleur
  • Écran LCD

Serveurs : PulseHeberg