Products

Mizenzo TravelMizenzo AI DeskMizenzo HostelMizenzo SchoolMizenzo ShowroomMizenzo POSMizenzo ReloadMizenzo Bazaar

Company

Why MizenzoHow it worksAboutContact WhatsApp: 0310 9721647
Mizenzo / Products / Mizenzo Showroom
Showroom Management — Vehicles & Home Goods

Every unit accounted for — by VIN, or by SKU.

A car showroom sells one specific vehicle with one specific engine number. A furniture store sells three of the same sofa. Mizenzo Showroom is built for both, with the vertical chosen when the business is created and everything downstream — fields, screens, stock behaviour — following from it.

Automotive (VIN / engine no.) or Home Goods (SKU)Landed cost apportioned across purchase linesPurchases, GRN and supplier returnsInvoicing with party ledgersStock movements append-only, no oversellOffline desktop counter on the roadmap
2Verticals — automotive and home goods
25Database tables
173Automated tests
0Floating-point money
What it does

The buy side matters as much as the sell side.

Because a showroom that only records sales cannot tell you whether it made money on them.

Two verticals, one system

Automotive tracks a serialised unit — this vehicle, this VIN, this engine number — and a sale allocates that exact unit. Home Goods tracks a SKU with a quantity, and a sale decrements it. The vertical is chosen at setup and never drifts afterwards.

Landed cost, done properly

Freight and unloading are apportioned across the purchase lines by value. A vehicle that cost 85,00,000 ex-works and 85,000 to transport enters stock at 85,85,000 — so selling it at 85,40,000 is reported as the loss it is, instead of a break-even. This is the entire reason the buy side is not just typing a cost into a stock screen.

Purchases, GRN and returns

A purchase is a document: a draft does nothing to stock, and committing it receives the units, creates the movements and raises the payment voucher. Purchase returns are blocked once a unit has been sold.

Invoicing and party ledgers

An invoice allocates the specific unit or decrements the quantity, raises the receipt and updates the customer ledger. Supplier: purchased minus paid equals payable. Customer: invoiced minus paid equals receivable. Sale returns are blocked once the invoice has been paid.

Stock that cannot quietly drift

Stock movements are append-only and the stock on hand is always derived from them, never stored as a number somebody can overwrite. Issuing online refuses to oversell, because the server knows the true balance.

Locations that match the yard

Showroom Floor and Stockyard for a dealership; Display and Warehouse for a home store — with transfers between them, so "where is it" has an answer.

Documents are legal documents

An issued invoice reprints identically after any price or tax change, because its totals and line descriptions are snapshots. Document numbers carry a device segment, so two counters can never mint the same invoice number.

Money maths that never drifts

Money is stored as whole minor units, quantity is scaled by a thousand, and tax and discount rates are held in basis points. Never floating point — because 0.1 + 0.2 becomes a support call when the customer is holding the printed invoice.

Designed for what comes next

Built now so the offline counter can exist later.

Phase one is the web application. The rules below cost almost nothing today and are extremely expensive to retrofit — they are what will let the same system run on a desktop counter machine with the internet down.

  • Every screen talks only to a repository interface. No screen calls the network directly, so a local database can be swapped in underneath without rewriting the application.
  • All money and stock maths is shared, pure code, so the server, an offline desktop and the invoice printer produce identical numbers to the paisa.
  • Record identifiers are generated on the device, never by the database — an offline machine must be able to mint a final identifier before the server has ever seen it.
  • Nothing is hard-deleted. A deleted row cannot replicate to a device that was offline; there would be nothing left to carry the news.
  • An offline sale that is replayed is always accepted and reported afterwards, because rejecting it would make a sale disappear after the customer has taken the goods home.
Purchase PUR-000042 · landed cost
EXVehicle, ex-worksSupplier invoice line85,00,000
FRFreight & unloadingApportioned by value85,000
STEnters stock atThe real cost of this unit85,85,000
SLSold for 85,40,000Reported honestlyLoss 45,000
Inside the system

What is in the system.

Phase one covers the full trading cycle, from the supplier's invoice to the customer's receipt.

1Stock

  • Serialised units by VIN and engine number
  • Quantity-tracked SKUs
  • Locations and transfers
  • Append-only movements, derived stock on hand
  • Valuation at landed cost

2Buying

  • Purchase orders and GRN
  • Landed cost apportionment
  • Supplier returns, blocked once sold
  • Payment vouchers
  • Supplier ledger — purchased minus paid

3Selling

  • Invoices that allocate the exact unit
  • Receipts and part payments
  • Sale returns, blocked once paid
  • Customer ledger — invoiced minus paid
  • Snapshot totals that reprint identically

4Money

  • Tax and discount in basis points
  • Integer minor units — no floating point
  • Receivables and payables
  • Document numbering with a device segment

5Verticals

  • Automotive — car and bike showrooms
  • Home Goods — furniture and home stores
  • Vertical-specific fields and screens
  • Chosen once, at setup

6Roadmap

  • Phase 1 — web application (in progress)
  • Phase 2 — offline desktop counter
  • Phase 3 — mobile app for the floor salesperson
  • Phase 4 — test drive, RTO, finance EMI, trade-in
Specifications

The technical detail

ArchitectureFastify with a typed API and Drizzle on PostgreSQL; React web application
Data model25 tables, with PostgreSQL as the single source of truth
VerticalsAUTOMOTIVE (serialised) or HOME_GOODS (quantity), fixed when the business is created
MoneyStored as integer minor units; quantity scaled by 1,000; tax in basis points
Testing121 unit tests that need no database, plus 52 integration tests against a real PostgreSQL
PlatformWeb today; an offline desktop counter and a mobile app are on the roadmap
DeletionSoft deletes only — history is never destroyed
NumberingInvoice and purchase numbers carry a device segment, e.g. INV-D1-000042

The web application is deliberately online-only. Browser storage carries no durability guarantee, and a system holding stock and money cannot rest on "probably still there". Offline belongs to the desktop and mobile applications, which own a real filesystem.

FAQ

Mizenzo Showroom — common questions

Yes — that is the automotive vertical. Each vehicle is a physical unit with its own VIN and engine number, held at a location such as the showroom floor or the stockyard, and a sale allocates that exact unit rather than reducing a count.

Yes. In the home-goods vertical stock is a SKU with a quantity held at a display area or a warehouse, and a sale decrements the quantity. The fields and screens change to match; you choose the vertical once, at setup.

Because without it your margin is fiction. Freight and unloading get spread across the purchase lines by value, so each unit carries its true cost and a sale below that cost is reported as a loss instead of quietly looking like a break-even.

The web application needs a connection — by design, because browser storage is not durable enough to hold stock and money. An offline desktop counter using a real local database is the next phase, and the system has been built from the start so that it can be added without rewriting the screens.

Har gaari, har unit — poora hisaab.

Tell us whether you run a vehicle showroom or a home-goods store, and we will show you the matching setup — purchases with landed cost, the stock floor and the ledgers — on your own screen.

0310 9721647Call or WhatsApp · 7 days a week
Chat on WhatsApp0310 9721647