Loading Marwan Elsayed
Skip to main content
Back to Work

E-commerce

Expat Shop

An online shop for products from around the world, sold in Peru: catalogue, cart in soles and dollars, checkout and orders, built from Figma designs.

Started
2023
Status
Completed
Role
Front-end developer
Area
E-commerce
Stack
HTML, CSS, JavaScript, jQuery
What I implemented

Built the ExpatShop storefront from the client's desktop and mobile Figma files, then made its 14 static pages work as a shop in the browser: catalogue, cart, checkout and orders.

Capture of the Expat Shop home page with the header, category menu, hero photograph and a strip of product categories, shown with sample data.
Real interface, sample data

Context / scope

Overview and scope

ExpatShop sells products from around the world to customers in Peru, with prices in dollars and soles.

Pages (14): home, products, product details, recommendations, cart, checkout choice, sign-in, sign-up, guest details, checkout, order status, orders, saved addresses and referral program.

Front-end developer: built the pages from the client's desktop and mobile Figma files. File dates run from October to November 2023; the folder had no git history.

Results

  1. No results were recorded, so none are claimed.
  2. Products, prices, names and addresses in the captures are sample data; product images are unbranded drawings, and the office address in the footer is replaced with a sample.

Interface / screens

Walkthrough

Capture of the Expat Shop home page with the search bar, currency and language switches, category menu and category strip, shown with sample data.
Home page. Real interface, sample data.
1 of 9
Expat Shop

Home page. Real interface, sample data.

1 of 9

Screen 1 of 9: Home page. Real interface, sample data.

Screen 1 of 9: Home page. Real interface, sample data.

Responsive and states

Capture of the Expat Shop oils list on a phone with a product card and an added-to-cart confirmation, shown with sample data.
Products on a phone. Real interface, sample data.
Expat Shop

Products on a phone. Real interface, sample data.

Screen 1 of 1: Products on a phone. Real interface, sample data.

Screen 1 of 1: Products on a phone. Real interface, sample data.

Behaviour / flows

Features and flows

Finding products

  • Categories in the menu, a category strip on the home page and a products-from-the-world grid open a filtered list with a count, sorting by price or name and an empty state.
  • Header search looks through names, descriptions, categories and countries; new products and offers have their own lists.
  • Each product has a details page with quantity and related products from the same category.

Cart and prices

  • Add to cart from any card with a quantity; the header badge, the mini cart and a short confirmation update straight away.
  • The cart page changes quantities and removes lines, with totals in soles and dollars.
  • A currency switch (USD or PEN) is remembered and applied to every product price.

Checkout

  • Before checkout a visitor signs in, creates an account or continues as a guest, with names, Peruvian mobile numbers, email and passwords checked field by field.
  • Addresses are saved with a type, a street of up to 85 characters and a Lima district, and open in Google Maps from a link.
  • The order can be paid in soles or dollars, by card, Yape or mobile banking, with RUC details for a receipt; anything missing is listed before the order is placed.

After the order

  • Order status shows the total, payment state and the products, and the orders page lists every order with a link to it.
  • Saved addresses can be removed after a confirmation, and the referral page copies the customer's link.

Engineering / decisions

Architecture and decisions

Static HTML and CSS on Bootstrap 3, with jQuery, Slick carousels and Font Awesome icons, and separate phone layouts from the mobile Figma file.

Shop behaviour lives in one script over a sample catalogue, with fonts served from the site.

One script over the designed pages

The HTML and CSS stay as built from the Figma files. One script reads which page it is on and fills the existing markup from a single sample catalogue, before the original script starts the carousels.

State kept in the browser

The cart, currency, saved addresses and orders are kept in local storage, with an in-memory fallback when storage is blocked, so every page agrees without a server.

Dollars first, soles from one rate

Prices are stored in dollars and converted to soles with one rate, so cart, checkout and order totals always match in both currencies.

No requests to other sites

The fonts are served with the site and the embedded map became a link, so a page loads nothing from third parties until the visitor follows a link.

Limits / notes

Known limitations

  1. There is no server: the cart, addresses and orders live in one browser, sign-in accepts any well-formed details, and Pay now only marks the order as paid. No payment provider is connected.
  2. The language switch is shown, but the pages are in English only, and customer testimonials are hidden until real ones exist.

Stack / tools

Technologies

  • HTML
  • CSS
  • JavaScript
  • jQuery
  • Bootstrap
  • Slick
  • Font Awesome
WhatsApp (opens in a new tab)