Skip to content

All projects

2024 to 2026 · Archive · Tyre wholesale

Novaya Doroga

A wholesale truck tyre and wheel storefront with its own admin CMS, built around the fact that the dealer’s stock lived in the accountant’s spreadsheets.

  • Next.js 14
  • Redux Toolkit
  • MUI
  • NestJS 10
  • TypeORM
  • PostgreSQL 16
  • PapaParse
backend modules
24
entities
20
migrations across 2024
19
items in the offline snapshot
65

What I walked into

The dealer’s stock lived in the accountant’s spreadsheets, and the storefront had to follow them rather than the other way round.

The importer had to read the shop’s real 2024 exports, one product family at a time.


What I changed, and why

  1. Import, not data entry

    POST /parsing takes a CSV and a category slug and runs createFilters(), groupProperties() and creatItems() against four column maps.

  2. Filters are rows

    Filters and their options are database rows linked many-to-many to items, so faceted search is a SQL join on indexed UUIDs.

  3. Offline at the transport layer

    Every page still fires the real request and only falls back to a 65-item snapshot when it fails.

A new product family needs a column map, not a backend release.

Where it landed

The storefront turns the dealer’s CSV exports into filters and items, and faceted search is a join.

24 modules, 20 entities and 19 migrations spanning January to December 2024, with an offline demo that still tries the real API first.