Fakee-Shop is the leading website offering the best fake shopping experience online.
Fakee-Commerce is the leading website offering the best fake shopping experience online.
Fakee-Shop is the leading website offering the best fake shopping experience online.
the best fake shopping experience online
Fakee-Shop SiteStripe and header navigation
Homepage on large screens
Homepage on small screens
The website will use Mock-Up APIs for the back-end:
The UX/UI design will follow the specifications of the High-converting e-commerce UI kit which defines a retail e-commerce website. The full theme is freely available in the Figma Community.
Here there are the links to the Figma resources that are being considered in the implementation of the Fakee-Shop:
The use of the template tag to reuse HTML and add dynamic content using JavaScript.
<template id="template-promo-category-card">
<div class="item-card category-card group relative" data-item-id="5" data-item-action="category">
<div class="relative h-80 w-full overflow-hidden rounded-lg bg-white group-hover:opacity-75 sm:aspect-w-2 sm:aspect-h-1 sm:h-64 lg:aspect-w-1 lg:aspect-h-1">
<img src="https://github.com/technoveltyco/bootcamp-project1/raw/main/assets/img/category-saint-valentines.jpg" alt="Saint Valentines category image" class="h-full w-full object-cover object-center">
</div>
<h3 class="mt-6 text-sm text-gray-500">
<a href="#valentines-promo" data-cta-action="5">
<span class="absolute inset-0"></span>
<span class="title text-red-600"><i class="fa-solid fa-gift"></i> Saint Valentine</span>
</a>
</h3>
<p class="text-base font-semibold text-gray-900">Treat your favourite person to delicious food, fancy drinks, a thoughtful gift, or an unforgettable experience.</p>
</div>
</template>
and in JavaScript you will use it as follows:
// Test to see if the browser supports the HTML template element by checking
// for the presence of the template element's content attribute.
if ('content' in document.createElement('template')) {
const template = document.querySelector('#template-promo-category-card');
// Clone the template to create a new DOM element.
const clone = template.content.cloneNode(true);
clone.querySelector(".item-card").dataset.itemId = data.id;
clone.querySelector(".title").textContent = data.title;
clone.querySelector(".description").textContent = data.description;
// ...
} else {
// Find another way to add the rows to the table because
// the HTML template element is not supported.
}
On the other hand, export
and import
keywords were used to create modules and separate the private and public APIs of the JavaScript code.
modules/products.js
// Private API is here ...
// -------------------- PUBLIC API --------------------------
/**
* Initialise the configuration settings.
*
* @param {debug: boolean, show_nav_promo: boolean, promo: Object} settings
*/
function init({ debug, show_nav_promo, promo }) {
// ...
}
/**
* Gets the website settings.
*
* @returns {Object}
* The website settings.
*/
function getSettings() {
// ...
}
/**
* Executes the main.
*/
function run() {
// ...
}
export { DEBUG, init, getSettings, run };
and in the JavaScript this public API is used in the following way:
script.js
import * as App from "./modules/products.js";
(function (global, FakeeShop) {
const VERSION = "0.1.0";
let settings = {
debug: true,
show_nav_promo: true,
promo: {
label: "Valentine's Day",
href: "#valentines-promo",
},
};
FakeeShop.init(settings);
FakeeShop.run();
// Make FakeeShop's public API available in the global scope.
global.FakeeShop = {
VERSION,
DEBUG: FakeeShop.DEBUG,
init: FakeeShop.init,
settings: FakeeShop.getSettings,
run: FakeeShop.run
};
})(window, App);
Finally, we learn CSS animation, implementing a heart beat for the Valentine's Day 💘 marketing campaign made on the website.
/* Valentine's heart beat */
@keyframes heartbeat {
0% {
transform: scale( 1 );
}
20% {
transform: scale( 1.25 )
translateX(5%)
translateY(5%);
}
40% {
transform: scale( 1.5 )
translateX(9%)
translateY(10%);
}
}
.heart {
background-color: var(--valetine-color);
display: inline-block;
height: 10px;
margin: 0 -30px;
position: relative;
top: -15px;
transform: rotate(-45deg);
width: 10px;
animation: heartbeat 1s infinite;
}
.heart:before,
.heart:after {
content: "";
background-color: var(--valetine-color);
border-radius: 50%;
height: 10px;
position: absolute;
width: 10px;
}
.heart:before {
top: -5px;
left: 0;
}
.heart:after {
left: 5px;
top: 0;
}
The following features were included in the backlog for possible future improvements:
Software/Web Standards
Agile/Scrum
Public HTTP APIs
UX/UI Web Design
Fonts/Images
Tailwind
HTML
CSS
Vanilla JavaScript
Web image formats
Git/Github
Markdown
IDE/Dev tools
Group 7
The teacher and TAs that help us with resources and support to my questions during the development of this project.