← All projects

Lalo Bakery Solutions

Client
Lalo Bakery Solutions
Industry
Food manufacturing & distribution
Year
2025

A storefront and back office for a bakery-ingredients supplier: customer accounts and checkout on the front, and products, suppliers, stock adjustments, recipes and delivery pricing behind it.

Visit the site
Lalo Bakery Solutions admin dashboard

1

Delivery fee calculation, shared by shop and staff

100%

Of stock movements carry a reason

2

Audiences (retail and trade) on one catalogue

What it covers

  • E-commerce storefront & checkout
  • Customer accounts & order history
  • Server-side delivery pricing
  • Inventory & stock adjustments
  • Suppliers & damaged-stock tracking
  • Recipe library

Two systems that had to be one

A bakery-ingredients supplier sells to the public and to trade, and the two look nothing alike from the inside. The shop needs a catalogue, a cart, a delivery fee and an order confirmation. The business needs to know what it paid, what it has left, what went to waste, and who owes it money.

Building those separately is how a shop ends up selling something the warehouse ran out of last week.

The storefront

A catalogue with categories, product galleries and priced ranges: a product is sold in several pack sizes, each with its own price, rather than as a single line with a single number. Customers get real accounts: an order history, saved delivery addresses, a settings page and password reset.

Delivery pricing is server-side, always. The fee is looked up from the delivery area the customer picked, orders at or above the free-delivery threshold pay nothing whatever the area, and local pickup is free by definition. The same function serves checkout and the dashboard, so the fee quoted to a customer and the fee staff see on that order are the one number. A fee posted by a browser is never trusted.

Recipes are a genuine content section, not filler: each recipe carries prep and cook times, instructions, a featured image and its ingredient list, which links to the products the shop actually sells.

The back office

Products and stock. Categories, images, suppliers, and a stock ledger built from adjustments: every movement is a signed row with a reason, and a sale links directly to the transaction that caused it. Damaged stock is recorded against the product rather than quietly deducted, so wastage is a number somebody can look at.

Orders. All orders, delivered, cancelled; each with its customer, its items, its delivery fee and its payment method. Customer records carry their full order history.

Money and reporting. Transactions, discounts, free-delivery thresholds, payment methods and a reports screen over the lot.

Administration. Roles and permissions with per-user overrides, a testimonials manager, a message inbox from the contact form, and a logo/branding manager.

The result

One place where a price change, a stock count and a customer's order are the same set of facts. The shop cannot sell what the warehouse does not have, and the month-end question (what did we actually make on this) has an answer that does not require assembling it from three spreadsheets.

How it was built

Svelte
TypeScript
MySQL
Drizzle
Framework

SvelteKit

Server load functions, form actions and endpoints; SSR by default.

Svelte 5

Runes for reactivity ($state, $derived, $effect).

Language

TypeScript

Strict mode across app and server code.

Data

MySQL

Primary datastore.

Drizzle Kit

Committed SQL migrations rather than push-to-prod diffing.

Drizzle ORM

Typed schema and queries, with migrations generated from the schema.

Auth

Better Auth

Session-based auth with server-side verification.

Forms

Superforms

Progressive-enhancement forms with server-side validation.

Zod

One schema validating both client and server.

UI

Chart.js

Reporting charts.

Embla

Carousels.

Dark mode

System-aware theme switching.

Lucide

Icon set.

TanStack Table

Sorting, filtering and pagination for admin tables.

Bits UI

Headless primitives behind the component library.

Tailwind CSS

Utility-first styling with a project design token layer.

Reporting

jsPDF

Server-side PDF generation for reports and receipts.

jsPDF AutoTable

Tabular report export.

Infrastructure

Client image compression

Uploads compressed in the browser before hitting the server.

Nodemailer

Transactional email over SMTP.

Inside the system

Lalo Bakery Solutions admin dashboard
Daily orders, revenue and average order value, with a reorder list that watches stock against each product low-stock level.
Lalo Bakery Solutions home page
The storefront: a supplier’s catalogue that has to read as a shop.
The product catalogue with categories
Products are sold in priced ranges: several pack sizes, each with its own price.
The recipe library
Recipes link their ingredients to products the shop actually stocks.
The about page
The company story, editable from the dashboard like everything else.
The contact page
Enquiries land in a dashboard inbox rather than a mailbox nobody checks.
Back to all projects