Edge Decor ERP

Designed and built end to end, solo2026 — Present
2 CitiesStock by DateGST DocumentsP&L per City
The admin dashboard: revenue this month, outstanding, active orders, stock utilisation, and the profit and loss for the month by city

Overview

Edge Decor rents chairs, sofas, tables and decor pieces for weddings, corporate events and exhibitions from warehouses in Delhi and Mumbai. Before it, the business ran on spreadsheets, with the debtors in Tally. The system was built from the owner's own sheets, so the way the business already counts things is the way the system counts them.

At a Glance

2

Cities

22

Modules

5

Roles

2026

Built In

Key Features

01

Quotation to booking in one screen

The salesperson picks the customer, the event dates and the items. Each line can carry its own dates, come from either city, and shows what is free there. Items the company does not own are marked outsourced with a vendor and a cost the customer never sees. The quotation becomes the booking in one step, and cannot become two.

A quotation: customer, event, dates, the sign-offs card, the summary with GST, and the item lines with their rate and days
02

Sign-offs before the customer sees anything

Above a limit the owner sets, a quotation waits for the branch manager; above a higher one, for the owner. A quotation asking for an advance waits for accounts. Until every sign-off is in, the proforma will not print and the quote cannot be sent. Editing the quote cancels its approvals, because the approval was for the numbers.

03

Invoices and challans in the company's own format

A proforma with its own number, a tax invoice numbered per state and financial year with CGST and SGST or IGST worked out from the place of supply, and a delivery challan carrying the warehouse's dispatch address. All on the company letterhead. The invoice counter picks up where the old series left off.

A proforma invoice, a tax invoice and a delivery challan on the company letterhead, with HSN codes, GST and the dispatch address
04

Stock by city and date

Every item has four counts in each city: in the warehouse, out at an event, in repair, written off. The availability board shows what is free in a city for any dates. One unit can serve back-to-back events but can never be promised twice.

The availability board for one city and a date range: units owned, peak booked, free, and the bookings holding them
05

Dispatch, returns and repairs

Creating a challan is the dispatch: the units leave the warehouse count the moment it is saved. Crews can send spares beyond the order. Returns are graded good, needs repair or damaged in one go, and a repaired item comes back into stock with its repair cost recorded once. Overdue returns are flagged every night.

The returns worklist: bookings with goods still out, soonest event end first, with an overdue flag
06

Operations never see a price

The warehouse team in each city runs its own goods: challans, returns, grading. No screen, document or notification they see carries a rupee figure.

A completed booking as operations sees it: the customer, the event, the line items and the timeline, with no money anywhere
07

Money the way the business already counts it

Payments carry cash and TDS separately, so a bill paid net of TDS still reaches paid while collected shows only the cash. The debtors list from the old books sits inside outstanding and ageing from day one. Salespeople request a payment; accounts approve it.

Payments: collected with the TDS beside it, outstanding including balances brought forward, collection rate, ageing, and every booking with its balance
08

Margin per booking, profit per city

Each booking carries its own costs: transport, labour, night charges, purchases. Margin is what was billed less the vendor cost and those costs. The month's profit per city is the bookings' margins less salaries and bills. Sales see prices, never margin.

The job costs card on a booking: supervisor cost, billed value, vendor cost, and the margin on this booking
09

Staff, payroll and attendance

Employee records per city, a monthly payroll run, and an attendance grid marked with a click. The attendance counts sit beside each payroll row; the owner decides the pay.

HR and payroll: staff by city with salary and status, the month's wage bill, and tabs for payroll and attendance
10

Bills and petty cash

Operating bills by type, with recurring ones like rent and loan instalments logged by themselves each month. A cash book per city that answers one question: where is the cash.

Utilities and bills for the month by city: rent, power, repairs, labour, phone, with recurring bills logged on their own
11

Targets and the client plan

Monthly and yearly targets per person and per city. A client plan for the financial year, one row per customer with twelve month columns, the way the owner planned it in his sheet.

The client plan for the financial year: one row per customer with last year, target, billed so far, progress, and a column per month
12

Reports with a chart builder

Top customers and products, utilisation, fulfilment time, grading results, win rate, collection rate, margin. A chart builder for the owner's own charts, shareable with the team, and the period exported to Excel in one click.

Reports for the month: bookings, booked value, collected, direct cost, job margin, clients served, win rate, stock utilisation, and the charts
13

Works on a phone

Every screen is built to fit a phone, and the app installs to the home screen. Push notifications reach the team wherever they are.

The returns worklist on a phone
14

Also

A calendar of every booking, an activity log of every change, tasks the owner can hand out, a search box that finds any record, and a per-person permission grid.

The booking calendar: every booking on each day it runs, with the day's list

System Architecture

One Next.js application on Vercel with Postgres on Neon. The engines that matter, availability, challans, invoices, payroll, repairs, opening balances, the cash book and the chart builder, are plain modules with no login and no clock of their own, so each has a console test suite that runs against a database branch. Server actions wrap them with the role check, the city wall and the module gate. Prices are removed for operations on the server before anything reaches the browser.

01

Login & Permission Grid

02

Catalogue & Stock per City

03

Availability Engine

04

Quotations & Sign-offs

05

Bookings & Challans

06

Invoices & Payments

07

HR, Payroll & Attendance

08

Bills & Cash Book

09

Dashboards, P&L & Reports

10

Notifications & Audit

Technical Highlights

Availability is derived, not stored: a booking's lines are its reservation while the booking is active, and the check runs with the stock rows locked, so two conversions of the last units cannot both succeed

Modules are released to production by a flag store, so a milestone can be switched on without a deploy

Twelve console test suites and a browser walk per module with real logins run against a database branch; the suites include races such as two challans for the same stock at once

A shared chart is a definition recomputed for whoever opens it, so a city manager sees only their own city inside the owner's chart

Next Step

Running an operation like this?

If you're wrestling with the same kind of complexity — multi-branch inventory, formulations, approval workflows — tell me about it. I'll respond within 24 hours with an honest assessment.

Start a conversation