Decofam is a complete furniture store: a calm, editorial storefront for customers and a full back office for the people who run it. An order can start on the website, at the counter or on an installment plan, and all three draw on the same stock, the same customers and the same reports. It is my reference build for the Omnichannel plan.
A working showcase store. Sign in with the demo accounts to explore the storefront and the admin panel.
Decofam / Current storefront preview
01 / THE BRIEF
The goal.
Show what a store needs beyond product pages: several ways to pay, a shop counter that shares the website’s stock, and an admin panel a small team can run the whole business from, on a phone as well as a desktop.
MY CONTRIBUTION
My role.
I designed the storefront and the admin panel and built the whole system: the Next.js interface, the NestJS GraphQL API, the PostgreSQL data model, payments, and the automated tests and CI that check every change.
02 / THE EXPERIENCE
What the project brings together.
01
Storefront & product pages
Collection pages with category filters, an on-sale switch, sorting and search. Product pages offer a gallery with zoom, a finish picker that swaps the picture with the chosen colour, dimensions, stock status and customer reviews.
02
Checkout & ways to pay
Checkout as a guest or signed in, with sales tax and discount codes, paid through Stripe Checkout. A cancelled or declined payment is retried on the same order, with the customer’s details still in place. Customers can also pay in four monthly installments once the store has approved their document, or use the credit in their wallet.
03
Customer account
Sign-in without a password: an email link, Google or a code by text message. The account shows online, installment and in-store orders with their status, returns and exchanges, wallet, addresses and wishlist. Returns are counted from the day of delivery and refunded with the tax actually paid; on an installment order the refund comes off what is still owed first. A guest’s orders move into their account the first time they sign in with the same email.
04
In-store sales
A counter sale is recorded in three steps: find or add the customer, pick the pieces, take the payment. It uses the same stock and the same customer list as the website, is taxed by the store’s own state, and appears in the customer’s account.
05
Catalog & inventory
A product editor with picture upload, finishes, and slugs and SKUs made automatically. A whole catalog can be imported from an Excel or CSV file, with pictures and finishes matched to the products by file name. Stock is tracked per warehouse with reservations, so a piece in someone’s checkout is not sold twice, and a returned piece goes back on the shelf when it is received. Discount codes and scheduled banners complete the merchandising tools.
06
Operations & reporting
Orders, a payments ledger, installment documents, returns, wallet withdrawals, reviews, messages and notifications each have their own workspace. Every installment plan shows what is paid, what is outstanding and what is due next. A dashboard and sales reports summarize revenue, orders and stock.
03 / BEHIND THE INTERFACE
Engineering decisions.
One typed model, end to end
TypeScript runs from the React components to the database. The API is organised into feature modules with the same four layers each (domain, application, infrastructure, presentation), so business rules stay independent of the database and are tested on their own.
A private store for every demo visitor
Anyone can sign in as a demo customer or demo admin and change anything. Each visitor works in a private copy of the data that is cleared afterwards, so the showcase never breaks and no visitor sees another’s changes.
Storage that cleans up after itself
Uploaded files are compared with the database once a day; a replaced picture or a deleted product’s gallery is removed automatically. The job never touches a recent file and refuses to run against a database that references no files.
An admin panel that works on a phone
Every list was checked at twelve screen sizes, from a 320px phone to a wide desktop: tables become cards below 1200px. Each section and filter has its own address, so a view can be bookmarked or shared.
04 / WHAT’S NEXT
Ready for a real brand.
For a client, going live means connecting live payments, a text-message provider and the brand’s own catalog. The Decofam design itself is unclaimed: it has not been sold to anyone, and the first brand that wants it can have it as its own, exclusively. Every other store is designed from scratch.