Back to portfolio

BazPOS: from counter to inventory.Everything connected.

A point-of-sale application for automotive parts: sales, stock by location, purchasing, and reports in one place.

No registration required. Enter as a Salesperson or Manager. Shared fictional data, restored daily.

One sale. The complete workflow.

A real recording of the demo, from finding a part to inventory and reports. No narration; enable captions to follow each step.

Original interface in Spanish · Demonstration with fictional data

Read the walkthrough summary

We enter as a Manager, search for a filter, and add it to the cart. We select a receipt and cash payment, then save the sale. Next, we open inventory by location and explore reports for the fictional store.

From the part to the result.

Find it. Sell it. Record it.

Search by code, OEM, or name, add a product to the cart, and record payment. Each sale connects the counter with inventory movements.

Confirmation of a fictional BazPOS sale showing a product, receipt, cash payment, and total.Enlarge screenshot
Original interface in Spanish · Demonstration with fictional data

Stock has its place.

Check quantities by location and review movement history. Inventory is part of the same workflow as sales.

BazPOS demo inventory showing products and stock by location.Enlarge screenshot
Original interface in Spanish · Demonstration with fictional data

Understand the store.

Explore sales, payment methods, and reports as a Manager. Fictional activity provides context for exploring the application.

BazPOS reports with filters and results for the fictional store.Enlarge screenshot
Original interface in Spanish · Demonstration with fictional data

From interface to deployment.

React in the browser. Django for business logic. MariaDB for data. An application that also makes its engineering decisions worth exploring.

  1. ReactInterface · SPA
  2. Django / DRFAPI · business logic
  3. MariaDBData · transactions
Stock and concurrency
Transactions and row locks with select_for_update coordinate operations that modify inventory.
Role permissions
JWT with token refresh. Salesperson, Warehouse Staff, Supervisor, and Manager permissions are checked in the backend.
Server state
React Router for navigation and TanStack Query for requests, caching, and data updates.
An isolated demo
React served by nginx, with Django and MariaDB in Docker Compose. Cloudflare Tunnel connects to the homeserver; demonstration data is restored daily.
View BazPOS source