Shajgoj app redesign

Two goals: make offers impossible to miss, and stop looking like a generic shop. Every mockup uses live Shajgoj products, prices, sale end dates and offers from today's APIs. The page walks through the app one tab at a time.

0

Basics

Applies to every screen

Offers become live UI, not banner images

  • Today most offers are text baked into images, so they all look alike and read as ads.
  • In the redesign the app draws offers from real data: tappable, consistent, translatable and always current.
  • Savings first: "You save ৳475" is the most prominent thing on a product card.
  • Real urgency only: countdowns from each product's sale end date (shown only in the last 3 days), "Only 3 left" from stock, "251 sold this week" from weekly sales.

One look per offer type

Used identically on cards, product pages, filters and the cart, so customers learn to spot them:

−35%Discount
Free deliveryFree delivery
Free giftGift
Buy 1 Get 1BOGO
NEWLUXCoupon
Ends in 05:42:18Ending

Tab bar

Home · Shop · Deals · Blog · Chat. Deals is the highlighted centre tab. Brands and Categories merge into Shop. Chat keeps its tab and unread dot. The account moves to the round avatar in the header, where the app already has a profile icon.

Type

Serif headings (Fraunces) for English, Source Sans for body, Noto Sans Bengali for Bengali.

1

Home

Directions → chosen design → banners

1.1 Two directions explored

Direction A · Deal-forwardBold, offer-led: Ending soon with countdowns, offer-type tiles, coupons, savings grid.OpenFull length
Direction B · Editorial beautyPremium and calm, the blog's magazine style: campaign hero, The Deal Edit, routines, shoppable articles.OpenFull length

1.2 Chosen: a mix of A and B

B's look with A's offer features.

  • From B: cream background, serif headings, campaign hero, "Your offers" card, The Deal Edit, routine bundles, shoppable blog article.
  • From A: "Ending soon" with live countdown and stock bars, "Shop by offer" tiles, coupon ticket, savings-first grid with quick add.
  • Ending soon is a deep plum panel: the one bold block on a calm page.

Page order

Hero → Your offers → Ending soon → Shop by offer → The Deal Edit → Coupons → Routines → Biggest savings → From the blog.

1.3 How Home loads its content

The home page stays a page-builder page (/api/pages/app-index): an ordered list of widgets that marketing controls from admin, as today.

Widget kindExamplesWho fills it
Existing widgets, restyledslider, banner grids, product rows, quick links, customer profile → "Your offers"Admin, as today
New live widgetsEnding soon, Shop by offer, The Deal Edit, Coupons, Free delivery by brand, RoutinesAdmin sets placement, title and a few settings; the app fills them from live data

If a page has no configuration, the app uses a built-in default order.

1.4 Sold banner space: with banners vs without

Every slider slide and image banner on today's home page is sold to brands. Measured from the live app-index page:

48image banners on today's app home, in 8 widgets
~19brand-labelled (slider, deals grid, top brands); the rest are category, offer and footer tiles
7.8 MBbanner images the app downloads to show the whole home page (14.2 MB originals)
4.0 MBof that is GIFs, which have no smaller variant
Version 1 · With banner ads OpenFull length + slot labels

Pros

  • Keeps all sold inventory: no revenue risk.
  • No change for marketing: same page builder, same image sizes, campaigns go live by uploading an image.
  • No backend change for banners.
  • Brands keep creative control.
  • Banners are framed consistently and spaced between content, so each gets more attention than in a wall of six.

Cons

  • Offers compete with offers: "50% OFF" inside images sits next to the live offer sections.
  • Long and heavy: 7.8 MB of banners; one GIF alone is 2.15 MB.
  • Banners go stale: prices and dates in images don't update.
  • Not personalised, not translatable, image text isn't accessible.
  • Hard to prove value to advertisers: is_ad is always 0 and labels don't match images.
  • Still reads as a "banner app".
Version 2 · Without banner ads OpenFull length

Pros

  • Offers are the clear focus, one consistent style.
  • Always current: live prices, countdowns, stock.
  • Personal: your vouchers, points available for vouchers, free-delivery progress.
  • Fast and short: no multi-MB banners.
  • Distinctive: a beauty magazine with deals.
  • Everything is measurable.

Cons

  • Loses sold banner inventory unless replaced with new ad formats.
  • Sales must sell new formats: sponsored product cards, sponsored brand positions, branded hero.
  • Brands lose creative control.
  • More setup: campaigns need structured content, not one image.
  • Some backend work for sponsored placements and reporting.
  • Transition risk: existing banner contracts.

A middle path

Keep the header slider as the premium sold slot and a limited number of banner placements (one between each pair of live sections, no more than 6–8). Ask for less offer text inside banner images. Add sponsored product cards and sponsored brand positions as extra inventory, and move advertisers over as tracking proves the new formats.

1.5 Every sold slot, labelled

Version 1 uses the real banners from today's home page. Open "Full length + slot labels" to see every sold slot outlined in orange and every live widget in green.

  • Kept: 8 header slides, the strip banner, the 4-banner deals grid, 6 top-brand banners, 12 category tiles, 10 essentials tiles, 3 footer tiles.
  • The 6 top-brand banners appear as two placements of 3: two widgets in admin.
  • Only the 4 "Limited Time Offers" tiles (BOGO, Combo, Offers, Clearance) are replaced, by the live "Shop by offer". They look like our own shortcuts; if they're sold, they stay.

Found in the data

Several banner labels don't match the image (e.g. "Simple" on a Skin'O banner). For per-brand reporting to advertisers, the label must name the real advertiser; the app can then log impressions and taps per banner to analytics with no backend work.

1.6 Home data

ElementSourceBackend
Page structure, banners/api/pages/app-index page builderExisting
Discount %, "You save ৳…"Product search: price, sale_priceExisting
Stock, sold this weekProduct search: stock, weekly_salesExisting
Countdown on a productProduct search: sale_end_dateExisting
"Ending soon" listNeeds products ordered by sale_end_date; the index can't filter or sort on it today (tested)Small backend
Your offers cardCart free_delivery_offer, loyalty points, saved vouchersExisting
Shop by offer, coupons/api/available_offersExisting
Buy 1 Get 1Existing buy-1-get-1 category (used by today's home tile)Existing
RoutinesCombo products, items in product_groupsExisting
Blog articleBlog APIExisting
Live widgets in adminRegister new widget types in the page builderSmall backend
Campaign hero text (B style)Optional text fields on slider slidesSmall backend
2

Deals tab

New centre tab

2.1 The Deals tab

Every live offer in one place, filterable by offer type.

  • Filters in the offer colours: All, Ending soon, Free delivery, Free gift, Buy 1 Get 1, Coupons, Under ৳499.
  • Ending soon with countdown and stock bars.
  • Coupons & vouchers: coupons to collect plus the customer's own vouchers.
  • Free gifts and free delivery by brand (all 26 live free-delivery offers, with thresholds and end dates).
  • Biggest savings grid.

How it's built

A page-builder page (e.g. app-deals) using the same live widgets as Home, so marketing can reorder sections and sell banner slots here too: a new page of inventory. The filter row is fixed app UI. With no configuration, the app uses a default order.

Data

Sections and filtersProduct search + /api/available_offersExisting
Your vouchersSaved vouchers APIExisting
Page layoutPage builder (new app-deals page)Admin setup

Found in the data

The live free-gift offer's gift item has 0 stock. The app should hide gift offers whose gift is out of stock.

2.2 Loading, empty and offline states

LoadingTitle and filters appear instantly; each data section shows a skeleton in its own shape, so nothing jumps when data arrives.Open
Empty filter + offline"Free gift" has nothing live, so it says so and offers the nearest alternative. Offline, the last offers stay visible with a Retry bar.Open

Rules

Empty section → hidden

No sales ending this week means no Ending soon panel, never an empty box.

Never empty overall

If every offer section is empty, the page falls back to Biggest savings from sale products.

No vouchers yet

The coupons area invites collecting a coupon instead of an empty list.

The empty "Free gift" state is realistic today: the only live gift offer's item has 0 stock, so once out-of-stock gifts are hidden, this is what customers would see.

3

Shop tab

Browse → results → filters

3.1 Browse

Categories and Brands in one tab. Opens as a browsing screen, not a product list: Home and Deals already lead with products, Shop is for "I know what I need".

  • Top categories on the left, from the real menu tree.
  • On the right: a deals link for the category, "Shop by concern" chips, sub-categories with product counts, top brands with their live offer.
  • Concerns are categories. Products have no concern attribute; the chips are the existing "Shop By Concern" categories (Skin: Pigmentation, Acne Treatment, Oil Control…; Hair: Dandruff, Hairfall & Thinning…; Men), so a chip opens that category. Coverage is as good as the category tagging.
  • Text-led because categories and brands have no images today (icon: "empty", img: null).
  • The Brands toggle shows an A–Z brand list with search, top brands first, and a label on brands with a live offer.

3.2 After tapping a filter: the results feed

Every tap on the Shop screen (sub-category, concern, brand) opens one shared results screen with that filter applied. Shown: Skin → Pigmentation.

  • Header: back, "Search in Pigmentation", category path (Skin › Shop By Concern) and "1,778 products".
  • Narrow down: product types that have results, with counts. One tap narrows further.
  • Pinned filter bar: Filters (with active count), Free delivery and Buy 1 Get 1 toggles (both existing categories), Brand, Under ৳500 and Price; applied filters as removable chips plus "Clear all".
  • Result count, sort (today's options: Most popular, New arrivals, Price; "Biggest saving" once the backend adds it), grid/list switch.

The feed

A 2-column grid of savings-first cards that loads more as you scroll. Every few rows it inserts a sold banner slot (category and brand pages have banners today, labelled "Sponsored") or an "Ending soon in Pigmentation" strip, by fixed rules so it never becomes a wall of banners.

3.3 The filter sheet

"Filters" opens a bottom sheet: sections on the left, options on the right.

  • Sections: Sort, Offers, Brand, Price, Category, with counts on the active ones. These are exactly what the search index supports today. Concern is reached through Category; there is no skin type, rating or size filter in the data.
  • Every option shows its result count. Brands: search, selected pinned on top, a "With offers" group tagged with each brand's live offer, then all brands.
  • "Show 21 results" before applying, so you never land on an empty list. Reset clears everything.

3.4 Category list

The same results screen opened from a category (Skin › Face › Serums & Oils), with an inline free-delivery nudge for a brand in the list ("Himalaya: free delivery over ৳999").

Shop data

Menu tree, brands/api/menu/get-menu, get-menu-brandsExisting
Results, filters, countsProduct search, facet countsExisting
Filter sheetExisting filter sheet logic, restyledExisting
ConcernExisting "Shop By Concern" categories (category filter)Existing
Free delivery, Buy 1 Get 1 filtersExisting "Free Delivery" and buy-1-get-1 categoriesExisting
"On sale" filterhas_sale isn't filterable in the index today (tested)Small backend (optional)
Sort by biggest savingSaving amount in the search indexSmall backend
Banner slots in resultsCategory/brand page designsExisting

3.5 Brand page

Opened from Shop, search or a banner. Shown with Himalaya's real data.

  • Brand header: name, short line, live stats (214 products, 9 of the 10 best sellers on sale). Text-led; brand logos can be added later.
  • This brand's offers in one strip: free delivery over ৳999 (ends 1 Nov), Buy 1 Get 1 shampoo, face wash deals from ৳59.
  • The brand's sold banner space stays as page-builder slots, labelled "Sponsored".
  • Best sellers this week, ranked by weekly sales.
  • Category chips with counts, then the product feed with filters, as in Shop.

Data

Products, stats, best sellersProduct search filtered by brand (weekly_sales, facets)Existing
Brand offers/api/available_offers (offers carry their brand)Existing
BannersBrand page design (page builder)Existing
Logo, taglineNot available todayOptional admin content
5

Product page

Leads with the saving, and gathers every offer that applies.

  • Price card: price, "You save ৳551", sale end date, sold this week, stock bar.
  • Offers on this product: every applicable offer in the shared offer style, using the backend's own wording.
  • "Ask an expert" card opens Chat, on every product.
  • "Good for": the product's own "Shop By Concern" categories (e.g. Pigmentation, Acne Treatment, Oil Control), description, "Pairs well with" recommendations.
  • Add to Bag pinned above the tab bar, showing price and saving.

Data

Price, stock, sales, end dateProduct APIExisting
Offers on productProduct available_offers + couponsExisting
Pairs well withRecommendations (reco.shajgoj.com)Existing

Found in the data

Product photos are marketing graphics with prices baked in (e.g. "1099 TAKA"), which repeat the live price and go stale. Clean product photos for app use would fix it.

6

Cart & checkout

6.1 Cart

Opens with how much you're saving, then shows how to save more.

  • "You're saving ৳913" summary at the top.
  • Free-delivery progress using the backend's message verbatim, with links to products that qualify.
  • Each item shows its offer labels.
  • Coupons and vouchers in one card, with a shortcut to exchange Shajgoj Points for a voucher (points can't be spent at checkout directly); a clear price summary; Checkout pinned at the bottom.

Data

Free-delivery progressCart free_delivery_offerExisting
Savings totalPrice − sale price per lineExisting
Coupons, vouchersExisting cart and voucher APIs; points → voucher purchase as todayExisting

6.2 Checkout

One page, three clear steps: Bag → Details → Done.

  • Savings recap carried from the cart at the top.
  • Saved address preselected, with Change (same fields as today: name, phone, address, district, area).
  • Delivery with the free-delivery nudge still visible: one last chance to qualify.
  • Payment from the live gateway list: bKash, Card, Upay, Cash on delivery (hidden for voucher-only carts, as today).
  • Order summary, optional note, and Place order pinned with the total and saving.

Data

Payment methods/api/available-gateways (cod, bkash, card, upay)Existing
Address, order, totalsExisting checkout and cart APIsExisting
7

Account

Opened from the header avatar

Everything the current profile screen has, reorganised around what people come here for.

  • Points lead to vouchers: "480 points to spend on vouchers", how many vouchers you can get now, and a Get vouchers button (the existing voucher purchase).
  • Quick tiles: Orders, Vouchers, Wishlist, Saved posts, with counts.
  • Current order with live status, progress and Track.
  • Offers wallet: vouchers and collected coupons, usable in one tap.
  • Settings: addresses, notifications, privacy policy, delete my data, log out (all existing).
  • Help: Chat and store locations.

Data

Profile, orders, wishlistExisting user, order and wishlist APIsExisting
Points, vouchersExisting loyalty and voucher APIsExisting
Storesshajgoj-outletsExisting
8

Data & backend summary

Already available, no backend work

  • Product search: prices, sale prices, sale end dates, stock, weekly sales, free shipping, offer text, facets.
  • /api/available_offers: coupons, 26 free-delivery offers, free gifts.
  • Page builder: home and brand/category page designs, all banners.
  • Menu tree and brand lists; cart free-delivery message; vouchers; loyalty; recommendations; blog API; payment gateways.

Small backend requests

  • Register the live widget types in the page builder (placement, title, a few settings).
  • Saving amount in the search index, to sort by biggest saving.
  • Sale end date sortable/filterable in the index, for Ending soon.
  • Optional: has_sale filterable, for an "On sale" filter.
  • Optional: text fields on slider slides for campaign heroes.
  • Optional: a trending searches list.

Admin / content

  • A Deals page in the page builder.
  • Accurate advertiser labels on banners.
  • Clean product photos for app cards (longer term).
  • Optional: brand logos and taglines.

About the mockups

  • Products, prices, discounts, stock, weekly sales, sale end dates, coupons, free-delivery offers, menu, brands, concern categories and their product counts, and banners are real, from today's APIs. Countdowns are live.
  • Personal numbers (৳274 away, 2 vouchers, 480 points), deal counts, "Narrow down" and result counts inside a filter, the blog headline, routine step photos, product description, expert avatar, the ৳100 voucher, the delivery fee, the customer's name, address and order are illustrative.