Skip to content
E-Commerce & RetailWeb

Petroleum POS

Web POS for fuel retail — meter-reading sales entry, inventory & reports

A Flutter Web point-of-sale system for fuel retail: a daily closing form that turns per-nozzle pump readings into sales and atomically updates fuel and shop-item stock, plus two Firestore-backed sales reports, all behind an admin-gated Firebase login.

Petroleum POS — application screenshot
Petroleum POS — application screenshot
Petroleum POS — application screenshot

Source is private. The idempotent daily closing and the atomic per-nozzle and per-item stock updates behind it are explained below.

About this project

A Flutter Web app on Firebase, gated behind an admin allowlist that is checked before any page loads. The core workflow is a single daily-closing form: for every nozzle, the day's current meter reading is entered against the last saved reading, and the app computes liters sold and revenue at the live fuel price; non-fuel shop items get a same-day sale quantity. Saving folds that into the current day's record inside a monthly Firestore document — idempotent, so reopening and resaving the same day updates it in place instead of creating a duplicate — while atomically decrementing fuel and item stock.

Two report screens read from that same transaction data with a date-range picker: a Sale/Purchase Report (period totals plus a per-product breakdown) and a Nozzle Reading History (start/end readings and total sale per nozzle, per day). Fuel and non-fuel items each get their own screen for restocking and price updates.

Key features

  • Daily closing form: per-nozzle current-vs-last meter reading auto-computes liters sold and revenue at the live fuel price, saved as one idempotent daily record
  • Fuel inventory: live stock and price per fuel type, with restock and price-update actions
  • Non-fuel item inventory: the same restock/price-update pattern for shop items, tracked by unit of measure
  • Two date-range reports: a Sale/Purchase Report (totals plus a per-product breakdown) and a Nozzle Reading History (start/end readings and total sale per nozzle)
  • Firebase email/password login gated against an admin allowlist in Firestore — accounts not on the list are signed back out

More in E-Commerce & Retail

~/sherazi.dev$./say-hello

Say hello.

Questions about a case study, one of the packages, AI tooling or Flutter in general are always welcome.

// or browse the packages on pub.dev(opens in a new tab)