Création d'un README + les scripts SQL
This commit is contained in:
146
README.md
146
README.md
@@ -0,0 +1,146 @@
|
||||
# Création d'une appli Web pour lister les cadeaux souhaités par Louisa pour Noël ou son anniversaire
|
||||
|
||||
## Introduction
|
||||
|
||||
L'idée première était de centraliser les cadeaux que souhaitait Louisa, afin d'éviter les doublons et ne pas en oublier.
|
||||
|
||||
|
||||
## Architecture du module
|
||||
|
||||
```
|
||||
wishlist
|
||||
├── ...
|
||||
├── node_modules
|
||||
│ ├── Tous les modules Node nécessaires à l'application (express, ...)
|
||||
├── public
|
||||
│ ├── styles.css (feuilles de style globales de l'appli)
|
||||
├── views
|
||||
│ ├── index.hbs (page principale affichant la liste des cadeaux)
|
||||
│ ├── offrant.hbs (choix de la personne qui offre le cadeau)
|
||||
│ ├── presence.hbs (juste une page qui affiche ceux qui seront présents à l'anniv de Loulou)
|
||||
│ ├── reservation.hbs (saisie des infos complémentaires sur le cadeau -a-t-il été acheté ? Pour quelle occasion ? ...-)
|
||||
│ ├── votre-vote.hbs (écran résultat suite aux réponses des invités de Louisa pour son anniv')
|
||||
├── .env (variables globales pour la BDD)
|
||||
├── donnees.sql (export des données à date)
|
||||
├── package-lock.json
|
||||
├── package.json
|
||||
├── README.md (le présent fichier)
|
||||
├── schema.sql (structure de la BDD)
|
||||
├── wishlist.js (fichier principal avec le code Node JS)
|
||||
```
|
||||
|
||||
## Installation des dépendances
|
||||
|
||||
Exemple de commande :
|
||||
|
||||
```bash
|
||||
npm install bcrypt
|
||||
```
|
||||
|
||||
## Description des différents écrans
|
||||
|
||||
### index
|
||||
|
||||
Cet écran permet d'afficher la liste des cadeaux en BDD, et toutes les infos liées à chaque cadeau (s'il est réservé, par qui, le prix du produit, sa photo, ...).
|
||||
Pour chaque cadeau non encore réservé, un bouton permet d'effectuer la réservation.
|
||||
|
||||
#### Accès à l'écran
|
||||
|
||||
Page d'accueil du site
|
||||
|
||||
#### Contrôles mis en place
|
||||
|
||||
Aucun.
|
||||
|
||||
#### Actions effectuées depuis cet écran
|
||||
|
||||
* Au clic sur le lien hypertexte pour chaque produit, l'utilisateur est redirigé vers une nouvelle page qui présente les infos du produit.
|
||||
* Au survol de la vignette, la photo du produit est affichée en plus grand.
|
||||
* Au clic sur le bouton "Le réserver", chainage vers la page "offrant"
|
||||
|
||||
-------------------------------------------------
|
||||
|
||||
### offrant
|
||||
|
||||
Dans cet écran, l'utilisateur sélectionne son nom pour indiquer qu'il souhaite réserver le cadeau.
|
||||
|
||||
|
||||
#### Accès à l'écran
|
||||
|
||||
* Depuis la liste des cadeaux
|
||||
|
||||
#### Contrôles mis en place
|
||||
|
||||
Aucun.
|
||||
|
||||
#### Actions effectuées depuis cet écran
|
||||
|
||||
* L'utilisateur clique sur le bouton qui correspond à son nom.
|
||||
* Ensuite, il est redirigé vers la page "reservation".
|
||||
|
||||
-------------------------------------------------
|
||||
|
||||
### presence
|
||||
|
||||
Ecran qui liste tous ceux qui ont répondu "Présent" pour l'anniversaire de Louisa.
|
||||
|
||||
#### Accès à l'écran
|
||||
|
||||
Via l'URL directe à saisir.
|
||||
|
||||
#### Contrôles mis en place
|
||||
|
||||
Aucun.
|
||||
|
||||
#### Actions effectuées depuis cet écran
|
||||
|
||||
Aucune.
|
||||
|
||||
-------------------------------------------------
|
||||
|
||||
### reservation
|
||||
|
||||
Ecran dans lequel l'utilisateur (qui a choisi le cadeau et s'est identifié) doit saisir des infos complémentaires :
|
||||
* A-t-il déjà acheté le cadeau ?
|
||||
* Si pas acheté, qui doit acheter le produit ?
|
||||
* Est-ce que l'acheteur a été remboursé ?
|
||||
* Pour quelle occasion sera offert le cadeau ? Anniversaire ou Noël ?
|
||||
|
||||
#### Accès à l'écran
|
||||
|
||||
Après l'écran de sélection de l'offrant.
|
||||
|
||||
#### Contrôles mis en place
|
||||
|
||||
RAS : des cases à cocher obligent l'utilisateur de sélectionner à chaque question une valeur.
|
||||
|
||||
#### Actions effectuées depuis cet écran
|
||||
|
||||
* Un bouton "Retour aux cadeaux" qui permet de revenir à l'accueil
|
||||
* Un bouton "Enregistrer" qui enregistre les modifs
|
||||
|
||||
-------------------------------------------------
|
||||
|
||||
### votre-vote
|
||||
|
||||
Cet écran affiche un retour sur la réponse à l'invitation d'anniversaire de Louisa.
|
||||
|
||||
Le principe :
|
||||
|
||||
Chaque invité à son anniversaire s'est vu remettre un carton d'invitation avec deux QR codes :
|
||||
* un généré à partir du prénom de l'enfant et d'un flag "non présent"
|
||||
* un autre généré à partir du prénom de l'enfant et d'un flag "présent"
|
||||
|
||||
Suivant le QR Code scanné, le parent verra apparaitre sur son navigateur le prénom de son enfant ainsi que la réponse.
|
||||
|
||||
#### Accès à l'écran
|
||||
|
||||
Après scan du QR code, ou via URL directe.
|
||||
|
||||
#### Contrôles mis en place
|
||||
|
||||
Aucun.
|
||||
|
||||
#### Actions effectuées depuis cet écran
|
||||
|
||||
Aucune.
|
||||
|
||||
69
donnees.sql
Normal file
69
donnees.sql
Normal file
@@ -0,0 +1,69 @@
|
||||
INSERT INTO wishlist.anniversaire (enfant,present) VALUES
|
||||
('Nola',1),
|
||||
('Amélia',1),
|
||||
('Louisa',1),
|
||||
('Nolann',1),
|
||||
('Léa',0),
|
||||
('Emma',1),
|
||||
('Paula',1),
|
||||
('Paul',0),
|
||||
('Naomie',0);
|
||||
INSERT INTO wishlist.cadeau (libelle,prix,photo,lien,achete,paye,pour_noel,emballe) VALUES
|
||||
('Coffret d''élastiques',15.00,'https://cdn.cultura.com/cdn-cgi/image/width=1280/media/pim/10139566.jpg','https://www.cultura.com/p-rainbow-loom-original-10139566.html?utm_source=google&utm_medium=cpc&utm_campaign=PMAX_Ludo_Enfant_Reste&gclid=EAIaIQobChMI-Kub997AggMV_4NoCR1W3wopEAQYAyABEgLnyvD_BwE',1,1,1,1),
|
||||
('Coffret cartes Pokémon',75.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/e710cb7ae8d0daeedc896722d2e73f534c1da76f_41122129.jpeg','https://www.joueclub.fr/jeux-de-societes/pokemon-eb12-5-coffret-ultra-premium-figurine-0820650556357.html',1,1,1,1),
|
||||
('Peluche chat',19.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu943408_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/peluches/peluches-interactives/ref-943408-peluche-smitten-kittens-pets-alive.htm?cid=Google_Paid-Search_campaign=Fil+Rouge_Google_HM_SmartShopping_Marques+Exclusives_adgroup=Marques+Exclusives_adcr=&gad_source=4',0,0,1,0),
|
||||
('VIP Pets Hair Academy',29.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu944102_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/Jeux-imitation-mondes-imaginaires/figurines-cartes-a-collectionner/ref-944102-vip-pets-hair-academy-alexia.htm',0,0,1,0),
|
||||
('Pack figurines Pokémon',34.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/1416c04cc425486e28ac7f605210ca70f29ed279_14068544.jpeg','https://www.joueclub.fr/figurines/pokemon-pack-de-8-figurines-3296580802999.html',1,1,1,1),
|
||||
('Jeu Switch Pikachu',36.99,'https://media.carrefour.fr/medias/e015adaf3fab3cbfafd142a4fc728159/p_1500x1500/0045496479633-0.jpg','https://www.carrefour.fr/p/le-retour-de-detective-pikachu-nintendo-switch-0045496479633?gad_source=1',0,1,1,0),
|
||||
('Livre Pokémon',15.95,'https://cdn.cultura.com/cdn-cgi/image/width=1280/media/pim/TITELIVE/41_9782821217140_1_75.jpg','https://www.cultura.com/p-pokemon-mon-livre-collector-une-aventure-a-paldea-9782821217140.html?utm_source=google&utm_medium=cpc&utm_campaign=PMAX_Livre_Prio&gad_source=1',1,1,0,1),
|
||||
('Poupée VIP Pets Chloé',32.99,'https://lagranderecre-lagranderecre-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/575/575/40764f334152e89e10821fe986724b524beaf721_890952_1.jpg','https://www.lagranderecre.fr/poupons-et-poupees/poupees-mannequins/poupee-vip-academie-de-coiffure-chloe.html?srsltid=AfmBOory-qN8TMZmdHOBffzGFkmJqZBN1ydOEzZ85lM1kkPdcNXeHGUb_7w',0,0,1,0),
|
||||
('Poupée Rainbow Color',39.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu943687_6_2.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/poupees-poupons/barbie-poupees-mannequin/ref-943687-poupee-rainbow-high-color-create-fashion.htm',1,1,0,1),
|
||||
('Figurines AdoptMe',22.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu944519_6_2.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/Jeux-imitation-mondes-imaginaires/figurines-cartes-a-collectionner/ref-944519-pack-6-figurines-fantasy-clan-adopt-me.htm',0,0,1,0);
|
||||
INSERT INTO wishlist.cadeau (libelle,prix,photo,lien,achete,paye,pour_noel,emballe) VALUES
|
||||
('Jeu Attention aux pandas',14.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu895116_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/jeux-societes/jeux-reflexions/ref-895116-attention-aux-pandas.htm',1,1,1,1),
|
||||
('Jeu Dr Maboul Pat Patrouille',24.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu887448_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/jeux-societes/jeux-ambiance/ref-887448-docteur-maboul-pat-patrouille.htm',1,1,1,1),
|
||||
('Jeu Pokémon dresseur Mission',34.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/b33b5c0a088ceeb7ac037564c1c32c44b9caf9e6_41059373.jpeg','https://www.joueclub.fr/jeux-educatifs/pokemon-dresseur-mission-3701405803742.html',1,1,1,1),
|
||||
('Jeu Loups garous',14.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/deda21ebd3790d29d13e7c5c3873357d6778a1c2_41122124.jpeg','https://www.joueclub.fr/musiques-sons-images/flam-album-audio-interactif-les-loups-garous-3760361141213.html',0,0,1,0),
|
||||
('POKEMON - DECK COMBAT BAOJIAN EX',21.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/f8e9c27bce6df5faffdf029340de5111246a2c8f_41128025.jpeg','https://www.joueclub.fr/jeux-de-societes/pokemon-deck-combat-baojian-ex-0820650555879.html',0,0,1,0),
|
||||
('POKEMON - DECK COMBAT EX - AMPHINOBI EX OU KANGOUREX EX',21.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/1fef09e4a7a0b439ddc432f2162fde8b43489099_41095636.jpeg','https://www.joueclub.fr/jeux-de-societes/pokemon-deck-combat-ex-amphinobi-ex-ou-kangourex-ex-0820650556050.html',1,1,1,1),
|
||||
('GEOMAG - ECOFRIENDLY 78 PIECES PANELS SUPERCOLOR',44.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/007438a8c8cf2401961021457380190499078c32_41000801.jpeg','https://www.joueclub.fr/jeux-de-constructions-maquettes/geomag-ecofriendly-78-pieces-panels-supercolor-0871772003793.html',1,1,1,1),
|
||||
('Tube PLUS PLUS - avec des pièces dorées et argentées',6.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/2aa2e483d384c90b666baea755180700d1313292_41095520.jpeg','https://www.joueclub.fr/jeux-de-constructions-maquettes/plus-plus-jeu-de-construction-tube-pirate-100-pieces-5710409107020.html',0,1,1,0),
|
||||
('YANI 30pcs Pokemon Figurines de 3-5cm',29.99,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/81NWURADcIL._AC_SL1500_.jpg','https://www.amazon.fr/YANI-Pokemon-Figurines-r%C3%A9p%C3%A9tition-Rangement/dp/B0CK2S4W7B/ref=sr_1_31?adgrpid=1360097719411163&hvadid=85006537389920&hvbmt=be&hvdev=c&hvlocphy=66&hvnetw=s&hvqmt=e&hvtargid=kwd-85007240376587%3Aloc-66&hydadcr=13318_2282558&keywords=8%2Bfigurines%2Bpok%C3%A9mon&qid=1699558535&sr=8-31&th=1',1,1,1,1),
|
||||
('Pokemon Figurine Jouet 8Pack Figurine 5-11 cm',47.99,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/81a2r7dxYeL._AC_SL1500_.jpg','https://www.amazon.fr/Pokemon-Figurine-Jouet-8Pack-5-11/dp/B09NT95337/ref=sr_1_19_sspa?adgrpid=1360097719411163&hvadid=85006537389920&hvbmt=be&hvdev=c&hvlocphy=66&hvnetw=s&hvqmt=e&hvtargid=kwd-85007240376587%3Aloc-66&hydadcr=13318_2282558&keywords=8+figurines+pok%C3%A9mon&qid=1699558535&sr=8-19-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9tdGY&psc=1',0,0,1,0);
|
||||
INSERT INTO wishlist.cadeau (libelle,prix,photo,lien,achete,paye,pour_noel,emballe) VALUES
|
||||
('Lot de 144 mini figurines Pokémon en PVC - Statuette Pokémon Pop',22.99,'https://m.media-amazon.com/images/I/61l9bQSq2OL._AC_.jpg','https://www.amazon.fr/Lot-144-mini-figurines-Pok%C3%A9mon/dp/B0CKLTHC2X/ref=pd_vtp_h_pd_vtp_h_sccl_5/259-1817293-0373712?pd_rd_w=NRMzj&content-id=amzn1.sym.f66a82f4-7276-4231-ba6b-c00184d21fe0&pf_rd_p=f66a82f4-7276-4231-ba6b-c00184d21fe0&pf_rd_r=K679TAHFE6DRH10A47TH&pd_rd_wg=d58oD&pd_rd_r=e58fab45-c726-4c52-8b59-cb009a2138a6&pd_rd_i=B0CKLTHC2X&psc=1',0,0,1,0),
|
||||
('Poupée Miraculous',20.00,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/71GjnqjyTwL._AC_SL1500_.jpg','https://www.amazon.fr/Bandai-Miraculous-Marinette-articul%C3%A9e-Surprises/dp/B0BS9SVB55/ref=asc_df_B0BS9SVB55/?tag=googshopfr-21&linkCode=df0&hvadid=554851244787&hvpos=&hvnetw=g&hvrand=18051163504363436181&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9110130&hvtargid=pla-1947562984920&psc=1&mcid=56f88fb297e23a5dbd0f95da062f6b0f',1,1,1,1),
|
||||
('Poupée LOL Magic Flyers',40.00,'https://cdn.cultura.com/cdn-cgi/image/width=1280/media/pim/0035051593430.png','https://www.cultura.com/p-l-o-l-surprise-magic-flyers-poupees-volantes-7-5cm-modele-aleatoire-10232774.html?utm_source=google&utm_medium=cpc&utm_campaign=PMAX_Ludo_Enfant_Reste&gclid=EAIaIQobChMIkJ_-5uLAggMVGYVoCR29IQUsEAQYAiABEgKi4vD_BwE',1,1,0,1),
|
||||
('Cherche et trouve Pokémon',19.95,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/71E+p20bWmL._SL1500_.jpg','https://www.amazon.fr/Pok%C3%A9mon-grand-jeu-cherche-trouve/dp/2821206755/ref=asc_df_2821206755/?tag=googshopfr-21&linkCode=df0&hvadid=194872438775&hvpos=&hvnetw=g&hvrand=8069648964385930394&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9110130&hvtargid=pla-277307586168&psc=1&mcid=ae3d1499173830ea81ee2dd8a5dd2e0d',1,1,0,1),
|
||||
('Furby',30.00,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu944293_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/peluches/peluches-interactives/ref-944293-furby-violet.htm?cid=Google_Paid-Search_campaign=Fil+Rouge_Google_HM_SmartShopping_Top500_adgroup=Top+500+produits_adcr=PRODUCT_GROUP&gclid=EAIaIQobChMIu-DPhObAggMVyZHVCh1IOgwYEAQYCCABEgK3w_D_BwE&gclsrc=aw.ds',1,1,0,1),
|
||||
('Cahier Pokémon 252 cartes A4 Écarlate et Violet 3',18.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu942442_6.jpg?frz-v=3131','https://www.king-jouet.com/jeu-jouet/jeux-societes/cartes-a-collectionner/ref-942442-cahier-pokemon-252-cartes-a4-ecarlate-et-violet-3.htm',0,0,0,0);
|
||||
INSERT INTO wishlist.participant (prenom) VALUES
|
||||
('Yaya'),
|
||||
('Céline'),
|
||||
('Les parents'),
|
||||
('Vio'),
|
||||
('Néna'),
|
||||
('Tatie Pierrot'),
|
||||
('Pépé'),
|
||||
('Matthieu et Sophie'),
|
||||
('Emilie et Rodrick');
|
||||
INSERT INTO wishlist.participations (offrant,cadeau,responsable_achat) VALUES
|
||||
(3,2,3),
|
||||
(3,26,3),
|
||||
(8,14,3),
|
||||
(3,24,3),
|
||||
(3,25,3),
|
||||
(3,27,3),
|
||||
(7,15,3),
|
||||
(7,8,3),
|
||||
(2,13,3),
|
||||
(2,10,3);
|
||||
INSERT INTO wishlist.participations (offrant,cadeau,responsable_achat) VALUES
|
||||
(2,21,3),
|
||||
(2,7,3),
|
||||
(2,20,3),
|
||||
(1,3,1),
|
||||
(5,19,1),
|
||||
(4,6,1),
|
||||
(1,18,1),
|
||||
(9,28,3);
|
||||
48
schema.sql
Normal file
48
schema.sql
Normal file
@@ -0,0 +1,48 @@
|
||||
CREATE DATABASE `wishlist` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci */;
|
||||
|
||||
use `wishlist`;
|
||||
|
||||
-- wishlist.anniversaire definition
|
||||
|
||||
CREATE TABLE `anniversaire` (
|
||||
`enfant` varchar(50) DEFAULT NULL,
|
||||
`present` tinyint(1) DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
|
||||
-- wishlist.cadeau definition
|
||||
|
||||
CREATE TABLE `cadeau` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`libelle` varchar(100) NOT NULL,
|
||||
`prix` decimal(10,2) NOT NULL,
|
||||
`photo` varchar(200) NOT NULL,
|
||||
`lien` varchar(500) NOT NULL,
|
||||
`achete` tinyint(1) DEFAULT 0,
|
||||
`paye` tinyint(1) DEFAULT 0,
|
||||
`pour_noel` tinyint(1) DEFAULT 1,
|
||||
`emballe` tinyint(1) DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
|
||||
-- wishlist.participant definition
|
||||
|
||||
CREATE TABLE `participant` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`prenom` varchar(50) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
|
||||
-- wishlist.participations definition
|
||||
|
||||
CREATE TABLE `participations` (
|
||||
`offrant` int(11) NOT NULL,
|
||||
`cadeau` int(11) NOT NULL,
|
||||
`responsable_achat` int(11) DEFAULT NULL,
|
||||
KEY `participations_FK` (`cadeau`),
|
||||
KEY `participations_FK_1` (`offrant`),
|
||||
CONSTRAINT `participations_FK` FOREIGN KEY (`cadeau`) REFERENCES `cadeau` (`id`),
|
||||
CONSTRAINT `participations_FK_1` FOREIGN KEY (`offrant`) REFERENCES `participant` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
Reference in New Issue
Block a user