ccadran / Envol-des-papillons

School website for a client. Backend with NodeJs and frontend with React.
https://lenvoldespapillons33.fr/
0 stars 0 forks source link

Un peu d'aide si ça t'intéresse 😉 #1

Open MathisBarre opened 1 year ago

MathisBarre commented 1 year ago

Bonjour Clario ! J'espère que tu vas bien !

J'ai vu tes tiktok qui parlent de ce projet, c'est vraiment très propre, bravo ! C'est beaucoup de travail ton projet + les tiktok mais j'adore !

J'ai vu que le projet était open source. Du coup je me permet de venir te contacter pour te proposer des potentiels axes d'améliorations si ça t'intéresse !

create-react-app (cra)

cra, c'est vraiment cool pour jouer avec React mais pas pour faire un vrai site de production. Même la documentation officielle ne recommande plus cra

Le principal problème que tu vas rencontrer, c'est le référencement. Tu ne peux pas avoir un bon référencement avec cra car tu vas devoir fetcher toutes tes données après le chargement initiale de la page. Google à du mal à comprendre ta page quand tu fais ça. Le mieux, c'est de faire du rendu côté serveur puis d'envoyer la page pré-construite directement à l'utilisateur.

Je te conseil Next.js (ce que tu avais initialement prévu), c'est la solution la plus populaire et robuste à l'heure actuelle. La seule difficulté pour un débutant c'est la confusion entre app folder et pages folder. En gros, utilise pages pour le moment, sinon tu vas galérer avec toutes les nouveautés de react, les librairies pas encore adaptés et les ressources pas encore nombreuses.

Mais Next.js a de nombreux autres avantages, je te laisse découvrir tout ça en faisant tes propres recherches. Il y a de nombreuses ressources (c'est un des avantages), tu devrais t'en sortir.

styling

Tu as installé SASS. Bon choix, surtout si tu maitrise déjà l'outil.

Je t'invite tout de même à regarder tailwindcss. C'est un outil très populaire même s'il ne plait pas à tout le monde. Cela permet de faire du style plus rapidement tout en ajoutant un cadre pour garder une cohérence au niveau des couleurs, shadows, margins etc... Tout en restant extrêmement modifiable à tes gouts/besoins.

Couplé à radix-ui, tu pourras faire tous les composants que tu veux simplement (ou les prendre déjà fait grâce à https://ui.shadcn.com)

Je ne dis pas que c'est le bon choix car tu connais déjà Sass et c'est un gros avantage. Il fera le boulot et il le fera certainement très bien. Mais ça vaut la peine d'y réfléchir !

back-end

Je t'invite à regarder du côté des CMS headless comme Sanity.io pour tout le contenu du site vitrine. Ça reste toujours plus de choses à apprendre donc peut-être pas le meilleur choix mais, même chose que pour tailwind, ça vaut la peine d'y réfléchir. Ça te permettrai de ne pas avoir à faire des back-end pour le site vitrine. C'est un gain de temps conséquent et c'est souvent gratuit pour les projet de petite taille (ou pas beaucoup plus chère que le coup d'hébergement et de maintenance d'un back + db).

Après si tu as un espace parent par exemple qui doit gérer des choses plus complexe qu'un site vitrine, faire son propre back reste une bonne solution.

Je pourrais aussi remettre en question le choix de MongoDB mais au final peu importe, à ton niveau sur un projet de cette taille il faut réussir à faire le travail et c'est tout. Donc si tu aimes bien Mongo, vas-y !

Conclusion

Voilà ! J'espère que ça te seras utile ! Bien-sûr, tu n'es obligé à rien, l'objectif c'est uniquement d'ouvrir les possibilités, après il faut faire les bons choix en fonction de ton contexte !

Good luck !

Sserci commented 1 year ago

Hello je me permet aussi d'intervenir :)

Je te conseille aussi TailwindCss (au début tu vas penser que c'est une perte de temps, mais une fois que tu sera familiarisé avec les classes que tu utilise tu vas en gagner pas mal :)

Concernant le choix de la techno, NextJs est un excellent choix, mais pour un premier projet aussi gros je te conseille aussi de rester sur quelque chose avec lequel tu es à l'aise (à moins que tu ai le temps de faire des expérimentations)

Côté code : Attention tu as un package.json à la racine de ton projet. Il vaut mieux que ce soit séparé entre le back et le front A ce sujet je te conseillerai de faire 2 repos distincts d'ailleurs ;)

Tu n'es pas obligé de passer de longs textes en props. juste les informations qui vont être dynamique

Petit point architecture. Tu pourrais spliter ton controller en paire Controller/Service : cela te permettrai de gérer la logique métier dans les controller et les appels à la bdd (via les fonctions de mongoose) dans les services. cela rendra ton code plus maintenable et réutilisable.

C'est quelques petites pistes d'amélioration tu es loin d'être obligé de t'adapter à tout mais j'espère que ça t'aidera

Bon courage en tout cas

Petit edit de mon message : Point organisation, même si tu es seul n'hésite pas à faire des branches sur github une par feature pourrait être bien avantages : en cas de casse tu peux revenir plus facilement en arrière pour retrouver une version fonctionnelle et surtout tu pourrais faire des pull request pour merger ton travail et demander des reviews de ton code vu que ton projet est public. cela pourrait te permettre de t'améliorer tout en améliorant la qualité du code du projet

ccadran commented 1 year ago

Bonjour à vous deux ! Tous d’abord merci beaucoup pour vos conseils, ça fait extrêmement plaisir d’en recevoir spontanément.

Je vais aborder point par point ce que vous m’avez dit.

CRA

Du coup pour CRA, oui en effet, j'étais au courant que ça ne se faisait plus et que même la doc officielle le déconseillé, mais je me suis dit que ça serait surement le plus simple pour moi au vu de mes connaissances et pour ce qui est du référencement, étant donné que ce n’est pas un secteur sur lequel il y a énormément de concurrence je me suis dit que ça pourrait le faire.

En effet, à la base je comptais utiliser Next.js, mais j’ai eu peur que ça me fasse perdre beaucoup de temps, car je ne le maitrise pas hyper bien. (Après ce projet, je compte en faire un autre avec la techno pour bien l’assimiler)

STYLING

Pour ce qui est du styling, en effet, j'ai choisi sass pcq encore une fois, c'est une techno avec laquelle je suis à l’aise, j’ai déjà eu l’occasion d’utiliser tailwind sur certains projets, mais jamais à grandes échelles et vous l’aurez compris, je n’ai vraiment pas pris de risques dans le choix des technos et c’est pourquoi j’ai privilégié sass. Mais, en effet, à l’avenir, il va falloir que je me penche plus dessus !

BACKEND

Merci pour la recommandation des headless CMS, c’est un truc dont j’entendais pas mal parler ces derniers temps, mais que je n’ai jamais vraiment regardé, je vais donc me renseigner au plus vite ! Et en effet je pense vraiment que c’est au niveau du back qu’il y aura le plus d’amateurisme pcq c’est la première fois que j’en fais réellement, donc il se peut qu’il y ait pas mal d’erreur.

Merci beaucoup Serge pour tous les autres petits conseils, je vais aller voir ça !

Pa rapport à faire des branches par feature sur github, à partir de quoi est-ce que ça peut valoir le coup de faire une branche, parce que je suppose que je vais pas faire de branche a chaque component non plus 😂 ?

En tout cas je vous remercie encore une fois c’est vraiment hyper bienveillant d’avoir pris le temps de survoler le code pour me donner des conseils !

Sserci commented 1 year ago

Effectivement une branche par component c'est pas le but ^^ Mais plus en gros on va dire par user story (en tant qu'user je dois pouvoir m'inscrire -> branche) Ça peut te donner un cadre à suivre pour pas te perdre dans ton code à faire un peu de tout à la fois N'hésite pas à utiliser un outil de gestion de projet (style trello) si ça peut t'aider à t'organiser