Shohruz Makhmudov — home / Drawing set 2026
W-01 7cars — Operations & investor-finance ERP for a luxury car dealer Business systems · Mobile Live

7cars

From one fragile Excel workbook to a ledger-true ERP: every car, investor share and dividend accounted for.

Capital dashboard in the “night glass” theme: free cash, total assets, an unallocated-profit alert, stock, transit and sold counts, quick actions and the latest ledger operations (fictional data).
Phone dashboard in the night theme: cash and asset cards, the unallocated-profit alert and the floating glass dock with a raised “+” button.
  1. Live capital & P&L
  2. Per-car cost & investor split
  3. Investor ledger & dividends
  4. Control board & multi-step undo
Client
Seven Lux Auto, Moscow
Year
2026
Authorship
Own build
Status
Live
Role
Solo product engineer: proposal, data model, UI/UX, build, deployment and support.
Surfaces
Web app & installable PWA · desktop and phone
Languages
RU · EN · UZ
Stack
Next.js 16 · React 19 · TypeScript · Tailwind CSS 4 · Supabase · PostgreSQL · Row-level security · Vercel · Render cron · Backblaze B2 · Python · openpyxl
W-01.17cars Sheet 1 of 7

Survey — context and problem.

The problem

A growing dealership ran cars, investors and profit splits in one hand-calculated Excel workbook — no roles, no audit, no backups.

Seven Lux Auto is a multi-brand luxury car dealer in Moscow. Each car is bought abroad, shipped, cleared through customs, registered and sold — and each purchase is funded by several private investors at once. Before 7cars, the entire business lived in one Excel workbook: a sheet of cars with eight cost categories, a journal of every money movement signed by investor, balances, profit distribution and a summary.

The workbook worked until it didn’t. Every total was calculated by hand, so one mistyped cell could quietly shift an investor’s balance. There were no roles and no change history, no way to check a car’s real cost from a phone at the port, and no reliable backups. As the fleet and the investor pool grew, the owners needed answers the spreadsheet could not give with confidence: how much cash is actually free, what each car really cost, which profit has not been allocated yet, and who is owed what.

The constraints were strict: real investor money, daily use on phones, and data that must never be lost.

W-01.27cars Sheet 2 of 7

Authorship — who built what.

Own buildSolo product engineer: proposal, data model, UI/UX, build, deployment and support.Client: Seven Lux Auto, MoscowVisibility: Demo data AI-assisted — I build with AI coding agents — Codex, Claude Code, Antigravity. Spec, architecture decisions, review, QA, deployment and handover are mine.

What was mine

  • Commercial proposal and specification (May 2026)
  • Data model: 10 tables, Postgres functions, triggers and row-level security
  • Accounting logic: per-car cost, pro-rata profit and loss allocation, dividends, treasury
  • All UI/UX: mobile-first PWA, light and night themes, RU / EN / UZ
  • Excel migration and reconciliation tooling for the client’s workbook
  • Deployment, nightly off-site backups, restore scripts and ongoing support

AI in the loop

I build with AI coding agents — Codex, Claude Code, Antigravity. Spec, architecture decisions, review, QA, deployment and handover are mine.

Agents on this project: Codex · Claude Code · Antigravity

Credits & notes

  • All screens use fictional fixture data. No client figures or investor names are published.
W-01.37cars Sheet 3 of 7

Plan — the system, drawn first.

The solution

A mobile-first ERP on Supabase: per-car costing and multi-investor funding, ledger-driven P&L and dividends, a three-currency treasury, audit, undo and nightly off-site backups.

7cars replaces the workbook with one ledger. Every money movement — investment, purchase, expense, sale, profit or loss allocation, dividend — is a typed ledger entry, and car costs are derived from it by the database instead of being typed in twice. Around that core sit six working views: a capital dashboard, inventory with per-car cost and financing split, a Control board of things that need attention, investors with their own reports, a full history with undo, and a company treasury in USD, USDT and RUB. A floating dock and a “+” action sheet put every daily operation one tap away on a phone. The system runs on Supabase Postgres with row-level security and deploys on Vercel; a nightly job ships an independent backup to Backblaze B2 with tiered retention.

System schematic · Not to scale W-01.3
Users & surfaces Web app & installable PWA · desktop and phone RU · EN · UZ
04 · Interface Next.js 16 · React 19 · Tailwind 4 · PWA
02 · Logic PL/pgSQL triggers & RPCs · TypeScript ledger engine
03 · Intelligence Capital analytics: ROI, turnover, aging (rule-based)
01 · Data Supabase Postgres · 10 tables · 28 RLS policies
00 · Infra Vercel · Render cron · Backblaze B2

Module key

  1. Capital dashboard: free cash, total assets, unallocated profit, ROI, capital turnover and a monthly snapshot with CSV / PDF export
  2. Inventory with VIN search, 11 sort modes, list and photo views and a per-car financing split
  3. Vehicle file: eight-part cost breakdown, investor shares, photo gallery and a per-car PDF report
  4. Control board: undistributed profit, stock over 60 days, long transit, investors below zero, expenses without receipts
  5. Investor cards with contribution, profit, dividends, period filter and PDF statements
  6. Company treasury in USD, USDT and RUB with cash flow, P&L, debts and currency exchange
  7. Audit history grouped by day, with inline edits and multi-step undo

Key decisions

  1. Why the ledger is the single source of truth

    Car costs are recalculated by a database trigger whenever a ledger entry changes, and the company’s share of profit is read from the same ledger. There is no second copy of a number to drift out of sync.

  2. Why balance rules live in Postgres

    Triggers refuse any operation that would push an investor or a treasury wallet below zero, whichever screen or script sends it. The interface checks too, but the database has the final word.

  3. Why access is enforced with row-level security

    Admin, operator and investor roles are enforced by 28 RLS policies in the database itself. In September 2026 the policies were hardened and direct execution of sensitive functions was revoked.

  4. Why undo is built from reverse patches

    Each action stores a reverse patch, so a mistake can be rolled back — last action, last hour, today or the last three days — without restoring a whole backup.

  5. Why backups leave the platform

    Supabase is the primary store, but a nightly cron job writes an independent copy to Backblaze B2 with daily, weekly and monthly retention, and a restore script can bring it back.

W-01.47cars Sheet 4 of 7

Elevations — the desktop screens.

Capital dashboard in the “night glass” theme: free cash, total assets, an unallocated-profit alert, stock, transit and sold counts, quick actions and the latest ledger operations (fictional data).
Phone dashboard in the night theme: cash and asset cards, the unallocated-profit alert and the floating glass dock with a raised “+” button.

All elevations 05

  1. Vehicle file: VIN, status, purchase price and total cost, the eight-part expense breakdown, investor shares and the photo gallery.
    Fig. 4.1 Vehicle file: VIN, status, purchase price and total cost, the eight-part expense breakdown, investor shares and the photo gallery.
  2. Company treasury with USD, USDT and RUB wallets, a total in USD equivalent, Operations, Cash flow, P&L and Debts tabs, and a mixed-currency log.
    Fig. 4.2 Company treasury with USD, USDT and RUB wallets, a total in USD equivalent, Operations, Cash flow, P&L and Debts tabs, and a mixed-currency log.
  3. Control board of what needs attention: undistributed profit, stock older than 60 days, long transit, investors below zero, expenses without receipts and operations without an investor.
    Fig. 4.3 Control board of what needs attention: undistributed profit, stock older than 60 days, long transit, investors below zero, expenses without receipts and operations without an investor.
  4. Full action history grouped by day, with period filters and inline editing and deletion of ledger operations.
    Fig. 4.4 Full action history grouped by day, with period filters and inline editing and deletion of ledger operations.
  5. Full-length dashboard with capital statistics, monthly capital turnover and a six-month financial snapshot with CSV and PDF export.
    Fig. 4.5 Full-length dashboard with capital statistics, monthly capital turnover and a six-month financial snapshot with CSV and PDF export.
W-01.57cars Sheet 5 of 7

Details — the mobile screens.

A car’s photo card on the phone: status, VIN, cost, days in stock, purchase date, financing split and an add-expense action.
Phone dashboard in the night theme: cash and asset cards, the unallocated-profit alert and the floating glass dock with a raised “+” button.
The “+” action sheet on the phone: add or sell a car, allocate profit, add an investment, pay dividends or record an expense.

Every mobile screen 03

Phone dashboard in the night theme: cash and asset cards, the unallocated-profit alert and the floating glass dock with a raised “+” button.
Fig. 5.1 Phone dashboard in the night theme: cash and asset cards, the unallocated-profit alert and the floating glass dock with a raised “+” button.
A car’s photo card on the phone: status, VIN, cost, days in stock, purchase date, financing split and an add-expense action.
Fig. 5.2 A car’s photo card on the phone: status, VIN, cost, days in stock, purchase date, financing split and an add-expense action.
The “+” action sheet on the phone: add or sell a car, allocate profit, add an investment, pay dividends or record an expense.
Fig. 5.3 The “+” action sheet on the phone: add or sell a car, allocate profit, add an investment, pay dividends or record an expense.
1 / 3
W-01.67cars Sheet 6 of 7

Materials schedule — the stack, and why.

W-01.6 · Materials schedule
LayerMaterialWhy
01DataSupabase Postgres · 10 tables · 28 RLS policiesInvestor money needs constraints and access rules at the source, not only in the interface.
02LogicPL/pgSQL triggers & RPCs · TypeScript ledger engineCosts and balances are derived from one ledger, so every total can be recomputed and audited.
03IntelligenceCapital analytics: ROI, turnover, aging (rule-based)Owners see frozen capital and discount candidates without building another spreadsheet.
04InterfaceNext.js 16 · React 19 · Tailwind 4 · PWAOne codebase for the office screen and the phone at the port — installable, in three languages.
05InfraVercel · Render cron · Backblaze B2Nightly off-site backups with tiered retention, independent of the primary database.

Stack

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Supabase
  • PostgreSQL
  • Row-level security
  • Vercel
  • Render cron
  • Backblaze B2
  • Python · openpyxl
W-01.77cars Sheet 7 of 7

Completion — outcome and links.

Verified facts

row-level security policies
28
Source: from the repository, Sep 2026
treasury currencies
USD · USDT · RUB
Source: from the repository, Sep 2026
interface languages
RU · EN · UZ
Source: from the repository, Sep 2026
nightly off-site backup, tiered retention
22:00 UTC
Source: render.yaml cron, Sep 2026

Want to see it running?

I can walk you through the live system on demo data and explain the decisions behind it.

Request a walkthrough
Next sheet W-02 ImportCRM Landed-cost accounting CRM for an electronics import business Business systems 2025–26