Web Applications

Session/Timer based POS (Point of Sale)

Built by Angel Gabriel Litob Jr.

This is a POS system for businesses that specializing in time renting such as karaoke rooms and billiard tables.

  • Builder email verified

    Verification

Project screenshot
Type
Professional
Category
Web Applications
Published
Sep 23, 2026
Updated
Sep 23, 2026
Built withNext.jsBetter AuthZodTanStack QueryTanStack RouterTanStack TablePrismaPostgreSQLpnpmshadcn/uiTailwind UI
TopicsEntertainment

About this project

The problem

The POS (Point of Sale) system is a web-based application specializing to serve business that use sessions as their service. This include karaoke rooms, billiard tables, gaming rooms, etc. What this system solve is the portability of a POS, traditional POS rely on desktop app and bulky cash registers. This system can be used as web desktop or tablet.

My role

I am the Full-stack Next.js developer of the team leading the product development, sprint execution, managing the team from UI to deployment. I am also leading the execution and planning of the architectural decisions with the guidance of our senior developer.

What I owned

I am responsible mainly as the backend developer and the deployment of the project, but I also have a huge contribution in product development and frontend.

Backend responsibilities:

  1. Designed database schema
  2. Did the database migration from MariaDB to PostgreSQL since the initial prototype is written in MariaDB.
  3. Structured the codebase which aligns with Next.js Full Stack architecture.
  4. Established the Authentication using BetterAuth
  5. Established the Authorization using CASL (an Isomorphic Authorization Javascript Library) to enable and control rbac.
  6. Applied business logics according to business with clear separation of concerns using service layer.
  7. Lead the team to implement server action for data mutation to keep Next.js architecture consistent.
  8. Implemented the datetime consistency and reliability as this the core solution of the system.

Deployment responsibilities:

  1. Implemented industry standard deployment workflows using development, staging, and production environment so that the team can test effectively and efficiently.
  2. Ensured robust and fast app performance delivery to the client.
  3. Ensured proper and established dependencies and node packages for consistent build of the app.

Frontend responsibilities:

  1. Implemented tanstack-query and tanstack-table for state management and data handling.
  2. Implemented shadcn preset UIs and tailwind css.
  3. Implement Zod schema for data validation.
Technical & product decisions

One of the technical decisions that I have implemented is how to manage the time of for the session/timer. I made sure that the system will follow a constant Philippine Standard Time IANA Zone as this would affect the session billing accuracy of the system. IANA (Asia/Manila) is the source of truth for what offset applies at a given instant, but every instant that crosses a wire, gets stored, or gets compared is UTC — Manila time is a presentation/query-boundary layer computed on top, never a storage format.

Another technical decision that I have is implementing server action for data mutation instead of using API routing for a Next.js full-stack application. This is important as it streamline internal data mutation driven directly to the application's UI; this is to sync client-side UI with the server-side state. Furthermore, I applied next safe action to secure and validate server actions.

Another technical decision is the implementation of Better-Auth. Key decision of this is it provides the out-of-the-box feature velocity of a paid, managed service (like Clerk), but gives you the zero-cost ownership and control of a self-hosted library (like Auth.js)

Constraints

The constraints that we have worked in is the limited direct source of requirements of the system. Though, POS system have straight forward features, we have a constraints on user specific needs for a session based POS, as we are building for a generic for direct distribution system not a custom software for a single user.

Result & impact

The measurable impact that I have produced to the team is its productivity and reliability. First, by implementing AI assisted programming such as Claude code, we are able to implement 2-4 features in 2-3 weeks with only a team of three for a 12 week project timeline. Second, is the reliability of the system, making sure that correct testing must be applied in different environments.

Who else worked on it

I collaborated with 3 Full Stack developers, one is our lead developer. With the client/product owner of the system.