Upholstery Shop by Raul
A Frisco upholstery shop runs its customers, quotes, floor, materials, money and payroll on its own site — where a job short on fabric says so on its own ticket, on the shop board, and on the dashboard.

- My role
- Sole designer and developer — the customer site, the shop system, the data model and its access rules, the customer portal, and the launch onto the shop's own domain.
- Built for
- Retail & trade shops
- Current status
- Live on the shop's own domain, with the shop system behind a sign-in. Card payments are deliberately not wired — the shop settles the way it already settles.
- Built with
- Next.js · TypeScript · Tailwind CSS · Supabase (auth + Postgres with row-level security) · Vercel
The story
What problem existed, and what we built.
The problem
Most shop software keeps two separate lists — what customers have ordered, and what materials have been ordered. The connection between them lives in the owner's head. So a job sits half-finished waiting on fabric nobody realized hadn't arrived, and the customer finds out when they call. Around that sat the rest of a 35-year trade business: quotes on paper, promise dates in memory, and no straight answer to what a finished piece actually made.
What I built
One system the shop owns, on its own domain. The public site takes the quote request; the same system then carries it through the floor as a job ticket, links that job to the material it needs, schedules the delivery, invoices the balance and records the crew's pay. Receiving a shipment at the dock allocates the yardage against the waiting ticket automatically, and the job moves.
What it had to achieve
- Give a 35-year trade business a site that looks like the work
- Prove the one idea that matters: purchasing and production as a single system
- Make the quote request land as work, not as another thing to remember
- Work on a phone, because that is where the shop floor reads it
The customer's experience
A customer finds the shop, sees real examples of its work, and sends photos with a quote request. That request arrives as a job ticket rather than an email someone has to remember to action. Once the job is open, they get a private link to it — the stage, the balance, and what they have already paid.
What customers can do
- A shop site showing the real work, the services and the craft behind them
- A quote request that takes photos of the piece and arrives as a job ticket, not an email
- A private link to your own job — the stage it is at, what you owe, what you have paid
- A clear phone-first path for customers who'd rather call
The owner & staff experience
The owner opens the dashboard and immediately sees open jobs, what is stopped waiting on material, what is past its promise date, and how much money is still to collect. Receiving a delivery unblocks the ticket that was waiting for it. At the end of a job, the profit report says what the piece actually made rather than what it was quoted at.
What the business can do
- A dashboard answering 'what needs me first' — sorted by what is actually blocking the floor
- Leads, a quote builder, and priced quotes the customer can approve
- Job tickets with stage, promise date and material status, on a shop board by stage
- Materials on the rack, supply orders, and receiving at the dock
- Payment schedules, deposits, balances and what is still owed
- Pickups, deliveries and a delivery calendar
- Crew, payroll and pay stubs
- Profit per job — what a piece actually made
- A plain-question assistant that answers from the shop's own records
How it works
The system, explained without the jargon.
If a technical term is needed below, it's explained right where it appears.
Jobs and materials are one system
A job ticket knows what material it needs and whether that material is here. That single link is what removes the 'why is this job still sitting there' conversation.
The dock is where work restarts
Receiving a shipment allocates the material against whatever job was waiting for it, so the floor learns about it at the moment it becomes true.
Customers see their job and nothing else
The portal is enforced at the database, not hidden in the interface. A customer holding a link to their own job cannot reach anybody else's by editing the address.
One record, from quote to pay stub
The quote, the job, the material, the invoice and the crew's hours are all the same record set. Nothing is re-keyed between screens, which is what makes the profit-per-job number trustworthy.
Design decisions
The choices that shaped it — and why.
Sorted by what is blocking the floor
The dashboard does not sort by date or by size. It sorts by what is actually stopping work, because that is the question an owner opens a screen to answer.
The shop doesn't process cards
The system records deposits, balances and what is still owed, but deliberately does not take card payments. The shop already settles its own way, and staying out of payment processing keeps it out of compliance territory it doesn't need to be in.
The site looks like the trade, not like software
Photography of real finished pieces carries the public site. A shop whose whole reputation is hand work should not be introduced by stock imagery.
How it was built
Development process
- 1Built the shop-floor system around the purchasing-and-production idea
- 2Added the customer-facing website, wired so a quote request becomes a job ticket
- 3Added quotes, invoicing, the customer portal, payroll and profit reporting
- 4Hardened per-customer data access before anything real went in
- 5Launched onto the shop's own domain
Where it stands
Status & outcome
Current status
Live on the shop's own domain, with the shop system behind a sign-in. Card payments are deliberately not wired — the shop settles the way it already settles.
Outcome
The shop now runs its quotes, floor, materials, money and payroll on one system it owns, on its own domain, instead of on paper and memory. Nothing has been measured yet, so no saving or increase is claimed here.
Related projects
You might also want to see

J Kiss LLC
Operations platform for a service business · My own venture
jkissllc.comA Dallas–Fort Worth hauling company that takes quotes, books jobs, dispatches crews, hires staff and runs payroll from one connected system rather than six disconnected ones.
Read the case studyWant something like this for your business?
Tell me how your days go and what you'd like to stop doing by hand. I'll tell you honestly what would help.