Crafting Standa Toys:
A Modern Global E-Commerce Build
A full-stack case study documenting the storefront, admin back-office, automation layer, backend functions, and data model behind a made-to-order wooden toy e-commerce destination.
14
Backend Functions
14+
Data Entities
3
Automated Workflows
2
Currencies
Project Overview & Challenge
The Challenge
- 01Bring a traditional Bohemian woodcarving workshop online as a global, made-to-order e-commerce destination.
- 02Support bespoke commissions with an AI-assisted inquiry flow, not just off-the-shelf checkout.
- 03Handle dual-currency pricing (CZK / EUR), real-time Czech Post shipping rates, and PayPal payments.
- 04Give the craftsman a full back-office: order tracking, production kanban, email centre, and analytics.
- 05Stay GDPR-compliant, mobile-first, and fast — without a team of engineers to maintain it.
The Solution
- →A single full-stack application covering storefront, admin, automations, and data — one codebase, one deploy.
- →AI-assisted custom order intake that suggests wood, size, and finish based on the customer's description.
- →Server-side price recalculation at checkout to prevent client manipulation, wired to PayPal.
- →A drag-and-drop kanban that auto-imports orders, plus a templated email centre with full send logging.
- →Scheduled automations for postage rate refresh and low-stock alerts, with a dynamic XML sitemap for SEO.
Storefront Experience
The public storefront was designed to feel like a gallery, not a warehouse — warm, spacious, and built around the story of each piece. Every page is mobile-first, dual-currency, and SEO-optimised.
Homepage & Collection
A hero-driven landing page with live video support, full-text search, and a filterable product grid. Visitors filter by category, age range, wood type, and price — with pull-to-refresh on mobile and animated product cards that surface stock status, age badges, and social sharing.
Standa ToysHandcrafted in Bohemia
Handcrafted wooden toys from Czech Republic

Large Tractor
Oak · 3,400 CZK

Armored Vehicle
Oak · 1,800 CZK

Armoured Tank
Oak · 1,500 CZK

Small Tractor
Oak · 1,200 CZK
Product Detail
Each toy gets a rich detail page: image gallery with lightbox, full specifications (wood, joinery, finish, dimensions, weight), verified customer reviews, community photo gallery, Pinterest/social sharing, and a persistent handcrafted disclaimer. Admins see an inline edit shortcut.

Large Tractor
Crafted from solid oak, this large tractor invites imagination and will outlast every childhood.
Custom Order Flow
The signature experience. Customers describe the child, the environment, and their dream toy. An AI assistant suggests wood type, size, finish, and an estimated price range. Submissions create an inquiry record, auto-reply to the customer, and notify the workshop — all in one transaction.
Custom Orders
Commission a Custom Handcrafted Toy
Your Name *
Email *
Child's Age
Budget Range
Describe your dream toy *
✦ AI Craft Assistant
Suggested: Linden wood (lightweight), 18cm, beeswax finish, pegged joinery. Est. 1,400 CZK · 2-week lead time.
Cart & Checkout
A cart with live Czech Post shipping rate calculation by weight tier, dual-currency totals, and PayPal checkout. The backend recalculates totals server-side from item data to prevent client-side manipulation, then redirects to a pre-filled PayPal payment page.
Your Cart

Large Tractor
×1
3,400 CZK
€136

Small Tractor
×2
2,400 CZK
€96
Blog & Vlog
A workshop journal with video-cover support, category filtering, and per-post social sharing. Each post renders rich text, related posts, and a newsletter signup. Published posts feed the dynamic sitemap automatically.
From the Workshop
Stories, Guides & Videos
How to Build a Garden Bench with a Hidden Storage Compartment
Craftsmanship · 5 min read
Beginner's Gold Mine: Profitable Wagon Planter Step-by-Step
Craftsmanship · 5 min read
3 Easy Ways to Make a Mortise and Tenon Joint
Craftsmanship · 5 min read
Admin Back-Office Suite
A complete back-office gives the craftsman full control — from product creation with AI tools, through a drag-and-drop production board, to branded customer emails and shipping updates.
Dashboard
Welcome to your workshop back office
Products
24
18 in stock
New Inquiries
7
12 total
Subscribers
143
newsletter
Reviews
38
2 pending
Recent Inquiries
Kanban Board
Order: Tomáš — Pull horse
Order: Anna — Animals
Order: Petr — Village
Carve oak wheels
Order: Eva — Cannon
Order: Martin — Tractor
Analytics & SEO
2,847
Page Views
42
Inquiries
4.8
Avg Rating
Inquiries — last 14 days
Order Tracking
Email Centre
Re: Your Custom Toy Inquiry
To: tomas@email.cz
Your Custom Toy Quote is Ready
To: anna@email.cz
From the Workshop — Stories in Wood
To: subscribers@list
Dashboard
Live stats: products, inquiries, blog, notifications, subscribers, reviews. Low-stock and sold-out alerts surface instantly.
Product Management
Full CRUD with AI tools: generate marketing copy, studio product photos, lifestyle imagery, and price recommendations. Auto-calculates weight from wood density + dimensions.
Kanban Board
Drag-and-drop order & task board (Backlog → Done). Auto-imports custom orders as cards. Priority badges, due dates, and order-type tags.
Order Tracking
12-stage order lifecycle with carrier, tracking number, and estimated delivery. One click sends a branded shipping-status email to the customer.
Email Centre
Templated replies (inquiry, quote, order confirmed, newsletter, welcome), full send history, and a compose tab. Every send is logged for audit.
Analytics & SEO
14-day inquiry trends, device breakdown, geo-map of visitors, and an integrated SEO dashboard scoring every product and blog post.
Production Calendar
Workshop scheduling view mapping estimated completion dates to orders, so the craftsman can see the production pipeline at a glance.
Media Manager
Centralised site media slots (hero video, etc.) with upload and label management — swap homepage media without touching code.
Audit Log
Every admin action (login, create, update, delete, publish) is recorded with user, role, entity, and timestamp — full accountability.
Review Moderation
Approve or reject customer reviews with a real-time pending counter. Verified-purchase badges highlight authentic reviews.
User Management
Invite team members as admins or editors, manage roles, and control back-office access. Users self-serve account deletion (GDPR).
Bulk Import
Import products from Google Sheets via OAuth connector, or paste spreadsheet data directly. A 4-step wizard previews before publishing.
Automation & Backend Architecture
Three scheduled and event-triggered workflows run automatically, backed by 14 serverless backend functions that handle payments, shipping, email, analytics, and GDPR — all without manual intervention.
Automated Workflows
Daily Postage Rate Refresh
Scheduled · cron 0 4 * * * (04:00 UTC daily)
Invokes getPostageRates — verifies Czech Post shipping prices via LLM web search, caches results in the database with a 24h TTL, and falls back to hardcoded rates if the lookup fails.
Daily Low Stock Check
Scheduled · cron 0 7 * * * (07:00 UTC daily)
Invokes checkLowStockInventory — scans all products below the 5-unit threshold and emails every admin a formatted low-stock alert, plus creates an in-app notification.
New Inquiry Notification
Entity trigger · on CustomInquiry create
Invokes onNewInquiry — creates an admin notification, sends a warm auto-reply to the customer, and logs the email in the Email Centre for full visibility.
14 Backend Functions
submitCustomInquiry()
Creates an inquiry record and emails workshop owners with the full customer brief.
onNewInquiry()
Auto-replies to the customer, notifies admins in-app, and logs the email.
paypalCheckout()
Recalculates totals server-side, builds the PayPal URL, and emails both customer and admin.
getPostageRates()
Returns Czech Post rates — LLM-verified, cached 24h, with a hardcoded fallback.
sendShippingUpdate()
Updates order status and sends a branded tracking email with carrier + ETA.
checkLowStockInventory()
Scans stock levels and emails admins a formatted low-stock alert.
sendContactMessage()
Delivers contact form to a secret email — honeypot + length caps, no recipient leak.
subscribeNewsletter()
Dedupes, stores the subscriber, sends a welcome email, and logs it.
sendEmail()
Admin email send with templated bodies and full audit logging.
trackPageView()
Records page views with device detection and IP geo-resolution.
importProductsFromSheets()
Pulls product rows from a Google Sheet via OAuth connector.
bulkUploadProducts()
Parses pasted spreadsheet data into product records with validation.
sitemap()
Generates a dynamic XML sitemap from all products and published posts.
deleteAccount()
Permanently deletes a user's record — GDPR right to erasure.
Data Model Schema
14+ core entities model the entire business — from products and bespoke commissions to emails, analytics, and audit trails. Each entity carries Row-Level Security so customers see only their own data, while admins see everything.
Product
24 fieldsThe core catalog item — title, price (CZK/EUR), wood, joinery, finish, dimensions, weight, images, SEO, stock.
CustomInquiry
16 fieldsA bespoke commission request with AI suggestions, budget, gift options, and a 12-stage order lifecycle.
BlogPost
8 fieldsWorkshop journal entries with rich text, video covers, categories, and publish flags.
Review
7 fieldsCustomer ratings and reviews with approval workflow and verified-purchase badges.
KanbanTask
9 fieldsOrder and task cards for the drag-and-drop production board, linked to inquiries.
EmailMessage
8 fieldsFull outbound email history — subject, body, direction, status, linked inquiry.
Notification
7 fieldsIn-app alerts for inquiries, orders, reviews, and system events.
PageView
12 fieldsAnalytics records — page, device, geo-IP, referrer, duration, session.
NewsletterSubscriber
4 fieldsEmail subscribers with active flag and signup source tracking.
Wishlist
9 fieldsPer-user saved products with cached price, image, and stock status.
CommunityPhoto
6 fieldsCustomer-uploaded product photos with moderation flags.
AuditLog
9 fieldsImmutable record of every admin action — user, role, entity, action, timestamp.
SiteMedia
3 fieldsCentralised media slots (hero video, etc.) swap-able from the admin.
PostageRateCache
1 fieldsCached serialised shipping rates, refreshed daily by the scheduled workflow.
Performance & Compliance
100%
Lazy-loaded admin routes
All 19 admin pages are React.lazy + Suspense code-split, so the storefront loads instantly.
44px min
Mobile touch targets
Every interactive element meets the 44px (min-h-11) touch target standard for WebView readiness.
14px
Minimum font size
No meaningful text falls below 14px (text-sm) anywhere in the mobile interface.
Enforced
GDPR cookie consent
A global cookie banner with localStorage consent tracking, linked to a full cookie policy.
14 rules
Row-Level Security
Every entity has RLS — customers see only their own inquiries and wishlists; admins see everything.
3 pages
Pull-to-refresh
Homepage, blog, and order pages support pull-to-refresh with query invalidation on mobile.
Future Buildable Roadmap
Every item below is buildable with the existing stack — no new infrastructure required. Each leverages the data model, integrations, and automation layer already in place.
AI-Powered Product Recommendations
A 'you may also love' engine that suggests complementary toys based on wood type, age range, and browsing history — using the existing LLM integration to generate personalised picks.
Multi-Language Storefront
Auto-translation of product descriptions, blog posts, and UI strings into German, English, and Czech — leveraging the existing useAutoTranslate hook already powering the admin panel.
Loyalty & Rewards Portal
A returning-customer rewards system with points per order, tier badges, and a 'My Workshop' dashboard — built on the existing Wishlist and CustomInquiry entities.
Advanced Analytics Dashboard
Cohort retention, conversion funnels, and revenue forecasting on top of the existing PageView and inquiry data — with exportable PDF reports for the craftsman.
Subscription Box Service
A quarterly 'Workshop Box' with a curated toy, a story card, and a wood sample — recurring billing via Stripe, built on the existing payment and email infrastructure.
Wholesale & B2B Portal
A separate pricing tier and bulk-order flow for toy shops and museums, with net-30 invoicing and a dedicated inquiry pipeline in the admin.
Want a build like this?
Get an instant estimate for your project with the fastmedia.pro interactive cost estimator.
Estimate Your Project