- Durée : 2 semaine
- Type de projet : seul / pair programming
- Nom du repo :
adaverse-[nom_github]
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.
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.
| Ă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/ |
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 !
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.
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
â ïž RĂ©alisez toutes les fonctionnalitĂ©s obligatoires avant de passer aux bonus.
Cette partie se réalise avec Drizzle ORM en créant le schéma de la base de données.
-
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é.
Une seed permet dâajouter des donnĂ©es de base dans la base de donnĂ©es.
- Créer un script
.sqlpour insérer les promotions Ada - Créer un script
.sqlpour insérer les projets Ada - Créer un script
.sqlpermettant de publier un projet (en mettant Ă jour sa date de publication selon son identifiant)
- 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Ă©.
- 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'urlhttps://github.com/<user>/<repo>/blob/main/thumbnail.png?raw=true), - sinon, une image par dĂ©faut doit ĂȘtre affichĂ©e.
- automatiquement récupérée depuis le fichier
- 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.
- Aucune gestion de connexion / inscription
- Pas dâupload dâimages
- Pas de commentaires
- Pas de favoris
- Pas dâinterface dâadministration
- 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 :
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.
- 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
- 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
Linkpour 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




