Aller au contenu principal

🎬 Mise en situation

Vous venez de démarrer une startup avec vos collègues du Cégep afin de développer une nouvelle application Web.

Votre concept est simple, mais ambitieux: créer une application web qui fusionnera les aspects de communauté, de discussion et de partage de contenu de Discord et de Reddit. Vous avez choisi d'appeler cette dernière Discreddit 👀.

Bien qu'il s'agisse d'une application Web, vous savez que vous devrez éventuellement offrir des versions natives de votre application pour les différentes plateformes comme macOS, Windows, iOS ou Android. Vous optez donc pour une architecture basée sur un serveur de données (API), séparant ainsi la logique serveur de l'interface utilisateur, ce qui vous donnera un max de flexibilité dans le futur.

En effet, une API permet de centraliser les données et ensuite de les exposer facilement à une application ou un site Web. On sépare ainsi, d'une certaine façon, la couche données de la couche présentation.

Vous n'avez cependant pas encore toute l'expertise permettant de développer une API et n'êtes pas certain à 100% des spécifications qu'aura cette dernière. Vous décidez donc d'opter dans un premier temps pour une solution simple afin de vous permettre de commencer le développement de l'application: utiliser Supabase comme source de données et API. En effet, grâce à Supabase et son API REST, vous pouvez y stocker et récupérer les informations dont vous avez besoin: fils de discussion, commentaires, etc.

La première étape consistera à développer un prototype de l'application en utilisant Supabase comme source de données. Cela vous évitera d'avoir à construire votre propre API et donc vous permettra de vous concentrer sur le développement de la portion client de l'application. Ce prototype n'offrira pas de création de comptes avec nom d'usager et mot de passe et permettra plutôt de choisir simplement un pseudonyme au lancement de l'application.

Vous avez choisi Angular comme framework pour le client, car il offre une excellente structure de base et permettra de développer rapidement une première version de l'application.

Dans un second temps, vous développerez votre propre API et vous connecterez votre application client avec cette dernière plutôt qu'avec Supabase.

Comme vous êtes plusieurs dans l'entreprise, vous avez décidé de diviser le groupe en plusieurs équipes. Chaque équipe est responsable de créer un prototype, ce qui permettra de voir plusieurs approches et choisir une direction finale.

Vous serez en équipe de 2 ou 3 coéquipiers.

  • Une équipe de deux devra minimalement implémenter la portion Discord. Ainsi, vous n'avez pas à développer l'entièreté de l'application.
  • Une équipe de 3 devra compléter autant Discord que Reddit, soit l'application complète.
attention

Si vous préférez être seuls, cela est autorisé. Vous aurez cependant à faire le même projet qu'une équipe de deux puisque le concept de projet est bâti pour être fait en équipe.

Vous devrez tout de même utiliser git pour développer et remettre votre projet.

Les fonctionnalités minimales devront être développées (par exemple: serveurs, canaux et chat pour Discord), en plus d'une fonctionnalité surprise de votre choix. Voir fonctionnalités requises plus bas pour plus d'information.

Approche

Le développement peut s'effectuer en équipe de 2 ou 3 personnes.

Règles pour une équipe de 2

Pour une équipe de 2, vous ferez l'implémentation de la portion Discord.

Règles pour une équipe de 3

Pour une équipe de 3, vous aurez à développer l'application complète Discreddit, soit Discord ET Reddit.

Fonctionnalités requises

attention

Il s'agit des fonctionnalités principales, veuillez vous référer à la remise intermédiaire (mi-session) ou finale (fin de session) pour le détail des fonctionnalités et des spécifications.

  • Général
    • Authentification et gestion des droits d'accès
    • L'entrée de texte pour les messages de chat (Discord) ou la discussion (Reddit) doit accepter du Markdown et lors de l'affichage du contenu texte relié, le Markdown transformé au format HTML doit être affiché.
    • Mise à jour via polling des messages (Discord) ou des commentaires (Reddit)
  • Discord
    • Gestion des serveurs
    • Gestion des canaux
    • Messages (chat)
    • Une option de filtre ou de recherche
    • Une fonctionnalité supplémentaire de votre choix
  • Reddit
    • Gestion des subs (communautés)
    • Gestion des posts (publications)
    • Commentaires sur les posts
    • Une option de filtre ou de recherche
    • Une fonctionnalité supplémentaire de votre choix

Autant pour la portion Discord que Reddit, au minimum le chat ou les commentaires devront utiliser une composante réutilisable.

Journal d'aventure

  • Mission 1: Tester l'API REST Supabase et compréhension du projet
  • Mission 2: Revue d'itération et autoévaluation
  • Mission 3: Développer la portion client de l'application en utilisant Supabase comme source de données
  • Mission 4: Revue d'itération et autoévaluation
  • Mission 5: Développer l'API côté serveur et connecter l'application client avec l'API