Back to portfolio

VelvetCake

VelvetCake home page on a laptop

A website, catalog and CRM for a Lviv confectionery: orders from the site, Instagram and Telegram in one place

City Lviv
Platform React, Vite, Firebase
Scope Design, website, catalog, CRM

VelvetCake is a confectionery from Lviv: custom cakes, bento cakes, cupcakes, candy bars, desserts and bento-decorating master classes. Visually the brand rests on a dark-luxury mood: a dark palette, restrained typography, the dessert itself carrying the frame

Desserts here are bought with the eyes, so the showcase works exactly as well as it looks. But behind the showcase there is a second half of the business the customer never sees: orders arriving every day from three different channels

Orders in a confectionery come from everywhere: someone writes on Instagram, someone on Telegram, someone wants to order right on the site. While all of that lives in chat threads, things get lost and the picture of the day is kept in someone's head

They needed a site that carries the brand mood and takes orders, and at the same time a workplace for the pastry chef where every request lands and where she can change the menu, prices and master classes herself, without a developer

Not a landing page with a "message us" button, but an application with two entrances: a public site for customers and a private CRM for the team at /admin

The site is a dessert catalog, a dedicated page for every dessert, master classes and an FAQ. A request from any form on the site instantly becomes a card in the CRM. Orders from Instagram and Telegram go into the same pipeline by hand, so every customer is visible in one list

Menu, prices, photos and master-class themes are edited in the CRM: change it in the panel and the site updates

Five categories: cakes, bento, cupcakes, candy bars, desserts. Search by name and a category filter on top

CategoriesThe entry point for someone who doesn't know yet what they want and is simply browsing the showcase

SearchFor those who came for a specific dessert or are picking one for an occasion

Dessert pagePhotos, weight, portions, allergens, a "from" price. Every dessert gets its own page, not a line in a list

FAQLead times, delivery across Lviv in branded packaging or pickup, multi-tier cakes of 8-12 kg, a design from a reference or from the portfolio

Questions about ingredients, allergens and lead times are the most common ones a confectionery gets. When the page answers them instead of a chat thread, far more orders make it to the end

The dessert page has one button: "Leave a request". A short form opens: name and phone, no registration, no cart. After sending, the customer sees that they will be contacted within an hour during working hours

Master classesA dedicated page with decorating themes, price, number of seats and the steps of the session. Booking uses the same short form plus the number of seats

Instagram and TelegramStay fully working channels: the contacts are in the header, on the menu page and in the footer. Those orders the pastry chef enters into the CRM by hand so the pipeline is complete

Every request from the site is saved with a mark of where it came from: the dessert page or the master-class page. The CRM shows it right away

The panel lives on the same domain at /admin, login with email and password. Four sections

RequestsEvery form from the site lands here. Status counters sit on top: new, in progress, done, cancelled; below them a search by name, phone or product. Each request is a card with its type (order or master class), date, contact, dessert and the customer's note, and the status changes right on the card. The pastry chef takes an order from the first call to handover and always sees what is in progress right now

MenuProducts, prices, descriptions, photos and visibility in the catalog. A product can be hidden from the site with one switch, without deleting it

Master classesDecorating themes: names, duration, number of seats, prices and visibility

For the developerService actions: reset the menu or master classes to the base state from code, load demo requests for a showcase

Everything changed in the CRM is stored in Firestore and shows up on the site without a rebuild and without a developer

The confectionery got a system, not just a site: the showcase takes requests around the clock, and every order, from the site, Instagram and Telegram, is collected in one CRM with statuses

Menu, prices, photos and master classes are managed by the team themselves. A developer is no longer needed to add a cake or change a price

velvetcake.site