diff --git a/Backend/database.sqlite b/Backend/database.sqlite index f6bd01cd1..27440978b 100644 Binary files a/Backend/database.sqlite and b/Backend/database.sqlite differ diff --git "a/Backend/images/Capture_d'\303\251cran_11708979984508.png" "b/Backend/images/Capture_d'\303\251cran_11708979984508.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11708979984508.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11708980595955.png" "b/Backend/images/Capture_d'\303\251cran_11708980595955.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11708980595955.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11708980653729.png" "b/Backend/images/Capture_d'\303\251cran_11708980653729.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11708980653729.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11709497665828.png" "b/Backend/images/Capture_d'\303\251cran_11709497665828.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11709497665828.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11709497835313.png" "b/Backend/images/Capture_d'\303\251cran_11709497835313.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11709497835313.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11709498038062.png" "b/Backend/images/Capture_d'\303\251cran_11709498038062.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11709498038062.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11709498080520.png" "b/Backend/images/Capture_d'\303\251cran_11709498080520.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11709498080520.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11709498348416.png" "b/Backend/images/Capture_d'\303\251cran_11709498348416.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11709498348416.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11709499398563.png" "b/Backend/images/Capture_d'\303\251cran_11709499398563.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11709499398563.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_11709499484754.png" "b/Backend/images/Capture_d'\303\251cran_11709499484754.png" new file mode 100644 index 000000000..8a0359b5a Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_11709499484754.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_2024-01-04_0154341709498247750.png" "b/Backend/images/Capture_d'\303\251cran_2024-01-04_0154341709498247750.png" new file mode 100644 index 000000000..184ff1bad Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_2024-01-04_0154341709498247750.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_2024-01-31_2324021709070575588.png" "b/Backend/images/Capture_d'\303\251cran_2024-01-31_2324021709070575588.png" new file mode 100644 index 000000000..634b3a34c Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_2024-01-31_2324021709070575588.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_21708963457685.png" "b/Backend/images/Capture_d'\303\251cran_21708963457685.png" new file mode 100644 index 000000000..0f1c807c7 Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_21708963457685.png" differ diff --git "a/Backend/images/Capture_d'\303\251cran_21709498270883.png" "b/Backend/images/Capture_d'\303\251cran_21709498270883.png" new file mode 100644 index 000000000..0f1c807c7 Binary files /dev/null and "b/Backend/images/Capture_d'\303\251cran_21709498270883.png" differ diff --git a/Backend/images/IMG-20240118-WA00021709072940987.jpg b/Backend/images/IMG-20240118-WA00021709072940987.jpg new file mode 100644 index 000000000..7a94ea0ef Binary files /dev/null and b/Backend/images/IMG-20240118-WA00021709072940987.jpg differ diff --git a/Backend/images/IMG-20240118-WA00021709209448253.jpg b/Backend/images/IMG-20240118-WA00021709209448253.jpg new file mode 100644 index 000000000..7a94ea0ef Binary files /dev/null and b/Backend/images/IMG-20240118-WA00021709209448253.jpg differ diff --git a/Backend/images/IMG-20240118-WA00021709496599435.jpg b/Backend/images/IMG-20240118-WA00021709496599435.jpg new file mode 100644 index 000000000..7a94ea0ef Binary files /dev/null and b/Backend/images/IMG-20240118-WA00021709496599435.jpg differ diff --git a/Backend/images/IMG-20240118-WA00021709499223885.jpg b/Backend/images/IMG-20240118-WA00021709499223885.jpg new file mode 100644 index 000000000..7a94ea0ef Binary files /dev/null and b/Backend/images/IMG-20240118-WA00021709499223885.jpg differ diff --git a/Backend/images/Malt_&_Juniper_-_New_York1709215131214.png b/Backend/images/Malt_&_Juniper_-_New_York1709215131214.png new file mode 100644 index 000000000..f1aa6750a Binary files /dev/null and b/Backend/images/Malt_&_Juniper_-_New_York1709215131214.png differ diff --git a/Backend/images/Malt_&_Juniper_-_New_York1709367840579.png b/Backend/images/Malt_&_Juniper_-_New_York1709367840579.png new file mode 100644 index 000000000..f1aa6750a Binary files /dev/null and b/Backend/images/Malt_&_Juniper_-_New_York1709367840579.png differ diff --git a/Backend/images/Malt_&_Juniper_-_New_York1709499575873.png b/Backend/images/Malt_&_Juniper_-_New_York1709499575873.png new file mode 100644 index 000000000..f1aa6750a Binary files /dev/null and b/Backend/images/Malt_&_Juniper_-_New_York1709499575873.png differ diff --git a/Backend/images/Malt_&_Juniper_-_New_York1709673411401.png b/Backend/images/Malt_&_Juniper_-_New_York1709673411401.png new file mode 100644 index 000000000..f1aa6750a Binary files /dev/null and b/Backend/images/Malt_&_Juniper_-_New_York1709673411401.png differ diff --git a/Backend/images/Ohmyfood1708979757241.png b/Backend/images/Ohmyfood1708979757241.png new file mode 100644 index 000000000..c2ba55152 Binary files /dev/null and b/Backend/images/Ohmyfood1708979757241.png differ diff --git a/Backend/images/Ohmyfood1709498197127.png b/Backend/images/Ohmyfood1709498197127.png new file mode 100644 index 000000000..c2ba55152 Binary files /dev/null and b/Backend/images/Ohmyfood1709498197127.png differ diff --git a/Backend/images/Ohmyfood1709499125449.png b/Backend/images/Ohmyfood1709499125449.png new file mode 100644 index 000000000..c2ba55152 Binary files /dev/null and b/Backend/images/Ohmyfood1709499125449.png differ diff --git a/FrontEnd/assets/images/abajour-tahina.png b/Backend/images/abajour-tahina1708963417801.png similarity index 100% rename from FrontEnd/assets/images/abajour-tahina.png rename to Backend/images/abajour-tahina1708963417801.png diff --git a/Backend/images/abajour-tahina1708963552556.png b/Backend/images/abajour-tahina1708963552556.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1708963552556.png differ diff --git a/Backend/images/abajour-tahina1708963685317.png b/Backend/images/abajour-tahina1708963685317.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1708963685317.png differ diff --git a/Backend/images/abajour-tahina1709499354543.png b/Backend/images/abajour-tahina1709499354543.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709499354543.png differ diff --git a/Backend/images/abajour-tahina1709500828515.png b/Backend/images/abajour-tahina1709500828515.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709500828515.png differ diff --git a/Backend/images/abajour-tahina1709501252229.png b/Backend/images/abajour-tahina1709501252229.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709501252229.png differ diff --git a/Backend/images/abajour-tahina1709501623798.png b/Backend/images/abajour-tahina1709501623798.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709501623798.png differ diff --git a/Backend/images/abajour-tahina1709501850973.png b/Backend/images/abajour-tahina1709501850973.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709501850973.png differ diff --git a/Backend/images/abajour-tahina1709502929418.png b/Backend/images/abajour-tahina1709502929418.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709502929418.png differ diff --git a/Backend/images/abajour-tahina1709503059776.png b/Backend/images/abajour-tahina1709503059776.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709503059776.png differ diff --git a/Backend/images/abajour-tahina1709503099674.png b/Backend/images/abajour-tahina1709503099674.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709503099674.png differ diff --git a/Backend/images/abajour-tahina1709503189922.png b/Backend/images/abajour-tahina1709503189922.png new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/Backend/images/abajour-tahina1709503189922.png differ diff --git a/Backend/images/appartement-paris-v1708963871623.png b/Backend/images/appartement-paris-v1708963871623.png new file mode 100644 index 000000000..d5784d495 Binary files /dev/null and b/Backend/images/appartement-paris-v1708963871623.png differ diff --git a/Backend/images/appartement-paris-v1709500836863.png b/Backend/images/appartement-paris-v1709500836863.png new file mode 100644 index 000000000..d5784d495 Binary files /dev/null and b/Backend/images/appartement-paris-v1709500836863.png differ diff --git a/Backend/images/appartement-paris-v1709501108931.png b/Backend/images/appartement-paris-v1709501108931.png new file mode 100644 index 000000000..d5784d495 Binary files /dev/null and b/Backend/images/appartement-paris-v1709501108931.png differ diff --git a/Backend/images/appartement-paris-v1709673875524.png b/Backend/images/appartement-paris-v1709673875524.png new file mode 100644 index 000000000..d5784d495 Binary files /dev/null and b/Backend/images/appartement-paris-v1709673875524.png differ diff --git a/Backend/images/appartement-paris-x1708963747418.png b/Backend/images/appartement-paris-x1708963747418.png new file mode 100644 index 000000000..9d5f5cbde Binary files /dev/null and b/Backend/images/appartement-paris-x1708963747418.png differ diff --git a/Backend/images/appartement-paris-x1708963975367.png b/Backend/images/appartement-paris-x1708963975367.png new file mode 100644 index 000000000..9d5f5cbde Binary files /dev/null and b/Backend/images/appartement-paris-x1708963975367.png differ diff --git a/Backend/images/appartement-paris-x1709499509167.png b/Backend/images/appartement-paris-x1709499509167.png new file mode 100644 index 000000000..9d5f5cbde Binary files /dev/null and b/Backend/images/appartement-paris-x1709499509167.png differ diff --git a/Backend/images/appartement-paris-x1709500846437.png b/Backend/images/appartement-paris-x1709500846437.png new file mode 100644 index 000000000..9d5f5cbde Binary files /dev/null and b/Backend/images/appartement-paris-x1709500846437.png differ diff --git a/Backend/images/appartement-paris-x1709501262589.png b/Backend/images/appartement-paris-x1709501262589.png new file mode 100644 index 000000000..9d5f5cbde Binary files /dev/null and b/Backend/images/appartement-paris-x1709501262589.png differ diff --git a/Backend/images/appartement-paris-x1709501616714.png b/Backend/images/appartement-paris-x1709501616714.png new file mode 100644 index 000000000..9d5f5cbde Binary files /dev/null and b/Backend/images/appartement-paris-x1709501616714.png differ diff --git a/Backend/images/appartement-paris-x1709502939012.png b/Backend/images/appartement-paris-x1709502939012.png new file mode 100644 index 000000000..9d5f5cbde Binary files /dev/null and b/Backend/images/appartement-paris-x1709502939012.png differ diff --git a/Backend/images/appartement-paris-xviii1709499380026.png b/Backend/images/appartement-paris-xviii1709499380026.png new file mode 100644 index 000000000..9d0e54cce Binary files /dev/null and b/Backend/images/appartement-paris-xviii1709499380026.png differ diff --git a/Backend/images/appartement-paris-xviii1709500856352.png b/Backend/images/appartement-paris-xviii1709500856352.png new file mode 100644 index 000000000..9d0e54cce Binary files /dev/null and b/Backend/images/appartement-paris-xviii1709500856352.png differ diff --git a/Backend/images/appartement-paris-xviii1709501117496.png b/Backend/images/appartement-paris-xviii1709501117496.png new file mode 100644 index 000000000..9d0e54cce Binary files /dev/null and b/Backend/images/appartement-paris-xviii1709501117496.png differ diff --git a/Backend/images/bar-lullaby-paris1708963665632.png b/Backend/images/bar-lullaby-paris1708963665632.png new file mode 100644 index 000000000..953b074f8 Binary files /dev/null and b/Backend/images/bar-lullaby-paris1708963665632.png differ diff --git a/Backend/images/bar-lullaby-paris1708963728327.png b/Backend/images/bar-lullaby-paris1708963728327.png new file mode 100644 index 000000000..953b074f8 Binary files /dev/null and b/Backend/images/bar-lullaby-paris1708963728327.png differ diff --git a/Backend/images/bar-lullaby-paris1709499305172.png b/Backend/images/bar-lullaby-paris1709499305172.png new file mode 100644 index 000000000..953b074f8 Binary files /dev/null and b/Backend/images/bar-lullaby-paris1709499305172.png differ diff --git a/Backend/images/finn-QhjgAniliuY-unsplash_11709215048916.png b/Backend/images/finn-QhjgAniliuY-unsplash_11709215048916.png new file mode 100644 index 000000000..f1aa6750a Binary files /dev/null and b/Backend/images/finn-QhjgAniliuY-unsplash_11709215048916.png differ diff --git a/Backend/images/hotel-first-arte-new-delhi1709500866933.png b/Backend/images/hotel-first-arte-new-delhi1709500866933.png new file mode 100644 index 000000000..9040b6598 Binary files /dev/null and b/Backend/images/hotel-first-arte-new-delhi1709500866933.png differ diff --git a/Backend/images/hotel-first-arte-new-delhi1709501276956.png b/Backend/images/hotel-first-arte-new-delhi1709501276956.png new file mode 100644 index 000000000..9040b6598 Binary files /dev/null and b/Backend/images/hotel-first-arte-new-delhi1709501276956.png differ diff --git a/Backend/images/hotel-first-arte-new-delhi1709502813664.png b/Backend/images/hotel-first-arte-new-delhi1709502813664.png new file mode 100644 index 000000000..9040b6598 Binary files /dev/null and b/Backend/images/hotel-first-arte-new-delhi1709502813664.png differ diff --git a/Backend/images/la-balisiere1708963798008.png b/Backend/images/la-balisiere1708963798008.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1708963798008.png differ diff --git a/Backend/images/la-balisiere1709499369952.png b/Backend/images/la-balisiere1709499369952.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709499369952.png differ diff --git a/Backend/images/la-balisiere1709500879174.png b/Backend/images/la-balisiere1709500879174.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709500879174.png differ diff --git a/Backend/images/la-balisiere1709501245756.png b/Backend/images/la-balisiere1709501245756.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709501245756.png differ diff --git a/Backend/images/la-balisiere1709501865919.png b/Backend/images/la-balisiere1709501865919.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709501865919.png differ diff --git a/Backend/images/la-balisiere1709502747310.png b/Backend/images/la-balisiere1709502747310.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709502747310.png differ diff --git a/Backend/images/la-balisiere1709502805265.png b/Backend/images/la-balisiere1709502805265.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709502805265.png differ diff --git a/Backend/images/la-balisiere1709503705323.png b/Backend/images/la-balisiere1709503705323.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709503705323.png differ diff --git a/Backend/images/la-balisiere1709673649251.png b/Backend/images/la-balisiere1709673649251.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709673649251.png differ diff --git a/Backend/images/la-balisiere1709673669173.png b/Backend/images/la-balisiere1709673669173.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709673669173.png differ diff --git a/Backend/images/la-balisiere1709673947177.png b/Backend/images/la-balisiere1709673947177.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709673947177.png differ diff --git a/Backend/images/la-balisiere1709673983979.png b/Backend/images/la-balisiere1709673983979.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709673983979.png differ diff --git a/Backend/images/la-balisiere1709673987773.png b/Backend/images/la-balisiere1709673987773.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709673987773.png differ diff --git a/Backend/images/la-balisiere1709674089343.png b/Backend/images/la-balisiere1709674089343.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709674089343.png differ diff --git a/Backend/images/la-balisiere1709674174587.png b/Backend/images/la-balisiere1709674174587.png new file mode 100644 index 000000000..8848c50ca Binary files /dev/null and b/Backend/images/la-balisiere1709674174587.png differ diff --git a/Backend/images/le-coteau-cassis1709499362801.png b/Backend/images/le-coteau-cassis1709499362801.png new file mode 100644 index 000000000..4b4210985 Binary files /dev/null and b/Backend/images/le-coteau-cassis1709499362801.png differ diff --git a/Backend/images/le-coteau-cassis1709500766511.png b/Backend/images/le-coteau-cassis1709500766511.png new file mode 100644 index 000000000..4b4210985 Binary files /dev/null and b/Backend/images/le-coteau-cassis1709500766511.png differ diff --git a/Backend/images/le-coteau-cassis1709501695660.png b/Backend/images/le-coteau-cassis1709501695660.png new file mode 100644 index 000000000..4b4210985 Binary files /dev/null and b/Backend/images/le-coteau-cassis1709501695660.png differ diff --git a/Backend/images/le-coteau-cassis1709502155511.png b/Backend/images/le-coteau-cassis1709502155511.png new file mode 100644 index 000000000..4b4210985 Binary files /dev/null and b/Backend/images/le-coteau-cassis1709502155511.png differ diff --git a/Backend/images/le-coteau-cassis1709502792986.png b/Backend/images/le-coteau-cassis1709502792986.png new file mode 100644 index 000000000..4b4210985 Binary files /dev/null and b/Backend/images/le-coteau-cassis1709502792986.png differ diff --git a/Backend/images/restaurant-sushisen-londres1708964320915.png b/Backend/images/restaurant-sushisen-londres1708964320915.png new file mode 100644 index 000000000..9ef5faed7 Binary files /dev/null and b/Backend/images/restaurant-sushisen-londres1708964320915.png differ diff --git a/Backend/images/restaurant-sushisen-londres1708997371330.png b/Backend/images/restaurant-sushisen-londres1708997371330.png new file mode 100644 index 000000000..9ef5faed7 Binary files /dev/null and b/Backend/images/restaurant-sushisen-londres1708997371330.png differ diff --git a/Backend/images/restaurant-sushisen-londres1708997483061.png b/Backend/images/restaurant-sushisen-londres1708997483061.png new file mode 100644 index 000000000..9ef5faed7 Binary files /dev/null and b/Backend/images/restaurant-sushisen-londres1708997483061.png differ diff --git a/Backend/images/restaurant-sushisen-londres1708997581729.png b/Backend/images/restaurant-sushisen-londres1708997581729.png new file mode 100644 index 000000000..9ef5faed7 Binary files /dev/null and b/Backend/images/restaurant-sushisen-londres1708997581729.png differ diff --git a/Backend/images/restaurant-sushisen-londres1709049443315.png b/Backend/images/restaurant-sushisen-londres1709049443315.png new file mode 100644 index 000000000..9ef5faed7 Binary files /dev/null and b/Backend/images/restaurant-sushisen-londres1709049443315.png differ diff --git a/Backend/images/restaurant-sushisen-londres1709209529072.png b/Backend/images/restaurant-sushisen-londres1709209529072.png new file mode 100644 index 000000000..9ef5faed7 Binary files /dev/null and b/Backend/images/restaurant-sushisen-londres1709209529072.png differ diff --git a/Backend/images/restaurant-sushisen-londres1709499527751.png b/Backend/images/restaurant-sushisen-londres1709499527751.png new file mode 100644 index 000000000..9ef5faed7 Binary files /dev/null and b/Backend/images/restaurant-sushisen-londres1709499527751.png differ diff --git a/Backend/images/structures-thermopolis1709501291937.png b/Backend/images/structures-thermopolis1709501291937.png new file mode 100644 index 000000000..16510c087 Binary files /dev/null and b/Backend/images/structures-thermopolis1709501291937.png differ diff --git a/Backend/images/structures-thermopolis1709501632939.png b/Backend/images/structures-thermopolis1709501632939.png new file mode 100644 index 000000000..16510c087 Binary files /dev/null and b/Backend/images/structures-thermopolis1709501632939.png differ diff --git a/FrontEnd/assets/icons/picture.svg b/FrontEnd/assets/icons/picture.svg new file mode 100644 index 000000000..270433e91 --- /dev/null +++ b/FrontEnd/assets/icons/picture.svg @@ -0,0 +1,3 @@ + + + diff --git a/FrontEnd/assets/images/Malt & Juniper - New York.png b/FrontEnd/assets/images/Malt & Juniper - New York.png new file mode 100644 index 000000000..f1aa6750a Binary files /dev/null and b/FrontEnd/assets/images/Malt & Juniper - New York.png differ diff --git a/FrontEnd/assets/images/abajour-tahina.gif b/FrontEnd/assets/images/abajour-tahina.gif new file mode 100644 index 000000000..b5b314e19 Binary files /dev/null and b/FrontEnd/assets/images/abajour-tahina.gif differ diff --git a/FrontEnd/assets/login.js b/FrontEnd/assets/login.js new file mode 100644 index 000000000..691a3779b --- /dev/null +++ b/FrontEnd/assets/login.js @@ -0,0 +1,100 @@ +const emailUser = document.querySelector('#email'); +const passwordUser = document.querySelector('#password'); +const formulaire = document.querySelector('form'); +const message = document.querySelector('form .erreur'); +const loged = window.localStorage.loged; + + + + +async function validateForm() { + formulaire.addEventListener('submit', async (event) => { + + + event.preventDefault(); + //declarer les variables et recuperer la saisi + let email = emailUser.value; + let password = passwordUser.value; + //affichage console + + if (!email || !password) { + // Gérer l'erreur de validation, par exemple, afficher un message à l'utilisateur + console.log('Veuillez remplir tous les champs obligatoires.'); + message.textContent = 'Veuillez remplir tous les champs obligatoires.'; + return; + } + + + try { + //fetch post + + const response = await fetch('http://localhost:5678/api/users/login', { + + method: 'POST', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + email: email, + password: password + }) + }) + if (!response.ok) { + console.log(response.status, 'Unauthorized'); + throw new Error('Non autorisé (Unauthorized). Veuillez vous connecter.', response.status); + } + + const data = await response.json(); + console.log(data); + + + + if (data.token) { + console.log(data.token); + //redirection vers la page d'accueil en mode creation + window.sessionStorage.loged = true; + window.sessionStorage.accessToken = data.token; + console.log(data.token); + window.location.href = 'index.html'; + console.log(window.sessionStorage.loged); + + + } else { + + message.textContent = 'Erreur dans l’identifiant ou le mot de passe'; + message.style.color = 'red'; + window.localStorage.removeItem('token'); + window.sessionStorage.removeItem('token'); + + } + } catch (error) { + // console.log('Error:', error.name, 'Message:', error.message); + if (error instanceof TypeError) { + // La requête a échoué car le service n'est pas joignable + console.log('Le service n\'est pas joignable. Veuillez réessayer plus tard.'); + message.textContent = 'Le service n\'est pas joignable. Veuillez réessayer plus tard.' + + } else { + // Une autre erreur s'est produite + console.log('Une erreur inattendue s\'est produite:', error); + message.textContent = 'Une erreur inattendue s\'est produite.' + + + } + + } + + + }) + +} + + +function init() { + + validateForm(); + +} + +init(); diff --git a/FrontEnd/assets/main.js b/FrontEnd/assets/main.js new file mode 100644 index 000000000..8034e0524 --- /dev/null +++ b/FrontEnd/assets/main.js @@ -0,0 +1,444 @@ + +/************************** recuperer les travaux ******************/ +/** + * recuperation des travaux + * @returns + */ +async function getWorks() { + let url = 'http://localhost:5678/api/works'; + try { + let res = await fetch(url); + console.log(res); + return await res.json(); + } catch (error) { + console.log(error); + } +} +/*************************** recuperer les categories */ +async function getCategories() { + let url = 'http://localhost:5678/api/categories'; + try { + let res = await fetch(url); + console.log(res); + + return await res.json(); + } catch (error) { + console.log(error); + } +} +/********************* boutons par category ************************/ +async function boutonsByCategory() { + + let categories = await getCategories(); + let html = ''; + let htmlCat = ''; + categories.forEach(category => { + let htmlSegment = ``; + html += htmlSegment; + let btn = document.querySelector('.btn'); + btn.id = category.id; + + }); + let container = document.querySelector('.btn-container'); + container.innerHTML = html; + +} + +/******************* filtrer les travaux par categorie**************/ +async function filterWorks() { + let html = ''; + let container = document.querySelector('.gallery'); + + //recuperer les travaux + let works = await getWorks(); + works.forEach(work => { + let htmlSegment = `
+ +
${work.title}
+ +
`; + + html += htmlSegment; + //recuperer categoryId + let btnId = work.categoryId; + }); + + container.innerHTML = html; + + //recuperer les boutons + const buttons = document.querySelectorAll('.btn'); + + // //parcourir les boutons + buttons.forEach(button => { + //ajouter un ecouteur d'evenement pour chaque bouton + button.addEventListener("click", (e) => { + + //recuperer la valeur du bouton clique + const idCategory = e.target.id; + console.log("je me base sur cette id " + idCategory); + + if (idCategory !== "") { + + //filtrer les travaux via la fonction filter + const filteredWorks = works.filter(work => work.categoryId == idCategory); + console.log(" resultat " + filteredWorks); + + //boucle pour afficher les travaux filtres par categorie + renderWorks(filteredWorks); + + } + else if (idCategory == "") { + //afficher tous les travaux + renderWorks(works); + + } + + }) + + }) + + + + +} + +/********************************** afficher les travaux **********/ + +function renderWorks(works) { + + let galery = document.querySelector('.gallery'); + galery.innerHTML = " "; + works.forEach(work => { + let figure = document.createElement("figure"); + let img = document.createElement("img"); + let figcaption = document.createElement("figcaption"); + galery.appendChild(figure); + figure.appendChild(img); + figure.appendChild(figcaption); + img.src = work.imageUrl; + figcaption.innerText = work.title; + }) + + +} + + +/*********************************page en mode creation **********/ +function modeCreation() { + const loged = window.sessionStorage.loged; + const logout = document.querySelector('.login'); + let racine = document.querySelector('body'); + let div = document.createElement('div'); + let title = document.querySelector('#portfolio h2'); + let btnsFilter = document.querySelector('.btn-container'); + + if (loged) { + //creer div pour le mode creation + div.classList.add('creation'); + racine.appendChild(div); + div.innerHTML = ` Mode création`; + + //ajouter le lien modifier + title.innerHTML = `

Mes Projetsmodifier

`; + + // changer login en logout + logout.textContent = "logout"; + logout.innerHTML = `logout`; + logout.addEventListener("click", (e) => { + console.log("tu es logout"); + // window.sessionStorage.loged = false; + window.sessionStorage.clear(); + }) + + createModal(); + + // retirer les boutons de filtrages + let btns = document.querySelectorAll('.btn'); + btnsFilter.style.display = "none"; + console.log(btnsFilter.innerHTML); + } +} + + +/********************************* creation de la modal ********* */ +async function createModal() { + + + // Création des éléments + + var modal = document.createElement('div'); + modal.id = 'myModal'; + modal.className = 'modal'; + + var modalContent = document.createElement('div'); + modalContent.className = 'modal-content'; + + var title = document.createElement('h2'); + title.textContent = 'Galerie photo'; + + var closeBtn = document.createElement('span'); + closeBtn.className = 'close'; + closeBtn.id = 'closeModalBtn'; + closeBtn.innerHTML = ''; + + var miniGallery = document.createElement('div'); + miniGallery.className = 'miniGallery'; + + var retour = document.createElement('a'); + retour.className = 'return'; + retour.innerHTML = ''; + + var addButton = document.createElement('button'); + addButton.className = 'btn btn-primary'; + addButton.textContent = 'Ajouter une photo'; + + var erreur = document.createElement('p'); + erreur.className = 'erreur'; + + + + // Ajout des éléments à la modal + modalContent.appendChild(title); + modalContent.appendChild(closeBtn); + modalContent.appendChild(miniGallery); + modalContent.appendChild(addButton); + modalContent.appendChild(retour); + modal.appendChild(modalContent); + modalContent.appendChild(erreur); + + + retour.style.display = "none"; + erreur.innerHTML = ''; + + // Ajout de la modal à la fin du body + document.body.appendChild(modal); + + // Event listener pour fermer la modal + closeBtn.addEventListener('click', function () { + modal.style.display = 'none'; + }); + // Event listener pour ouvrir la modal + addButton.addEventListener('click', async function () { + //formulaire d'ajout photo + retour.style.display = "block"; + addButton.style.display = "none"; + erreur.innerHTML = ''; + miniGallery.innerHTML = ''; + var form = document.createElement('form'); + form.className = 'formAjout'; + miniGallery.appendChild(form); + let formulaireAdd = ` +
+ + + +

jpg, png : 4mo max

+
+

+ + + + + `; + + form.innerHTML = formulaireAdd; + retour.addEventListener('click', function () { + addButton.style.display = "block"; + retour.style.display = "none"; + valider.style.display = "none"; + form.innerHTML = ''; + title.textContent = 'Galerie photo'; + getModal(); + }) + let htmlCat = ' '; + let categories = await getCategories(); + categories.forEach(element => { + let op = ``; + htmlCat += op; + }); + + let cat = document.querySelector('#categoryInput'); + cat.appendChild(new Option('Tous', 'all')); + cat.innerHTML = htmlCat; + let divForm = document.querySelector('.file-input-wrapper'); + let inputFile = document.querySelector('#fileInput'); + let labelajout = document.querySelector('.labelajout'); + let textdescription = document.querySelector('.textdescription'); + let faImage = document.querySelector('.fa-image'); + let titleInput = document.querySelector('#titleInput'); + let valider = document.querySelector('.btn-secondary'); + + inputFile.addEventListener('change', function () { + let file = inputFile.files[0]; + console.log(file); + //recuperer le titre de l'image et le mettre dans input=text + const namefileInput = file.name; + console.log(namefileInput); + //eviter l'affichage de l'extension du fichier + const namefile = namefileInput.split('.').slice(0, -1).join('.'); + titleInput.value = namefile; + + const reader = new FileReader(); + reader.onload = function () { + let img = document.createElement('img'); + img.src = reader.result; + img.className = 'imgInput'; + miniGallery.appendChild(img); + labelajout.style.display = "none"; + textdescription.style.display = "none"; + faImage.style.display = "none"; + divForm.appendChild(img); + } + reader.readAsDataURL(file); + }); + /************* fonction d'ajout de projet ************************** */ + ajoutWork(); + }); + // Event listener pour fermer la modal en cliquant à l'extérieur + window.addEventListener('click', function (event) { + if (event.target === modal) { + modal.style.display = 'none'; + retour.style.display = "none"; + addButton.style.display = "block"; + title.textContent = 'Galerie photo'; + } + }); + // Event listener pour ouvrir la modal en cliquant sur Modifier + let modalLien = document.querySelector('.openModal'); + modalLien.addEventListener("click", async (e) => { + getModal(); + erreur.innerHTML = ''; + + }) +} + +async function getModal() { + //afficher le modale + let modal = document.querySelector('.modal'); + let btn = document.querySelector('.btn-primary'); + btn.style.display = "block"; + let works = await getWorks(); + modal.style.display = "block"; + if (modal.style.display == "block") { + let htmlModal = ' '; + works.forEach(workModal => { + let htmlMiniGalerie = `
+ + +
`; + htmlModal += htmlMiniGalerie; + }); + + let containerModal = document.querySelector('.miniGallery'); + containerModal.innerHTML = htmlModal; + // Ajouter un gestionnaire d'événements pour chaque icône de corbeille + const trashIcons = document.querySelectorAll('.fa-trash-can'); + trashIcons.forEach(icon => { + icon.addEventListener('click', async (e) => { + //console.log('coucou '+e.target.dataset.id); + const idToDelete = e.target.dataset.id; + await deleteWork(idToDelete); + filterWorks(); + getModal(); + e.preventDefault(); + }); + }); + } +} +/******************* supprimer un projet ************************ */ +function deleteWork(id) { + const loged = window.sessionStorage.loged; + const accessToken = window.sessionStorage.accessToken; + var erreur = document.querySelector('.modal .erreur'); + if (loged) { + return fetch(`http://localhost:5678/api/works/${id}`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}` + } + }) + .then(function (res) { + if (res.status === 401) { + throw new Error('Non autorisé (Unauthorized). Veuillez vous connecter.'); + } else if (!res.ok) { + throw new Error(`La suppression a échoué avec le statut ${res.status}`); + } + }) + .then(function (data) { + console.log('Suppression réussie', data); + erreur.innerHTML = 'Suppression réussie'; + setTimeout(function () { + erreur.classList.remove('erreur'); + erreur.innerHTML = ''; + }, 3000); + }) + .catch(function (error) { + console.error('Erreur lors de la suppression :', error.message); + }); + } else { + console.error('L\'utilisateur n\'est pas connecté. La suppression n\'est pas autorisée.'); + } +} + +/******************* ajouter un projet ************************** */ +function ajoutWork() { + const accessToken = window.sessionStorage.accessToken; + var message = document.querySelector('.formAjout .message'); + var titleInput = document.getElementById('titleInput'); + let formValider = document.querySelector('.formAjout'); + formValider.addEventListener("submit", async function (e) { + e.preventDefault(); + var fileInput = document.querySelector('input[type="file"]'); + var file = fileInput.files[0]; + // Vérifier que tous les champs sont remplis + if ((titleInput.value == "") || !file || !categoryInput) { + message.innerHTML = "Veuillez remplir tous les champs du formulaire."; + return; + } + // Vérifier le format de l'image (JPG ou PNG) + else if (!file.type.match('image/jpeg') && !file.type.match('image/png')) { + message.innerHTML = "Veuillez sélectionner une image au format JPG ou PNG."; + return; + } + // Vérifier la taille de l'image (max 4 Mo) + if (file.size > 4 * 1024 * 1024) { + message.innerHTML = "La taille de l'image ne doit pas dépasser 4 Mo."; + return; + } + // Créez un objet FormData pour rassembler les données du formulaire + var formData = new FormData(); + formData.append('title', document.getElementById('titleInput').value); + formData.append('image', file); + formData.append('category', document.getElementById('categoryInput').value); + try { + const response = await fetch('http://localhost:5678/api/works', { + method: 'POST', + body: formData, + headers: { + 'Authorization': `Bearer ${accessToken}` + } + }); + if (!response.ok) { + throw new Error('Non autorisé (Unauthorized). Veuillez vous connecter.', response.status); + } + const data = await response.json(); + console.log("Votre projet a bien été ajouté"); + filterWorks(); + getModal(); + e.preventDefault(); + } catch (error) { + console.error('Erreur lors de l\'ajout de la photo :', error.message); + } + }); +} + +function init() { + + boutonsByCategory(); + modeCreation(); + filterWorks(); + +} + +init(); diff --git a/FrontEnd/assets/style.css b/FrontEnd/assets/style.css index 7bca0ed1a..290c9833f 100644 --- a/FrontEnd/assets/style.css +++ b/FrontEnd/assets/style.css @@ -3,19 +3,87 @@ License: none (public domain) */ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { margin: 0; padding: 0; border: 0; @@ -23,46 +91,90 @@ time, mark, audio, video { font: inherit; vertical-align: baseline; } + /* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { display: block; } + body { line-height: 1; + background: #FFFEF8; + position: relative; + +} + +header { + background: #FFF; + padding: 20px; +} + + + +input { + height: 50px; + font-size: 1.2em; + border: none; + border-bottom: solid 1px; +} + +textarea { + border: none; + border-bottom: solid 1px; } -ol, ul { + +ol, +ul { list-style: none; } -blockquote, q { + +blockquote, +q { quotes: none; } -blockquote:before, blockquote:after, -q:before, q:after { + +blockquote:before, +blockquote:after, +q:before, +q:after { content: ''; content: none; } + table { border-collapse: collapse; border-spacing: 0; } + /** end reset css**/ body { max-width: 1140px; - margin:auto; - font-family: 'Work Sans' ; + margin: auto; + font-family: 'Work Sans'; font-size: 14px; } + header { display: flex; justify-content: space-between; margin: 50px 0 } + section { margin: 50px 0 } -h1{ +h1 { display: flex; flex-direction: column; font-family: 'Syne'; @@ -71,40 +183,55 @@ h1{ color: #B1663C } -h1 > span { +h1>span { font-family: 'Work Sans'; - font-size:10px; + font-size: 10px; letter-spacing: 0.1em; -; + ; } -h2{ +h2 { font-family: 'Syne'; font-weight: 700; font-size: 30px; color: #1D6154 } + nav ul { display: flex; align-items: center; list-style-type: none; } + nav li { padding: 0 10px; font-size: 1.2em; } +nav li a { + color: #000; + text-decoration: none; + +} + +a { + text-decoration: none; +} + li:hover { color: #B1663C; } + #introduction { display: flex; align-items: center; } + #introduction figure { flex: 1 } + #introduction img { display: block; margin: auto; @@ -114,6 +241,7 @@ li:hover { #introduction article { flex: 1 } + #introduction h2 { margin-bottom: 1em; } @@ -121,10 +249,34 @@ li:hover { #introduction p { margin-bottom: 0.5em; } + #portfolio h2 { text-align: center; + margin-bottom: 1em; } + +#portfolio i { + + width: 15.58px; + height: 15.58px; + flex-shrink: 0; + padding-left: 20px; + color: #000; + font-size: 14px; +} + +#portfolio a { + color: #000; + padding-left: 5px; + text-align: center; + font-family: "Work Sans"; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: normal; +} + .gallery { width: 100%; display: grid; @@ -134,23 +286,32 @@ li:hover { } .gallery img { + width: 100%; + } + #contact { width: 50%; -margin: auto; + margin: auto; + } -#contact > * { + + +#contact>* { text-align: center; + } -#contact h2{ + +#contact h2 { margin-bottom: 20px; } + #contact form { text-align: left; - margin-top:30px; + margin-top: 30px; display: flex; flex-direction: column; } @@ -161,28 +322,476 @@ margin: auto; border: none; box-shadow: 0px 4px 14px rgba(0, 0, 0, 0.09); } + #contact label { margin: 2em 0 1em 0; } + #contact textarea { border: none; box-shadow: 0px 4px 14px rgba(0, 0, 0, 0.09); } -input[type="submit"]{ +input[type="submit"] { font-family: 'Syne'; font-weight: 700; color: white; background-color: #1D6154; - margin : 2em auto ; + margin: 2em auto; width: 180px; text-align: center; - border-radius: 60px ; + border-radius: 60px; } footer nav ul { display: flex; justify-content: flex-end; - margin: 2em + margin: 2em; +} + +footer { + background: #FFF; + padding: 2px 0px; + position: relative; + top: 180px; } +.btn { + + + height: 37px; + flex-shrink: 0; + border-radius: 60px; + border: 1px solid #1D6154; + + + /*style text*/ + + color: #1D6154; + text-align: center; + font-family: Syne; + font-size: 16px; + font-style: normal; + font-weight: 700; + line-height: normal; + + padding: 9px 15px; + +} + +.btn:hover { + background: #1D6154; + color: #FFF; +} + +.btn-container { + display: flex; + justify-content: center; + margin: 2em; + gap: 15px; +} + + +.modaleupdate { + + display: flex; + +} + +.creation { + display: flex; + justify-content: center; + align-items: center; + /* margin-bottom: 2em; */ + + /* width: 1440px; */ + height: 59px; + flex-shrink: 0; + background: #000; + color: #FFF; + position: absolute; + top: -50px; + width: 100%; + z-index: 1; + + + +} + +.creation a { + + color: #FFF; + text-align: center; + font-family: "Work Sans"; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; + + padding-left: 10px; + +} + + + +/* partie modal */ + +.modal { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-color: rgba(0, 0, 0, 0.5); + border-radius: 10px; + +} + +.modal-content { + background-color: #fefefe; + margin: auto; + padding: 80px; + border: 1px solid #888; + width: 30%; + height: 500px; + + display: flex; + flex-direction: column; + + + align-items: center; + position: relative; + top: 90px; + left: 0; + right: 0; + + + + +} + +.close { + color: #000; + width: 24px; + height: 24px; + cursor: pointer; + position: absolute; + top: 26px; + right: 30px; +} + + + +.modal-content h2 { + color: #000; + width: 100%; + text-align: center; + font-family: "Work Sans"; + font-size: 26px; + font-style: normal; + font-weight: 400; + position: relative; + top: -10px; + + margin-bottom: 30px; + + + + +} + +.modal-content .btn { + + background: #1D6154; + color: #FFF; + width: 237px; + height: 36px; + position: absolute; + bottom: 29px; + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + text-align: center; + + +} + +.modal-content::after { + + content: ""; + display: block; + width: 420px; + height: 1px; + background-color: rgba(179, 179, 179, 1); + position: absolute; + + top: 571px; + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + +} + +.modal-content .erreur { + + position: absolute; + top: 500px; + padding: 0; + font-size: 14px; + font-weight: 600; + color: #1D6154; + + animation: hide 5s ease-in-out; + + +} +@keyframes hide { + + 0% { opacity: 0; } + 20% { opacity: 1; } + 80% { opacity: 1; } + 100% { opacity: 0; } + + +} + +/* gallerie modal */ + +.miniGallery { + width: 100%; + + display: grid; + grid: center; + + grid-template-columns: repeat(5, minmax(85px, 0.1fr)); + + + row-gap: 15px; + margin: 0; + padding: 0; + justify-content: center; + position: relative; + top: -20px; +} + +.miniGallery img { + + padding: 0; + margin: 0; + width: 78.123px; + height: 104.08px; + border: 0; + position: relative; + + +} + + + + +figure { + + position: relative; + display: flex; + flex-direction: column; + justify-content: flex-start; + gap: 10px; +} + + +.modal .fa-trash-can { + + position: absolute; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + border-radius: 2px; + top: 10px; + right: 14px; + background-color: #000; + color: #FFF; + cursor: pointer; + + +} + + +.formAjout { + + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; + gap: 21px; + + position: relative; + +} +.formAjout .message { + + color: red; + width: 360px; + animation: shake 5.5s; +} + + +.file-input-wrapper { + + position: relative; + + display: inline-block; + width: 100%; + text-align: center; + width: 420px; + height: 169px; + border-radius: 3px; + background: rgba(232, 241, 246, 1); + + box-shadow: 0px 4px 14px rgba(0, 0, 0, 0.09); + + display: flex; + justify-content: center; + align-items: center; +} + +.file-input-wrapper input[type="file"] { + + opacity: 0; + +} + + + + +#titleInput, +#categoryInput { + width: 420px; + height: 51px; + background: #FFF; + + box-shadow: 0px 4px 14px 0px rgba(0, 0, 0, 0.09); + +} + +.file-input-wrapper .labelajout { + + text-align: center; + position: absolute; + left: 127px; + top: 86px; + /* width: 200%; */ + /* margin-left: auto; */ + color: rgba(48, 102, 133, 1); + size: 14px; + font-weight: 600; + line-height: 16.42px; + border: 2px solid #B3B3B3; + background: rgba(203, 214, 220, 1); + border-radius: 50px; + padding: 10px; +} + +.file-input-wrapper .fa-image { + + + + position: absolute; + top: -6px; + left: 170px; + + + + +} + +.file-input-wrapper .textdescription { + + Width: 100%; + Height: 12px; + Top: 924px; + Left: 673px; + size: 60px; + position: absolute; + top: 129px; + left: 3px; + margin-left: auto; +} + +#titleInput, +#categoryInput, +#descriptionInput { + border: none; +} + +.labform { + + + font-family: Work Sans; + font-size: 14px; + font-weight: 600; + line-height: 16px; + letter-spacing: 0em; + text-align: left; + + +} + +.return { + + + position: absolute; + top: 26px; + left: 30px; + cursor: pointer; + +} + +.form h2 { + + margin: 0; + color: #1D6154; + +} + +select, +#titleInput { + + font-size: 14px; + padding-left: 10px; + Font-family: Work Sans; + +} + +/*****************************************************************/ + +.file-input-wrapper .imgInput { + + + + position: absolute; + top: 0; + left: 0; + right: 0; + height: 169px; + width: 129px; + + margin-left: auto; + margin-right: auto; + +} + +.modal-content .btn-secondary { + + position: absolute; + bottom: -103px; + left: 85px; + right: 0; + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; + top: 480px; +} \ No newline at end of file diff --git a/FrontEnd/index.html b/FrontEnd/index.html index 37889a882..5583938a1 100644 --- a/FrontEnd/index.html +++ b/FrontEnd/index.html @@ -9,15 +9,17 @@ +

Sophie Bluel Architecte d'intérieur

@@ -36,51 +38,14 @@

Designer d'espace

Mes Projets

+ +
+ + + +
@@ -105,5 +70,7 @@

Contact

+ + diff --git a/FrontEnd/login.html b/FrontEnd/login.html new file mode 100644 index 000000000..c4ec45b2c --- /dev/null +++ b/FrontEnd/login.html @@ -0,0 +1,57 @@ + + + + + LOGIN + + + + + + + + +
+

Sophie Bluel Architecte d'intérieur

+ +
+
+
+

Log In

+ +
+

+ + + + + + + + + + +
+

mot de passe oublie

+
+
+ +
+ +
+ + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..5b279149c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "Portfolio-architecte-sophie-bluel", + "lockfileVersion": 3, + "requires": true, + "packages": {} +}