Il s'agit de créer une plateforme de commerce en ligne dédiée aux artisans. Le site mettra en avant leur savoir-faire et leurs produits. Les visiteurs pourront explorer le site sans s'inscrire, découvrir les divers produits, consulter les profils des artisans, filtrer leurs recherches et ajouter des articles à leur panier. Pour finaliser leur commande, les utilisateurs non enregistrés devront créer un compte. Une fois inscrits, les clients auront accès à leur profil, où ils pourront mettre à jour leurs informations et consulter l'historique de leurs commandes.
Le parcours client sera intuitif, favorisant un accès aisé aux produits et une commande simple. Les clients pourront suivre l'évolution de leur commande et, si nécessaire, l'annuler. Le site se concentrera sur la découverte des artisans français, offrant des pages dédiées présentant leur histoire et leurs produits à travers des photos. Les artisans devront s'inscrire pour accéder à leur espace personnel, où ils pourront personnaliser leur page avec des éléments tels que leur photo de profil et leur histoire. Ils pourront mettre en avant certains produits grâce à des photos et des descriptions, ajouter, modifier ou supprimer des articles, et consulter les pages d'autres artisans. Les artisans recevront des notifications pour des commandes spécifiques, personnalisables, leur permettant de les accepter ou de les refuser.
Le site vise à offrir aux clients une expérience mettant en avant la qualité et le savoir-faire français, en favorisant une connexion avec les artisans à travers leurs histoires et celles de leurs produits. Les artisans bénéficieront d'une meilleure visibilité grâce à un partage facile sur les réseaux sociaux et à l'efficacité du site. Le référencement du site sera optimisé, notamment avec l'utilisation du slug.
Le site sera conçu en respectant cinq principes du GreenIT pour minimiser son impact environnemental. Pas de caroussel Pas de fonctionalités non essentielles Supprimer les fonctions non utilisées Optimisation des images Eviter les animations
Un message a l'attention des utilisateurs du site sera affiché Il permettra a l'utilisateur de prendre connaissance des obligations légales concernant ses données personnelles et de leurs utilisations. Les utilisateurs auront accès a leurs données et pourront demander la modification ou l'effacement de ces dernières.
Une base légale sera mise en place pour le traitement des données personnelles respectant le cadre légal du RGPD.
Article 6 du RGPD :
Le consentement : la personne a consenti au traitement de ses données ;
Le contrat : le traitement est nécessaire à l’exécution ou à la préparation d’un contrat avec la personne concernée ;
L’obligation légale : le traitement est imposé par des textes légaux ;
La mission d’intérêt public : le traitement est nécessaire à l’exécution d’une mission d’intérêt public ;
L’intérêt légitime : le traitement est nécessaire à la poursuite d’intérêts légitimes de l’organisme qui traite les données ou d’un tiers, dans le strict respect des droits et intérêts des personnes dont les données sont traitées ;
La sauvegarde des intérêts vitaux : le traitement est nécessaire à la sauvegarde des intérêts vitaux de la personne concernée, ou d’un tiers.
La base légale sera principalement orientée contrat ce qui permettra de conserver seulement les données liées a l'adresse postale principalement pour la facturation.
Le consentement doit être libre, spécifique, éclairé et univoque pour être valablement recueilli et constituer dès lors la base légale du traitement. Si l’une de ces conditions n’est pas remplie, le consentement ne peut pas constituer la base légale du traitement.
Si le traitement porte une atteinte excessive aux droits et libertés des personnes, l’intérêt légitime ne pourra fonder légalement sa mise en œuvre.
| Finalité | Données collectés | Base légale | Supprimable ou refusable |
|---|---|---|---|
| Fonctionnement du site pour visiteur | Cookies utilisateurs | Contrat | NON par ceux utilisés pour le fonctionnement |
| Enregistrement client | Address | Contrat | OUI si aucune commande |
| Enregistrement client | Contrat | OUI | |
| Enregistrement client | Name | Contrat | OUI |
| Enregistrement crafter | Siret name | Obligation légale | NON |
| Enregistrement crafter | Address | Contrat | NON |
| Enregistrement crafter | Phone number | Contrat | OUI |
| Facturation | Address postale | Contrat | NON |
| Verification de la majorité | Birthdate | Contrat | OUI supprimable avec le compte |
- Proposer un traitement asynchrone lorsque c'est possible
- Ne pas retenir les fonctionnalités non essentielles
- Supprimer les fonctionnalités non utilisées
- Limiter le recours aux carrousels
- Avoir un titre de page et une metadescription pertinents
- Optimiser les images
- Éviter les animations Javascript / CSS
- Découper les CSS
- Préférer les CSS aux images
- Valider votre code avec un Linter
- Mettre en place un sitemap efficient
-
- id int pk,
- Role (Crafter, customer, Admin) int type enum,
- email varchar(255),
- phone_number varchar(55),
- password varchar(255),
- ??active(manage this in app)
-
- id pk,
- user_id int fk,
- information text,
- story text,
- crafting_proccess text,
- location text,
- material_preference text,
-
- id int pk,
- model_name varchar(55),
-
- id int pk,
- product_unit_price float,
- product_name varchar(55),
- product_description varchar(255),
- product_status int enum (Waiting, validate, unvalidate),
- model_id int fk nullable,
- color varchar(55) nullable,
- customizable int enum type nullable,
- is_active bool,
-
- category_id int pk,
- name varchar(55),
-
- product_id int fk,
- category_id int fk,
-
- material_id int pk,
- name varchar(55),
-
- product_id int fk
- materials_id int fk
-
- id int pk,
- user_id int fk,
- status int enum type (Waiting for payment, payment validate, in preparation, shipped, Cancel, delivered, order return, in crafting),
- order_price float,
- order_date Date,
- delivery_adress,
- facturation_adress
-
- product_id int fk,
- order_id int fk,
- product_name varchar(55),
- product_unit_price int,
- quantity int,
-
- address_id int pk,
- address_name varchar(55),
- address_type int enum (Devlivery address, facturation address, both),
- firstname varchar(55),
- lastname varchar(55),
- first_address varchar(255),
- second_address varchar(255),
- postal_code varchar(55),
- user_id int fk,
-
- id int pk,
- path varchar(255),
- size varchar(255),
- imageable_type varchar(255),
- imageable_id varchar(255)
| Endpoint | Type de requête | Page |
|---|---|---|
| / | GET | Homepage |
| /register | POST | register page |
| /login | POST(safe) | login page |
| /user/{id} | GET | user page |
| /user/{id} | PATCH/PUT | update user |
| /user/{id}/orders | GET | display user client orders |
| /user/{id}/orders/{id} | GET | display an order for an user |
| /user?role=crafter | GET | display all crafters |
| /products | GET | products list |
| /products | POST | products list |
| /products/{id} | GET | single product page |
| /products/{id} | PATCH | single product page |
| /products?params=value | GET | params product |
| /crafters | GET | list all crafters |
| /crafters | POST | create crafter page |
| /crafters/{id} | GET | get an crafter |
| /crafters/{id} | PATCH/PUT | update crafter page |
| /categories | POST | create a category |
| /categories | GET | list all categories |
| /categories/{id} | PATCH/PUT | update a category |
| /materials | POST | create a material |
| /materials | GET | list all materials |
| /materials/{id} | PATCH/PUT | update a material |
| /users/{id}/cart | POST | add element to cart |
| /users/{id}/cart | GET | display user cart |
| /order | POST | create an order |
| /order/{id} | GET | display the order |
| /order/{id} | PATCH/PUT | edit an order |
| /address | POST | create an address |
| /address/{id} | PATCH/PUT | edit an address |
| /address/{id} | DELETE | delete an address |
| /images?id=model= | POST | insert an image |
| /images?id=model= | GET | find images |
| /images?image-id= | DELETE | delete an image |
un endpoint pour lister les users pour l'admin ?
| Autorization | Admin | Crafter | Customer | Visitor |
|---|---|---|---|---|
| Display products | x | x | x | x |
| Display crafters | x | x | x | x |
| Add product to cart | x | x | x | x |
| Display own cart | x | x | x | x |
| Edit cart | x | x | x | x |
| Validate cart | x | x | x | |
| Display register page | x | x | x | x |
| Display login page | x | x | x | x |
| Dispay&edit profile page | x | x | x | |
| Display order history | x | x | x | |
| Cancel current order | x | x | x | |
| Edit crafter page | x | x | ||
| Create&Edit a product | x | x | ||
| Display own past orders | x | x | ||
| Validate or deny a product | x | |||
| Manage order status | x |
Sur demande ? Plusieurs theme ?
https://auth0.com/blog/testing-laravel-apis-with-phpunit/ https://phpunit.de/documentation.html
repository: https://www.atrakeur.com/blog/web/laravel-et-pattern-repository/ https://medium.com/@sliusarchyn/service-layer-in-laravel-use-it-ae861fb0f124
