Skip to content
Design Development Maintenance Security

Online fishing tackle shop

A WooCommerce fishing tackle shop, designed from scratch in Figma: a catalogue filtered by tackle specs, ready-made kits, Omnibus-compliant sale prices and a one-page checkout with parcel lockers. The shop is fictional — the site and its code are real.

wedkujemy.com home page: a pike-season sale hero and the shop benefits strip
At a glance
Client
wedkujemy.com — a fictional client, webmotion demo project
Industry
Online fishing tackle retail
Timeline
October 2026
Services
Design, Development, Maintenance, Security
Team
One — Figma design and WordPress build
The brief

What the project had to solve

The problem as it stood, and the decision that answered it.

Challenge

A shop that answers like an angler, not a wholesaler

Anglers don't look for "a reel" — they look for a 2500 reel for a 2.40 m pike rod. The shop had to filter by length, casting weight and number of sections, suggest ready-made kits and get to checkout without an account, while meeting Polish rules: the lowest 30-day price next to every sale, VAT invoices and 30-day returns.

  • Filters by tackle specs, not just price and brand
  • Sale prices that comply with the Omnibus directive
  • Parcel locker, invoice and consents in one checkout form
Approach

WooCommerce underneath, a bespoke shop on top

The cart, orders and stock stay in WooCommerce, but every view — from the product tile to the thank-you page — is a Blade template built from the design. The features shops usually add plugins for, such as a wishlist, back-in-stock alerts, cart reminders and review requests, are small services in the theme.

  • Wishlist, stock alerts and reminders without plugins
  • A price history written on every price change
  • Kits are ordinary products with a list of items
Technology

The stack we built it on

The same benchmark every webmotion project starts from, plus WooCommerce and the few pieces a shop needed.

Foundation 04
  • WordPress CMS and block editor
  • WooCommerce Cart, orders and stock
  • ACF Pro 15 custom blocks and the product fields
  • PHP 8.2+ Typed shop services
Theme layer 04
  • Sage 11 Roots theme scaffolding
  • Acorn 6 Laravel container inside WordPress
  • Blade WooCommerce templates rebuilt from the design
  • Alpine.js Filters, mini-cart and wishlist
Front end 04
  • Tailwind CSS v4 Tokens taken from the Figma variables
  • Lexend Self-hosted, Latin Extended
  • Lenis Smooth scrolling
  • Swiper 11 Product and video carousels
Build & ops 04
  • Vite 6 Asset build and HMR
  • ddev / Docker Identical local environments
  • GitLab CI + Deployer Tests, then deploy
  • LiteSpeed + LSCache Production server and page cache
Also in the repo InPost for WooCommerce MailerLite API Contact Form 7 Yoast SEO Pest PHPStan Laravel Pint WP-CLI
Integrations

What we connected it to

Each card names the system, what it does in this shop, and which way the data moves.

  • Delivery

    InPost

    Pick a parcel locker on a map right inside the checkout, next to the InPost courier; the chosen point is saved on the order and shown on the thank-you page.

    Shop ⇄ InPost
  • Newsletter

    MailerLite

    Sign-ups from the newsletter block and the opt-in ticked at checkout go through the API into the chosen subscriber group.

    Shop → MailerLite
  • Video

    TikTok

    Videos shown as thumbnails with a pinned product; the TikTok player only loads after a click and consent to external content.

    TikTok → site
  • Omnibus

    Price history (Omnibus)

    Every price change is appended to the product history, and on a sale the lowest price from the 30 days before the reduction appears next to the struck-through one.

    Price → history → product page
  • E-mails

    Action Scheduler

    Abandoned-cart reminders after 1 h and 24 h (opt-in only), a review request once an order is completed, and an e-mail when a product is back in stock.

    Shop → customer
  • GDPR

    Cookie consent

    A banner with categories — analytics, marketing, external content — holds back scripts and embeds until the visitor agrees to them.

    Visitor → scripts
Design system

Colours and type it ships with

The client's palette, applied as tokens — every swatch below is a variable the theme exports.

  • Blue #2B5BD7 Buttons, links, active filters
  • Ink #0E1D24 Text and headings
  • Mist #F5F7FB Page
  • Blue-grey #E9EEF7 Panels, the kits section
  • Orange #C2410C Sales and discounts
  • Green #1E7A4C In-stock status
Typeface
Lexend Geometric sans · 4 weights Self-hosted, Latin Extended
  • Regular 400
  • Medium 500
  • SemiBold 600
  • Bold 700
Type scale
Pike season is on
56 / 1.1 / −1.5
Ready-made kits
40 / 1.15 / −1
249,00 zł
22 / 1.2 / 700
Body copy sets at sixteen over 1.6
16 / 1.6 / 400
Add to cart
16 / 1 / 500
  • 8px Inputs, small buttons
  • 12px Product cards, panels
  • 16px Hero, large sections
  • 999px Category chips, counters
Four radii and three stock-status colours — each one a Tailwind variable carried over from the Figma variables.
Screens

The product itself

Captured from the live shop. Every tile opens in a lightbox at full size.

wedkujemy.com home page: a pike-season sale hero and the shop benefits strip
Home — a seasonal sale hero and the benefits strip, with categories, bestsellers and kits further down.
wedkujemy.com Rods category: subcategory chips, filters and the product grid
Category — subcategories as chips, and filters by price, brand, stock, length and casting weight.
wedkujemy.com product page: the Daiwa Ninja LT 2500 reel with size options and a bundle
Product page — options as buttons, a dispatch countdown and a bundle that costs less bought together.
wedkujemy.com cart: two products, the free-delivery bar and the order summary
Cart — a free-delivery bar, a coupon field and a summary that recalculates in the background, no reload.
Highlights

What we actually built

The six pieces the shop stands on — the ones buyers see on every order.

  1. 01

    Filters by spec, not just by price

    Rod length, casting weight, number of sections, brand, stock and sale. Every filter is a URL parameter, so a result can be linked and the listing still uses the page cache.

  2. 02

    Omnibus-compliant prices

    Every price change goes into the product history. On a sale the shop works out the lowest price from the 30 days before the reduction and shows it under the price.

  3. 03

    A live delivery estimate

    "Order within 16 min — delivered tomorrow" accounts for the dispatch cutoff, weekends and Polish public holidays. The browser works it out, so it holds behind the page cache.

  4. 04

    Kits and "cheaper as a bundle"

    A kit is an ordinary product with a list of items: it has its own price, stock and cart line, and the product page shows how much the buyer saves.

  5. 05

    A cart without reloads

    A mini-cart with quantity steppers, a cart page that updates in the background with toast notices, and confetti when the order passes the free-delivery threshold.

  6. 06

    Accounts are optional

    Guest checkout, then a one-click account after the order: order history, online returns, saved addresses and the wishlist carried over from the cookie.

Results

What it changed

Measured on the live site rather than estimated — the note under each figure says where it came from.

100 Accessibility score Lighthouse 12.8, mobile, home page, 19 Oct 2026
100 Best Practices score Same run, home page
20 ms Total Blocking Time Same run, home page
Scope delivered

What the shop team can run without opening the codebase.

  • Thirteen views designed in Figma for desktop and mobile
  • 15 ACF blocks and WooCommerce templates in Blade
  • Filtered catalogue, product page, cart and checkout
  • Customer account with online returns and a wishlist
  • A guides section with articles linked to products
  • Pest tests for Omnibus, NIP, returns and filters
Next project
Lenno — Łęgi Warty home page: estate photo and the apartment availability card
Housing development site Design · Development · Maintenance · Performance · Security
Start something

Have a project that should work like this one?

Send the brief, or book a call and talk it through. We answer with scope and a range, not a template.

Cookie settings

You can change your consent at any time — the “Cookie settings” link is in the footer.
Strictly necessary Language version, your cookie settings and protection against attacks (Cloudflare). Always on.
Always
Google Analytics — number of visits, most read pages and where visitors come from. Cookies _ga and _ga_XRELMTQDKT, 2 years.
Details: Cookie policy · Privacy policy