Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 

Repository files navigation

🌐 Adaverse

  • DurĂ©e : 2 semaine
  • Type de projet : seul / pair programming
  • Nom du repo : adaverse-[nom_github]

📩 ModalitĂ©s de rendu

Vous pouvez dĂ©velopper sur la branche main, mais le projet devra ĂȘtre livrĂ© sur deux branches distinctes :

  • stable → version complĂšte avec toutes les fonctionnalitĂ©s obligatoires, sans bonus.
  • bonus → version enrichie avec les fonctionnalitĂ©s bonus.

⚠ Important : Vous devez avoir poussĂ© (git push) votre dernier commit la veille de la soutenance Ă  minuit au plus tard, afin qu’il soit pris en compte pour l’évaluation.

🎯 Objectif du projet

Ce projet consiste Ă  dĂ©velopper une plateforme de visualisation de projets rĂ©alisĂ©s par les apprenant·e·s d’Ada. Chaque projet sera classĂ© par catĂ©gorie, correspondant Ă  un projet du programme Ada (ex. : Ada Quiz, Adaopte, Ada Check Events, etc.).

L’application sera fullstack, rĂ©alisĂ©e avec Next.js, TailwindCSS et TypeScript, et connectĂ©e Ă  une base de donnĂ©es hĂ©bergĂ©e sur Neon, via l’ORM Drizzle.

Les utilisateur·rice·s pourront proposer un projet via la page d’accueil, mais seul·e le·la dĂ©veloppeur·euse de la plateforme pourra valider et publier les projets pour qu’ils apparaissent sur le site.

đŸ§± Stack technique (obligatoire)

ÉlĂ©ment Technologie Lien
Framework fullstack Next.js https://nextjs.org/
Framework CSS TailwindCSS https://tailwindcss.com/
ORM Drizzle ORM https://orm.drizzle.team/
Base de données Neon https://neon.com/
Langage TypeScript https://www.typescriptlang.org/

⚙ Initialisation du projet

Installe l'ensemble des dépendances en suivant les documentations officielles.

Pour Next.js tu peux regarder cette section : https://nextjs.org/docs/app/getting-started/installation.

⚠ N'oublie pas de choisir tailwind et TypeScript pendant la configuration

Pour Neon, crée un projet, récupÚre la "connection string" de la base de données et copie la dans ton .env.

Enfin, pour Drizzle, tu peux suivre la documentation officielle pour Neon Ă  ce lien ou notre petit guide d'installation ici. Une fois la connection et le schĂ©ma créé, tu es prĂȘt⋅e pour coder !

🚀 DĂ©ploiement

Tu peux utiliser Vercel la plateforme officielle pour héberger les applications Next.js.

Attention, n'oublie pas de spĂ©cifier la variable d'environnement pour te connecter Ă  Neon sur Vercel (la mĂȘme que dans ton fichier .env).

💡 Pensez Ă  dĂ©ployer le plus tĂŽt possible, dĂšs qu’une version basique fonctionnelle existe.

🧰 PrĂ©-requis techniques

Pour mener à bien ce projet, il est nécessaire de maßtriser :

  • les bases du terminal
  • les bases du JavaScript
  • les bases du React
  • les bases du SQL
  • les bases du dĂ©veloppement backend

đŸ§© FonctionnalitĂ©s Ă  dĂ©velopper

⚠ RĂ©alisez toutes les fonctionnalitĂ©s obligatoires avant de passer aux bonus.

1. đŸ—‚ïž Conception de la base de donnĂ©es

Cette partie se réalise avec Drizzle ORM en créant le schéma de la base de données.

Tables Ă  concevoir

  • Table des projets Ada

    • Contient la liste des diffĂ©rents projets du programme Ada.
    • Chaque entrĂ©e correspond Ă  un type de projet officiel (ex. : Adaopte, Ada Quiz
).
    • Elle doit inclure un identifiant unique et un nom de projet clair et distinct.
  • Table des promotions Ada

    • Contient l’ensemble des promotions d’apprenant·e·s.
    • Chaque promo doit avoir un identifiant unique, un nom (ex. "Frida") et une date de dĂ©but.
  • Table des projets Ă©tudiantes / Ă©tudiants

    • ReprĂ©sente les projets rĂ©alisĂ©s par les apprenant·e·s pour un projet Ada donnĂ©.
    • Chaque projet doit inclure :
      • un titre clair,
      • une illustration pour avoir un visuel du projet
      • une adresse web personnalisĂ©e (slug) pour gĂ©nĂ©rer une URL propre,
      • un lien GitHub,
      • un lien vers la dĂ©mo en ligne,
      • une date de crĂ©ation (quand le projet est proposĂ©),
      • une date de publication (vide tant que le projet n’est pas validĂ©),
      • un lien vers la promotion,
      • un lien vers le projet Ada concernĂ©.

2. đŸŒ± CrĂ©ation d’une seed de donnĂ©es

Une seed permet d’ajouter des donnĂ©es de base dans la base de donnĂ©es.

Tùches à réaliser

  • CrĂ©er un script .sql pour insĂ©rer les promotions Ada
  • CrĂ©er un script .sql pour insĂ©rer les projets Ada
  • CrĂ©er un script .sql permettant de publier un projet (en mettant Ă  jour sa date de publication selon son identifiant)

3. đŸ’» IntĂ©gration sur le site

a. Formulaire de proposition de projet

  • Ajouter sur la page d’accueil / un bouton "Proposer un projet" dans le header.
  • Le bouton "Proposer un projet" ouvre une popup contenant un formulaire permettant de :
    • saisir le titre du projet,
    • renseigner les liens GitHub et de dĂ©mo,
    • choisir la promotion concernĂ©e,
    • choisir le projet Ada associĂ© (via des menus dĂ©roulants).
  • Attention, si le titre ou les liens de sont pas renseignĂ©s, le projet ne doit pas ĂȘtre créé et on doit afficher une erreur
  • Lorsqu’un·e utilisateur·rice valide le formulaire :
    • le projet est enregistrĂ© dans la base de donnĂ©es avec toutes les informations saisies,
    • la date de publication reste vide tant qu’il n’a pas Ă©tĂ© validĂ©.

b. Page d’accueil / : affichage des projets publiĂ©s

  • Afficher sur la page d’accueil la liste des projets publiĂ©s, regroupĂ©s par projet Ada.
  • Les projets doivent ĂȘtre rĂ©cupĂ©rĂ©s depuis le backend et triĂ©s par date de publication dĂ©croissante (le plus rĂ©cent en premier).
  • Les projets non publiĂ©s (date vide) ne doivent pas apparaĂźtre.
  • Chaque carte de projet doit afficher :
    • le titre du projet,
    • la date de publication,
    • la promotion correspondante,
    • une image du projet :
      • automatiquement rĂ©cupĂ©rĂ©e depuis le fichier thumbnail.png Ă  la racine du repo GitHub (rĂ©cupĂ©rĂ©e automatiquement avec l'url https://github.com/<user>/<repo>/blob/main/thumbnail.png?raw=true),
      • sinon, une image par dĂ©faut doit ĂȘtre affichĂ©e.

c. Page de dĂ©tail d’un projet

  • Cliquer sur un projet redirige vers une page de dĂ©tail.
  • Cette page doit afficher :
    • le titre du projet,
    • la promotion,
    • l’image du projet,
    • la date de publication,
    • le projet Ada associĂ©.
  • Elle doit Ă©galement contenir un lien pour afficher la dĂ©mo et un autre pour accĂ©der au Github du projet
  • Si on clique sur le logo, on doit revenir Ă  la page d’accueil.

đŸš« Ce que vous ne devez pas faire

  • Aucune gestion de connexion / inscription
  • Pas d’upload d’images
  • Pas de commentaires
  • Pas de favoris
  • Pas d’interface d’administration

💎 Bonus possibles

  • Faire une vraie gestion d'erreur pour vĂ©rifier les liens github et de dĂ©mo
  • RĂ©cupĂ©rer des informations GitHub (ex. nombre d’étoiles, commits, contributeur·rice·s
) pour enrichir la page de dĂ©tails.
  • Ajouter des filtres et des options de tri avancĂ©es pour la recherche.
  • AmĂ©liorer l’accessibilitĂ© du site.
  • Ajouter un dark mode ou d’autres paramĂštres de personnalisation.
  • Ajouter des champs supplĂ©mentaires aux projets pour enrichir les donnĂ©es affichĂ©es.
  • ComplĂ©ter la table des projets Ada avec des informations supplĂ©mentaires (stack utilisĂ©e, thĂšme, description, etc.).
  • Compter le nombre de vue par projet
  • Faire un dashboard pour visualiser les vues
  • AmĂ©liorer le design global : landing page, animations, transitions fluides, par exemple en intĂ©grant ce design :

✅ ModalitĂ© d'Ă©valuation

L’évaluation se dĂ©roulera sous forme de soutenance. L'apprenante devra prĂ©senter une partie des fonctionnalitĂ©s sur lesquelles iel a travaillĂ©.

Chaque personne devra ĂȘtre capable :

  • d’expliquer clairement son code Ă  l’oral,
  • de rĂ©aliser une dĂ©monstration fonctionnelle,
  • de naviguer aisĂ©ment dans son code durant la prĂ©sentation.

Cette premiĂšre partie durera environ 10 minutes.

Ensuite, l'apprenante répondra à des questions techniques, afin de vérifier ses compétences (basées sur le référentiel Compétences à acquérir ci-dessous). Cette phase durera environ 5 minutes.

🎓 CompĂ©tences Ă  acquĂ©rir

Back / BDD

  • Je sais intĂ©grer et utiliser une ORM avec NextJS
  • Je sais connecter mon ORM avec ma base de donnĂ©es
  • Je sais crĂ©er une base de donnĂ©e Ă  partir d'un schĂ©ma
  • Je sais visualiser et modifier des donnĂ©es dans la base de donnĂ©es
  • Je comprends le fonctionnement d'un ORM (mapping object relationnel)
  • Je sais modĂ©liser une base de donnĂ©es Ă  partir d'un Ă©noncĂ©
  • Je comprends les avantages et les inconvĂ©nients que l'ORM apporte
  • J'arrive Ă  implĂ©menter mon ORM dans mon code
  • Je sais rĂ©cupĂ©rer des donnĂ©es venant de plusieurs tables avec l'ORM (foreign keys)
  • Je sais faire un CRUD de ma donnĂ©e avec mon ORM
  • Je sais crĂ©er des routes api et des composants serveur dans NextJS
  • Je sais crĂ©er et exĂ©cuter des migrations
  • Je sais crĂ©er et manipuler des forms actions

Front

  • Je peux crĂ©er une page dans NextJS
  • Je comprends l'utilitĂ© du "use client"
  • Je comprends comment et quand utiliser useState et useEffect
  • Je sais fetch des routes API depuis une page NextJS
  • Je sais dĂ©couper le code de mon projet en plusieurs fichiers
  • Je comprends le systĂšme de routes de NextJS
  • Je sais crĂ©er des routes dynamiques avec des paramĂštres d'URL
  • Je sais rĂ©cuperer le paramĂštre avec params
  • Je sais comment utiliser Link pour naviguer entre les pages cĂŽtĂ© client
  • Je sais faire la diffĂ©rence entre une route statique et dynamique
  • Je sais appliquer du style Ă  mes composants avec tailwind
  • Je sais crĂ©er un dialogue

About

grace-adaverse-Sammyhein created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages