Skip to main content

pos-mm

pos-mm is an open-source Point of Sale (POS) library built to replace outdated and expensive systems many restaurants still rely on. It started as a project for my family-owned restaurant and is designed to provide a modern, flexible, and affordable foundation for handling orders, payments, receipts, tables, inventory, and reports.

The library focuses on being reusable and framework-agnostic. It can be integrated into web applications, desktop software, or custom automation workflows. Developers can build complete POS systems on top of pos-mm without having to implement the core business logic themselves.

Features

  • Menu Management – create and categorize menu items
  • Orders – link orders to menu items, tables, and staff
  • Payments – support multiple payment methods per order
  • Users and Roles – waiter, cashier, admin with role-based permissions
  • Table Management – open, close, and merge tables
  • Inventory Tracking – optional stock deduction tied to menu items
  • Receipts – generate itemized receipts for orders
  • Reports – daily totals, top-selling items, payment breakdowns
  • Database Utilities – simple setup and initialization helpers

Installation

Install the package from PyPI:

pip install pos-mm

Requirements

  • Python 3.9+
  • Dependencies listed in requirements.txt

To install all dependencies for development:

pip install -r requirements.txt

Quick Start

1. Initialize a database

from mm_pos.db import init_db, MenuItemDB

# In-memory SQLite database for testing
Session = init_db("sqlite:///:memory:")
session = Session()

2. Create a menu item

burger = MenuItemDB(name="Burger", price=9.99, category="Food")
session.add(burger)
session.commit()

3. Create a user

from mm_pos.db import UserDB

alice = UserDB(name="Alice", role="waiter")
alice.set_pin("1234")  # securely hash the PIN
session.add(alice)
session.commit()

4. Create an order with items

from mm_pos.db import OrderDB, OrderItemDB

order = OrderDB(table_number=1, user=alice)
session.add(order)
session.commit()

session.add(OrderItemDB(order_id=order.id, menu_item_id=burger.id, qty=2))
session.commit()

5. Record a payment

from mm_pos.db import PaymentDB

payment = PaymentDB(order=order, method="cash", amount_given=25.0, user=alice)
session.add(payment)
session.commit()

6. Generate a receipt

from mm_pos.receipt import Receipt

receipt = Receipt(order)
print(receipt.generate_text())

Next Steps

  • Explore InventoryManager for stock management
  • Use TableManager for managing tables in a restaurant
  • Generate reports with the Reports class
  • Integrate with FastAPI to expose your POS system as a web service

Metadata

Release files for pos-mm 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pos-mm 0.1.2
File Size Uploaded
pos_mm-0.1.2.tar.gz 14.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pos-mm 0.1.2
File Interpreter ABI Platform
pos_mm-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 26.8 kB

Release files / pos_mm-0.1.2.tar.gz

Download URL pos_mm-0.1.2.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8088c29956e1bee79905054782054060a5822b602169f9d5417f3264edabf3fc
BLAKE2b-256 checksum
How to use checksums
4fb63213b5124571cdc14718bfd99dc380455ed51a273d8e3c4232bfef20aad0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pos_mm-0.1.2-py3-none-any.whl

Download URL pos_mm-0.1.2-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c3204aaf10a733ea5e063ed2093c3a7f35030b0522c7525b3f5539bb61e932f6
BLAKE2b-256 checksum
How to use checksums
be805e7beded88682110da2ab9a1361ec6d6c7584422ecb5c56b466db11f5801
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page