POSperity - Point of Sale AI Filter App This Portfolio

POSperity Point of Sale Software

Company
POSperity
Position
Full Stack Dev, Designer, Co-Owner

Project Overview

I am currently engaged in a startup venture alongside two other developers.
We are developing a comprehensive Point of Sale system tailored for restaurants.
Our prototype has been successfully deployed in a pizza shop for over a year, demonstrating its effectiveness and reliability.
We are now in the process of expanding our reach by implementing our system in two additional locations.

Point of sale take order screen

My Involvement

As in any startup, my responsibility is anything that needs to get done.

Back-end Development

I have played a pivotal role in developing the Rust back-end API, where I’ve crafted a substantial portion of the back-end endpoints

Front-end Development

I have contributed significantly to the project by developing various full-stack features, including:

  • Report pages: Crafting detailed and interactive report interfaces for business analytics.
  • Employee Management: Implementing systems for efficient management of restaurant staff.
  • Security: Ensuring the robustness and integrity of our system against potential threats.
  • Miscellaneous Features: Enhancing the system with a variety of small yet impactful features across different modules.

Design

As the primary designer of the project, I am responsible for the visual and user experience aspects. My designs are crafted using Figma, ensuring a cohesive and intuitive interface for our users.

Feature Showcase

Reporting System - Dashboard

A comprehensive and fully functional reporting system.

  • Analyze Revenue: Delve into revenue details by product, category, and service
  • Trend Analysis: Examine trends over time to make informed decisions.
  • Vat Liability Summary: Obtain a quick overview of VAT liabilities
  • Smart VAT Breakdown: Receive a detailed breakdown of VAT liability based on the composition of orders.
Reports Summary Dashboard

Reporting System - Financials

An extensive analysis of financial performance, VAT, expenses, and tax liabilities.

  • Quick Summary: Offers an immediate snapshot of financial health.
  • Historical Performance: Reviews financial performance from past years for comparative analysis.
  • Expense Recording: Facilitates the recording of expenses for accurate financial tracking.
  • Automated Tax Liability Calculation: Automatically calculates tax liabilities, simplifying financial management.
Reports Financials Dashboard

Employee Management

Streamlines the management of employee shifts.

  • Effortless lookup of employee availability.
  • Sort-able by time, type, and name.
  • Simple adjustments to shift times.
  • Future feature: Integrated payroll management.
Reports Employee Management employee list Reports Employee Management employee editing

Security Panel

Robust security settings ensure system integrity.

  • Admin Panel is secured with enhanced protection
  • Group permissions and an audit log for the forthcoming features
Admin panel security settings

Product Management

Advanced menu and deal management system

  • Smart menu builder automatically populates fields based on relevant selections.
  • Capability to tag potential allergens or preferences such as meat or nuts for auto-detection.
  • Sophisticated deal builder setup enabling the creation of virtually any type of deal a restaurant could envision
  • Deals are automatically detected when processing an order.
Product management screen showing different tabs of steps in the workflow Product management screen showing editing deals

Table Service

Interactive floor plan builder for table service.

  • Floor plan builder for creating tables, managing seating availability, and setting table charges.
  • Convenient order placement directly from a mobile device by waitstaff
  • Integrated table booking system for reservations.
Table service setup and management screen

The Tech

We have carefully selected our tech stack based on the goals of the software, as well as the environment it will be run in.

On the back-end side, we have used Rust. There are few reasons for this.

The Speed

Our primary target audience are small restaurants. The software is also running on a single server, to which multiple terminals can connect to over a local network.
We wanted to make sure that the restaurants would not be forced to buy expensive hardware in order to run our system. For this reason we need a high performance language like Rust.

The Reliability

One of the worse case scenarios that could happen to our system, is it crashing in the middle of a busy shift, taking down the restaurant ability to take orders. Because of this, we need to make sure our code will never crash, and extensively test it for bugs.

Rust helps a lot here. The Rust language is known for extensive error handling functionalities, which we take full advantage of. Furthermore rust is a compiled language, which helps us catch errors early, before they have the chance to cause any damage or be missed.

The choice of database was also very important. We had a few restrictions in our choice. One of our goals is to keep the bundle size tiny, and make the setup process as fast and easy as possible. We needed a database that is fast, small, and easy to embed directly into the application.

We eventually landed on Indradb, a graph database written in rust. This is a little known database, but it has ticked all of our requirements. In some ways it’s also our biggest mistake, as this database is extremely hard to work with.

On the front-end side, we use React with Typescript.

It is my belief that React is often not the best choice. A lot of websites and products would be better of using a lightweight system like HTMX, instead. However when it comes to complex systems with a lot of interactivity, bulkier component based frameworks like React become useful. Our application has a highly complex user interface with a lot of interactivity. There are a lot of menus, sub menus, settings, builders, toggles, and more.

The choice for using typescript instead of plain JS was simple, reliability. Having types allows a higher degree of code reliability, ability to catch bugs early, and the extra benefit of auto complete from having defined types improves the dev experience and speed.

Contact Icon

Stay In Touch