Projet-Collectif-Microblogging

Projet collectif Ada Tech School de microblogging en PHP avec Laravel/Eloquent ORM/Blade/Breeze et PostgrSQL

Stars
0
Committers
4

Mignanimo

Projet collectif en 7 jours 2/3 personnes, aprs 6 mois de formation

OBJECTIFS :

  • Dcouvrir et prendre en main Laravel en mode Fullstack avec Eloquent ORM, Breeze, Blade et PostgrSQL
  • Consolider notre apprentissage de la POO et de l'architecture MVC
  • Construire un MVP avec 50% de coverage de test
  • Exprimenter l'environnement Docker

DESCRIPTION :

Notre site Mignanimo est une plateforme de microblogging "instagram like" qui permet aux utilisateurstrices de crer un compte, se connecter, poster des messages avec un titre, une image et une description, modifier son profil ou ses posts et consulter le mur des autres. L'authentification est gre par la bibliothque Breeze. Le front est ralis avec Blade et Tailwind.

Guide d'installation du projet Plateforme de micro-blogging

[Windows] Pr-requis : installer WSL 2

Si vous ne l'avez toujours pas fait, installez WSL 2. Voir la doc officielle de WSL 2.

En rsum, WSL (= Windows Sub-system for Linux) installe un systme d'exploitation Linux par dessus votre systme d'exploitation Windows, mais sans la partie graphique.

Ce (sous-)systme Linux, est un vrai OS, il vient avec un Terminal de commande et son propre systme de fichiers, indpendant de votre systme de fichiers Windows.

Pour un environnement de dveloppement optimal, nous vous recommandons fortement d'utiliser ce systme Linux pour tous vos projets, ainsi que pour tous les outils ou librairies associes que vous seriez amen installer. Utilisez donc toujours votre shell WSL, et crez vos fichiers et projets toujours sur le systme de fichiers WSL.

Pourquoi ?

  • Les outils de shell Linux sont aujourd'hui un standard dans le dveloppement.
  • Intragir depuis le shell WSL avec des fichiers existants sur votre systme de fichiers Windows peut vous exposer des problmes de (fortes) lenteurs. Avec Docker, cela peut mme devenir quasi inutilisable. Faites-vous du bien, utilisez WSL par dfaut

Sur le site officiel de WSL, vous trouverez plus d'infos sur le Stockage de fichiers et performances dans les systmes de fichiers.

[Windows / Mac / Linux] Pr-requis : installer Docker

Installer Docker via le site officiel de Docker.

Pour les Windows, choisir l'option d'installation de Docker avec WSL 2.


S'assurer ensuite qu'il tourne en local sur votre machine :

docker info

[Windows] Pr-requis : cloner le projet sur le systme de fichiers Linux (WSL)

Si vous avez clon ce template projet microblogging directement sur le filesystem WSL, bravo vous avez bien suivi le premier pr-requis, vous pouvez passer l'tape suivante

Si ce template projet se trouve sur votre systme de fichiers Windows, clonez-le de nouveau, mais cette fois-ci sur le systme de fichiers WSL.


Comment cloner le projet sur le systme de fichiers WSL ?

  • Ouvrez le terminal WSL

  • Rendez-vous dans votre rpertoire HOME de votre systme de fichiers WSL

    cd ~
    
  • Assurez-vous que votre rpertoire courant ne commence pas par /mnt/c/.

  • S'il commence par /mnt/c/, ce n'est pas bon, car cela signifie que vous tes toujours sur systeme de fichiers Windows, comme mentionn dans la documentation sur les systmes de fichiers de WSL.

  • Si vous tes bien sur le systme de fichiers WSL, c'est bon, crez ou allez dans votre rpertoire projet, puis clonez le projet de manire classique.

[Windows / Mac / Linux] Pr-requis : configurer l'environnement de dveloppement du projet

Ce projet a t pr-configur pour vous permettre une installation rapide et automatique de toutes ses dpendances (outils de ligne de commandes PHP, Laravel et ses librairies, des extensions VSCode adaptes au dveloppement PHP). Pour cela on va utiliser la fonctionnalit de "Dev Containers" de VSCode.


Ouvrir le projet dans VSCode. Les fichiers et dossiers du repo doivent constituer la racine de l'arborescence du projet sous VS Code.

Ouvrez bien le projet directement depuis le dossier racine, via "Open Folder", ou via code .. L'extension Dev Container ne fonctionne pas depuis un "workspace", donc n'ouvrez pas le dossier via "Add Folder to Workspace".


Copier le fichier .env.example vers .env

cp .env.example .env

Cette tape est essentielle pour permettre la bonne configuration de l'environnement Docker du projet.


Installer l'extension VSCode "Dev Containers"


R-ouvrir le projet dans VSCode dans Docker avec la commande "Reopen in Container"

Le projet s'ouvre normalement dans une nouvelle fentre VSCode, et dmarre le tlchargement des images Docker, puis la construction et l'excution des containers associs. Cela peut prendre quelques minutes en fonction de la bande passante rseau et de la puissance de votre machine.

cette tape, VSCode vous propose normalement d'ouvrir les logs Docker, faites-le, essayez de comprendre ce qui s'y droule, et assurez-vous qu'il n'y ait pas d'erreur.

Une fois termin, votre projet tourne "sous Docker". Selon vous, qu'est ce que cela signifie ?

Observez galement les extensions VSCode installes. D'o viennent ces extensions PHP / Laravel ?

Dmarrer l'application Laravel

Ouvrir le terminal de VSCode.

Observez-bien le prompt de votre terminal VSCode. Selon vous, o s'excute ce terminal ?


Installer les dpendances PHP via composer

composer install

Composer est le package manager par dfaut de PHP (l'quivalent de npm en Node/JS). Les dpendances du projet (i.e. les librairies externes ncessaires) sont dcrites dans le fichier composer.json. Une fois tlcharges elles sont installes dans le dossier vendor.

Selon vous, doit-on commiter ce dossier vendor dans le git du projet ?


Gnrer votre "application encryption key" ncessaire toute application Laravel

php artisan key:generate

Cette commande gnre une cl qui est ensuite stocke dans la variable APP_KEY de votre .env.


Lancer le serveur web interne Laravel

php artisan serve

UPDATE !! php artisan serve --host=0.0.0.0

Vous devriez voir la page par dfaut de Laravel en ouvrant l'url indique (http://127.0.0.1:8000 si tout se passe bien).

Bravo, vous l'avez fait, vous avez une application Laravel qui tourne sous Docker !

ce stade, prenez le temps de vous familiariser avec le fonctionnement de Laravel, en parcourant la doc officielle (fortement recommand) ou en suivant quelques tutos. Voir les liens la fin de ce README.

Gestion de la base de donnes (PostgreSQL)

Accder l'interface d'admin "pgAdmin"

En inspectant le docker-compose.yml (et ventuellement le .env) pouvez-vous en dduire l'url de connexion "pgAdmin", ainsi que ses identifiants de connexion ?


Une fois connect "pgAdmin", configurer la connexion votre base de donnes locale, en ajoutant un nouveau "server".

Les identifiants de connexion sont les mmes que ceux configurs dans le docker-compose.yml (et le .env).

Un dtail important li Docker : le "host" de connexion correspond l'url du PostgreSQL ** l'intrieur** du rseau Docker. Plutt que de chercher l'adresse IP interne de votre PG (ce qui est tout fait possible si vous avez envie d'un dfi supplmentaire), vous pouvez utiliser directement le nom dfini au sein du docker-compose.yml pour le service PG (= pgsql).

Une fois connect, vous devriez voir une base nomme microblogging (i.e le nom correspondant la variable DB_DATABASE du .env). Notez que la base existe mais est vide.


Initialiser la base de donnes, en effectuant les migrations Laravel existantes par dfaut.

php artisan migrate

ce stade, observez les tables cres dans votre base PG, et comprenez le lien avec les fichiers prsents dans le dossier database/migrations du projet.

propos de Laravel

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:

Laravel is accessible, powerful, and provides tools required for large, robust applications.

Se familiariser avec Laravel

Laravel has the most extensive and thorough documentation and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.

You may also try the Laravel Bootcamp, where you will be guided through building a modern Laravel application from scratch.

If you don't feel like reading, Laracasts can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.