Skip to content

04Sole Developer

POS

Point of Sale System — Restaurant Management Platform

Role
Full-Stack Developer - Sole Developer
Stack
PythonFrappe FrameworkERPNext ConceptsMariaDBJavaScript
Links
Private / internal
/app/point-of-sale
POS · Main outletT-02 · 2 itemsT-04 · 4 itemsTakeaway #18 · 1 item+ New order
  • All
  • Starters
  • Mains
  • Breads
  • Beverages
  • Desserts
Search menu items

Paneer Tikka

₹260

Chicken 65

₹280

Veg Biryani

₹220

Chicken Biryani

₹290

Butter Naan

₹50

Fish Curry

₹320

Fresh Lime Soda

₹80

Masala Chai

₹40

Gulab Jamun

₹90

Filter Coffee

₹50

Dal Tadka

₹180

Gobi Manchurian

₹210

Dine-inTakeaway

Table T-04 · Customer Walk-in

  • Chicken Biryani

    ₹290 each

    2
  • Paneer Tikka

    ₹260 each

    1
  • Butter Naan

    ₹50 each

    3
  • Fresh Lime Soda

    ₹80 each

    2
Subtotal₹1,150
GST₹58
Total₹1,208
CashUPICard
Charge ₹1,208
POS billing — menu, open orders and cart. Representative UI mockup with sample data.

Overview

A custom point-of-sale system built on the Frappe Framework for small restaurant operations, covering orders, invoices, menu, inventory and customer management with real-time billing.

Problem

A small restaurant needed order taking, billing, inventory and daily revenue tracking in one system.

Solution

A custom POS on the Frappe Framework with DocTypes for orders, invoices, menu items, inventory and customers; real-time order and billing workflows for dine-in and takeaway; and Frappe dashboards and reports for staff and management.

Architecture

    • Frappe Desk — POS screen, forms, dashboards, reports
  1. Frappe controllers (Python)
    • Orders · Invoices · Menu · Inventory · Customers
    • MariaDB

Features

  • Restaurant POS
  • Orders
  • Invoices
  • Menu
  • Inventory
  • Customer management
  • Real-time billing
  • Payment processing
  • Frappe controllers
  • Dashboards
  • Reports
  • RBAC

Engineering work

  • Built and customized DocTypes (data models) for orders, invoices, menu items, inventory, and customer management.
  • Implemented real-time order and billing workflows supporting dine-in, takeaway, and payment processing.
  • Developed server-side business logic using Frappe controllers and Python, ensuring accurate billing and transaction handling.
  • Customized Frappe UI forms, dashboards, and reports for efficient staff operations and management insights.
  • Integrated role-based access control (RBAC) using Frappe's permission system for admin and staff users.
  • Implemented inventory management with stock updates and validations, reducing manual tracking errors.
  • Built sales reports and analytics dashboards using Frappe reporting tools for daily revenue tracking.

Engineering decisions

  1. 1Billing and transaction logic kept server-side in Frappe controllers.
  2. 2Frappe's permission system used for admin and staff roles.
  3. 3Stock updated and validated as part of the order workflow.

Code

pos/doctype/pos_order.pypython
class POSOrder(Document):    def validate(self):        for item in self.items:            in_stock = get_stock_qty(item.menu_item)            if item.qty > in_stock:                frappe.throw(f"Only {in_stock} left: {item.menu_item}")        self.grand_total = sum(i.qty * i.rate for i in self.items)
Simplified sketch of the approach — not production code.

Screens

/app/point-of-sale
POS · Main outletT-02 · 2 itemsT-04 · 4 itemsTakeaway #18 · 1 item+ New order
  • All
  • Starters
  • Mains
  • Breads
  • Beverages
  • Desserts
Search menu items

Paneer Tikka

₹260

Chicken 65

₹280

Veg Biryani

₹220

Chicken Biryani

₹290

Butter Naan

₹50

Fish Curry

₹320

Fresh Lime Soda

₹80

Masala Chai

₹40

Gulab Jamun

₹90

Filter Coffee

₹50

Dal Tadka

₹180

Gobi Manchurian

₹210

Dine-inTakeaway

Table T-04 · Customer Walk-in

  • Chicken Biryani

    ₹290 each

    2
  • Paneer Tikka

    ₹260 each

    1
  • Butter Naan

    ₹50 each

    3
  • Fresh Lime Soda

    ₹80 each

    2
Subtotal₹1,150
GST₹58
Total₹1,208
CashUPICard
Charge ₹1,208
POS billing — menu, open orders and cart. Representative UI mockup with sample data.
/app/query-report/Daily Sales

Reports

Daily Sales Report

Date: Today
Outlet: Main

Orders

86

Revenue

₹48,720

Avg. ticket

₹567

Dine-in / Takeaway

61 / 25

Sales by hour

11
12
13
14
15
16
17
18
19
20
21
Stock itemIn stockStatus
Basmati rice (kg)6Low
Paneer (kg)2.5Low
Chicken (kg)14OK
Milk (L)22OK
Daily sales report and stock levels. Representative UI mockup with sample data.

Challenges

  • Accurate billing and transaction handling across dine-in, takeaway and payment flows.

Results

  • Inventory updates and validations reduced manual tracking errors.
  • Daily revenue tracked through sales reports and analytics dashboards.