Files
avtoambor/README.md
David Beccue 05be5b03aa Initial scaffold for AvtoAmbor parts inventory
SvelteKit 2 + Svelte 4 + adapter-node, SQLite via better-sqlite3 (WAL,
foreign keys on). Bilingual EN/Тоҷикӣ throughout, locale persisted in
localStorage.

Pages: dashboard (totals, low stock, recent movements), parts list with
search and sort, part create/edit, record movement (in/out/adjust with
smart unit-price and adjust-quantity prefill), suppliers list with
inline add.

Schema: categories, suppliers, parts (with _en/_tg name+description
columns, dirams for money), stock_movements with check on movement_type.
On-hand updates are done in JS inside a transaction with the movement
insert.

Dockerized dev: docker compose, named project, bind-mounted data/ for
DB persistence. Seed contains 6 categories, 4 suppliers, 31 realistic
parts (Lada / Nexia / Opel / Toyota bias).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 07:05:24 +05:00

1.1 KiB

AvtoAmbor

Simple auto-parts inventory for a single shop. SvelteKit + SQLite. UI is bilingual (English / Тоҷикӣ).

Prerequisites

  • Docker + Docker Compose

Everything else (Node, npm, native build tools for better-sqlite3) runs inside the container.

Quickstart

make install     # install dependencies inside the container
make db-init     # create data/avtoambor.db with schema + seed
make run         # dev server at http://localhost:5173

make help lists every target.

Production

Build with make build, copy the build/ directory plus node_modules and data/avtoambor.db to the Windows host, then run:

node build/index.js

The server listens on port 3000 by default. Open http://localhost:3000 in the browser on that machine.

Data

The SQLite database lives at data/avtoambor.db. The data/ directory is gitignored and bind-mounted into the container, so the DB file persists on the host.

  • make db-init — create the DB if it doesn't exist (does nothing otherwise).
  • make db-reset — delete and recreate the DB (asks for confirmation).