Client project · E-commerce

Bs Wash

For Bs Wash, a maker of car wash and car care chemicals in Giresun, we built an online store for retail and wholesale and its admin panel. The company's own products come first everywhere, with professional brands sold alongside. Shipping is calculated from the total litres in the basket, and every 3,000 TL spent earns a spin of the gift wheel. Pages are generated as plain HTML; price changes appear on the site without waiting for a release.

  • JavaScript (ES modules)
  • HTML pages pre-generated with Node.js
  • Netlify Functions and Netlify Blobs
  • iyzico
  • Sürat Kargo
  • MySoft e-Invoice / e-Archive
  • Resend / Brevo
  • Google Analytics 4, Search Console, Google Ads
  • WebAudio (wheel sounds)
  • End-to-end tests with Playwright
Store home page
Store home page
Products
Bs Wash products and professional brands
Payment
Card (iyzico), bank transfer
Shipping
Sürat Kargo, priced by the litres in the basket
Gift
One wheel spin per 3,000 TL

Screenshots were taken from a local copy of the site. Customer names, orders, wholesalers and panel figures are sample data; products and prices come from the store's catalogue.

01

A store that puts its own products first

Bs Wash products lead every list, with other professional brands sold alongside. Each size is a separate product in the panel and appears on one card with size buttons on the site.

  • Each size has its own photos and price; choosing a size turns the card into that product, and on the product page the sizes link to their sibling pages
  • Bs Wash products without photos yet get a packaging drawing in the brand's colours automatically
  • Category and brand filters, search and sorting
  • "Call for price" on products without a price
  • "Buy now": a quick order in one step without an account
  • A same-day shipping countdown: orders placed by 14:00 on weekdays and 12:00 on Saturdays ship the same day
  • A support button in the bottom corner; on product pages it adds the product name to the ready message
  • An interactive About page: counters, a timeline and flipping ISO cards
Products and filters
Products and filters
Product page and size options
Product page and size options
Store on a phone
Store on a phone
02

Shipping by litre, card and bank transfer payments

Shipping is not included in the prices: it is calculated from the total litres of the products in the basket and added to the order. The server always recalculates the amount.

  • The shipping rule is edited in the panel: a small parcel up to 5 litres, a large parcel for every full 20 litres, and a small or large parcel for the rest according to the rule
  • The basket shows the shipping fee and how it was calculated, plus an "add X TL more" hint for the gift wheel with a progress bar
  • Card payments through the iyzico payment page; the amount, order number and result are checked against iyzico
  • Bank transfer: bank, account holder and a copyable IBAN, with the order number as the reference
  • Every order has its own private page: animated order steps with emojis, the tracking number and courier events
  • If a payment fails, the order page offers another card attempt or a switch to bank transfer
  • E-mails for the order, payment confirmation, shipping and delivery
Basket: shipping by litre and the wheel hint
Basket: shipping by litre and the wheel hint
Order page and order steps
Order page and order steps
03

Gift wheel

For retail orders, every 3,000 TL of products earns one spin. The store chooses the gifts; the customer spins the wheel on their own order page.

  • Spins unlock when the payment is confirmed: at once for cards via iyzico, and for bank transfers when the store confirms the money has arrived
  • The server picks the gift; the same spin cannot be used twice
  • The wheel is spun by dragging or with the centre button, with lights, sounds and confetti on the result card
  • If the wheel is spun before the parcel leaves, the gift goes in the same box; otherwise it ships with the next order
  • Customers with unused spins get a reminder in the corner of the site; the panel lists the gifts won with a "gift sent" mark
Gift wheel on the order page
Gift wheel on the order page
04

Customer and wholesaler accounts

The site has two kinds of sign-in: retail customers and wholesalers. Once a wholesale application is approved in the panel, the wholesaler sees their own discounted prices on the site.

  • Customer sign-in and registration on the same screen; a 6-digit e-mail code for forgotten passwords
  • My Account: orders, shipping steps, tracking number, wheel spins and saved delivery details
  • Wholesale application: company, tax details and monthly needs
  • A general discount for the wholesaler, a separate discount on Bs Wash products and a minimum order amount
  • Signed-in wholesalers see every price discounted; the server still calculates the order amount
My Account: orders and shipping steps
My Account: orders and shipping steps
Customer and wholesaler sign-in
Customer and wholesaler sign-in
Wholesaler account and discounts
Wholesaler account and discounts
05

Admin panel

The store runs everything from one panel. Payment confirmation, shipment notification and e-invoicing sit together in the order detail.

  • Overview: orders awaiting action, today's orders, revenue of the last 30 days, pending dealer applications, products missing photos or prices
  • Orders: status filters and search; in the detail "Payment received, confirm", WhatsApp and call buttons, and sending the order link
  • Products: each size on its own row with a family tag, a photo counter, choosing the main photo, and finding photos on the brand's website
  • Banners, wholesalers, customers and reports in separate tabs; Google Analytics, Search Console and Google Ads reports
  • Price changes in the panel reach the site without a release; "Publish" regenerates the pages
Panel overview
Panel overview
Orders
Orders
Order detail: payment, shipping and e-invoice
Order detail: payment, shipping and e-invoice
Products
Products
06

Shipping, e-invoicing and other integrations

The integrations run on the server; secret keys are entered in the panel once and never sent back to the browser.

  • Sürat Kargo: shipment notification with "Send to Sürat", status checks, and the order switches to "Shipped" when the tracking number arrives
  • MySoft e-Invoice / e-Archive: e-Invoice if the buyer is registered for it, otherwise e-Archive; invoice PDFs from the panel
  • iyzico card payments, order e-mails through Resend or Brevo
  • The shipping rule, gift wheel, bank details and announcement bar are edited in the panel
  • Approving wholesale applications and setting their discounts
Shipping setting: fees by litre
Shipping setting: fees by litre
Gift wheel setting
Gift wheel setting
Wholesale application and discounts
Wholesale application and discounts

Planning a similar project?

Tell us what you need; we will define the scope, timeline and cost together. The first consultation is free.

Tell us about your project