SYMFONY IPSSI
Requirements
- PHP 8.1 or higher
- MySQL 5.7 or higher
- composer 2.4 or higher
- Node version 16 or higher
Installation
Clone
git clone https://github.com/CDevJenny/symfony-ipssi-rendu-base
Create env file
cp .env .env.local
Dans .env.local
remplacer la ligne DATABASE avec vos informations de connexion.
Renseigner cette ligne DATABASE_URL="mysql://root:root@127.0.0.1:3306/your_database"
avec vos infos de connexion
Install dependencies
composer install
Installe vos dépendances renseignées dans le composer.json
Create DB
symfony console doctrine:database:create
Crée la base de données renseignée dans .env.local
symfony console doctrine:schema:update --force
Met à jour la structure de vos entités dans votre base de données
Front installation
npm install
Installe les dépendances NPM depuis le package.json
npm run build
Build vos fichiers assets dans votre dossier public/assets
npm run watch
Refresh les changements apportés en css et js dans vos dossiers assets/styles en direct sans avoir a relancer un build
Run symfony server
A executer une seule fois
symfony server:ca: install
Installe un certificat SSL pour votre serveur local
A lancer à chaque fois
symfony server:start
Lance votre serveur local symfony
Dans le dossier SQL
Prendre le fichier .sql et importez le dans votre base de données
Commandes utiles avec symfony console
MakerBundle
Commandes make génériques
symfony console make:entity
Ouvre le menu de création/édition de vos entités. Génére une class dans vos Entity et un repository associé
symfony console make:form
Crée un fichier dans votre dossier Form pour générer des formulaires
symfony console make:controller
Crée un fichier controller ainsi qu'un template associé dans vos templates twig
symfony console make:crud
Crée un controller et y génère des fonctions CRUD pour l'entité de votre choix, génère également les templates correspondants
Commandes
symfony console make:user
Crée une entité User avec un password hasher associé
symfony console make:auth
Crée un système de connexion avec votre entité User précédemment généré ainsi qu'un template twig de login
symfony console make:registration-form
Crée un formulaire de d'inscription pour votre Entité User
CONSIGNES DU RENDU
Le projet est mini site e-commerce composé de :
Entités
- Article
- Product (ajouter UN SEUL paramètre personnalisé tel qu'une couleur, une marque etc.)
- Category
- User (Client/Vendeur/Admin)
- Cart
- Les articles et produits doivent avoir une option de statut, publié ou brouillon. Ils doivent pas etre affiché hors partie admin si ils sont en brouillon.
Un menu de navigation en haut de page
- Les pages doivent y etre renseignées, ainsi que les options de connexion et de navigation selon les roles et permissions ainsi qu'un lien vers le panier de l'utilisateur.
Une page d'inscription
- Nom, prénom, email, mot de passe et statut désiré. Vendeur ou Client
Une page d'accueil accessible sans connexion
- Elle doit renvoyer les 3 derniers articles du plus récent au plus ancien. Vos articles doivent avoir un titre, un contenu, un auteur, une date de création et d'édition.
Une page produit accessible sans connexion
- Elle doit lister tous les produits disponibles. On doit y voir, le nom, description, image, prix, vendeur, catégorie du produit ainsi que votre paramètre personnalisé.
- La page doit aussi avoir un formulaire permettant de trier par prix, vendeur, catégorie et doit lister par défaut les articles des plus vieux au plus récent, mais le formulaire doit aussi permettre d'ordonner par date de création. (ASC ou DESC).
- Les produits doivent avoir des liens dirigeants vers leur page produit personnalisée.
- Si un produit a son stock inférieur à 1, il ne doit pas apparaitre.
- Si un produit n'est pas en statut publié, il ne doit pas apparaitre.
Une page produit accessible AVEC connexion
- Cette page doit afficher à nouveau toutes les infos du produit et également un formulaire d'action permettant de choisir la quantité désirée, le choix du paramètre personnalisé au sein d'une liste, ainsi que de l'ajouter au panier.
Une page profil accessible avec connexion et seulement par l'utilisateur connecté actuellement
- Elle doit lister les infos de l'utilisateur, nom, prénom, email, statut. Ses produits si il est vendeur.
- La page doit également renvoyer vers l'edition des infos de l'utilisateur d'une part(nom, prénom, email), et l'édition de son mot de passe d'autre part. Ces formulaires et pages doivent etre indépendants.
- Si il est vendeur, il doit pouvoir accéder à la création d'un produit, l'édition et suppression des siens.
- Si il est client, il doit pouvoir choisir de devenir Vendeur depuis l'édition de son profil
Une page panier accessible avec connexion
- Les utilisateurs doivent avoir accès à leur panier. Listant, les produits ajoutés à leur panier et la quantité associée ainsi que l'option personnalisée choisie.
- Le panier doit afficher un bouton "Acheter" vidant le panier et ajustant les stocks restant sur les produits venant d'être achetés.
Une page admin accessible UNIQUEMENT par l'admin
- L'admin doit y avoir un header différent de la base : Avec en lien, articles, produits, catégories, utilisateurs.
- La page d'accueil de l'admin doit renseigner un panel de stats avec le nombre existant de chacune des entités.
- Chaque page doit avoir un formulaire de filtre permettant de trier avec les attributs respectifs de chaque entité.
- Produits : Vendeur, Catégories, DESC ou ASC
- Articles : DESC ou ASC
- Catégories : DESC ou ASC
- Users : Statut (vendeur/client)
L'admin doit pouvoir naviguer de son interface au site classique. Il doit avoir un bandeau ou un rappel visuel distinctif de son statut en tout temps sur toutes les pages lorsqu'il est connecté.
Attentes générales
- Votre repo github doit etre nommé selon la structure suivante :
https://github.com/utilisateur/symfony-ipssi-rendu + vos deux initiales
Exemple : https://github.com/utilisateur/symfony-ipssi-rendu-cj-cj
- Vous serez notés sur la qualité du nommage de vos commit, de vos fichiers, de vos fonctions, de vos routes et la cohérence de l'ensemble. Soyez logiques et organisés.
- Vous serez également attendu sur un front clair et lisible. Bootstrap et autres library sont autorisées. Utilisez des couleurs, des typos qui rendront votre projet lisible.
Merci d'ajouter un dossier SQL a la racine de votre projet et d'y joindre l'export de votre base de données
Rendu le Dimanche 04/12/2022 a 23h59 max
mail : c.dev.jenny@gmail.com
objet : ipssi-rendu-symfony
contenu : Vos noms et prénoms, archive github (Avec la base de données en SQL comme précisé ci dessus svp)