Naar de inhoud
Alle projecten

Case 01 — Voorraad- en kassasysteem

Voorraadbeheer

Een voorraad- en kassasysteem voor een kleine winkel of opslag. Scan met je telefoon of een handscanner en zie het meteen live op het dashboard.

Rol
Ontwerp en ontwikkeling
Jaar
2026
Type
Voorraad- en kassasysteem
Stack
Python · Flask · SQLite · JavaScript · HTML · CSS
Screenshot van Voorraadbeheer Screenshot van Voorraadbeheer

ADe uitdaging

Kleine zaken houden hun voorraad vaak bij in een spreadsheet of op papier. Dat loopt altijd achter: wat er net verkocht is, wat er binnenkwam en wat bijna op is, zie je pas als iemand het overtypt. Het doel was één systeem voor inboeken, verkopen en opvolgen, dat werkt met wat er al ligt: een telefoon of een goedkope barcodescanner.

BDe aanpak

Een Flask-app op een SQLite-database, met een JSON-API voor de interactieve pagina's. Elke voorraadwijziging wordt bewaard met de reden erbij, elke prijswijziging komt in een historie. Mobiel eerst: op een telefoon zit de navigatie onderaan binnen duimbereik, op een groot scherm in een zijbalk.

CWat het doet

  1. 01

    Live dashboard

    Kerncijfers, voorraadwaarde, omzet van vandaag en alles wat er net gescand is, zonder te verversen.

  2. 02

    Scannen

    Met de camera van je telefoon of een USB- of bluetoothscanner. Een onbekende barcode koppel je meteen aan een product.

  3. 03

    Kassa

    Scan of zoek producten, reken af met kaart of contant, inclusief wisselgeld, en krijg een bon. De voorraad gaat vanzelf omlaag.

  4. 04

    Prijshistorie

    Elke prijswijziging wordt bewaard en in een grafiek getoond, met verkoop- en inkoopprijs en de marge.

  5. 05

    Labels

    Producten zonder barcode krijgen een eigen EAN-13-code. Print labels op een A4-stickervel of met een labelprinter.

  6. 06

    Logboek

    Elke verandering van de voorraad staat in een logboek met de reden: verkoop, inboeken of telling.

DIn beeld

Productpagina met prijsverloop, marge en de eigen barcode. Productpagina met prijsverloop, marge en de eigen barcode.
01Productpagina met prijsverloop, marge en de eigen barcode.
Op de telefoon: dashboard en scanner, met de navigatie binnen duimbereik. Op de telefoon: dashboard en scanner, met de navigatie binnen duimbereik.
Op de telefoon: dashboard en scanner, met de navigatie binnen duimbereik. Op de telefoon: dashboard en scanner, met de navigatie binnen duimbereik.
02Op de telefoon: dashboard en scanner, met de navigatie binnen duimbereik.
Labels kiezen en afdrukken op een stickervel of met een labelprinter. Labels kiezen en afdrukken op een stickervel of met een labelprinter.
03Labels kiezen en afdrukken op een stickervel of met een labelprinter.

EOnder de motorkap

01HTTPS op je eigen netwerk
Browsers geven alleen camera-toegang via een beveiligde verbinding. De app maakt bij de eerste start zelf een certificaat aan, zodat scannen met je telefoon werkt op je eigen wifi.
02Eigen barcodes
Interne EAN-13-codes beginnen met een 2, het bereik voor intern gebruik, en krijgen een correct berekend controlecijfer. Ze worden als SVG getekend, scherp op elk formaat.
03Live zonder websockets
Het dashboard vraagt elke twee seconden alleen de scans op die nieuwer zijn dan de laatste die het kent, en pauzeert als het tabblad niet zichtbaar is.
04Voorraad die klopt
Afrekenen en voorraad aanpassen gebeurt in één databasetransactie. Lukt één regel niet, dan wordt er niets weggeschreven.
05Grafieken zonder bibliotheek
De omzet- en prijsgrafieken zijn met eigen JavaScript getekend, zonder externe chart-library.

FIn cijfers

regels code
4.356
databasetabellen
7
manieren om te scannen
3
grafiekbibliotheken
0

Iets gelijkaardigs nodig?

Vertel kort wat je nodig hebt. Je krijgt meteen een eigen portaal waar we chatten, bestanden delen en waar je de voortgang van je project volgt.

Start een project
  • Meestal een antwoord binnen twee werkdagen
  • Vrijblijvend: een aanvraag kost niets
  • Chat, bestanden en status op één plek