Skip to main content

Unpispas Developer Guide

Welcome to the Unpispas POS developer documentation. This guide provides everything you need to understand, develop, and extend the unpispas-pos application and its reusable component libraries.

What is Unpispas POS?

Unpispas POS is a point-of-sale application built with Angular and Ionic, backed by a PHP REST API. It is designed for multi-tenant hospitality businesses (restaurants, bars, cafés) and supports:

  • Product catalog management with categories, families, and options
  • Ticket/order lifecycle from creation through payment, printing, and invoicing
  • Multi-device operation with QR code scanning, kiosk mode, and WebSocket connectivity
  • Offer, extra, and discount engines with automatic application rules
  • TicketBAI and Verifactu compliance for Spanish tax regulations
  • Offline-first architecture with synchronization to a central server

Architecture at a Glance

The application is organized as an Nx monorepo with a clear separation of concerns:

unpispas.nx/
├── apps/
│ ├── unpispas-pos/ # Main POS application (Angular + Ionic)
│ ├── upp-test/ # Testing and demo application
│ └── upp-guide/ # This documentation site
├── libs/
│ ├── upp-defs/ # Constants, types, and utilities
│ ├── upp-base/ # Core services (HTTP, state, i18n, alerts, storage)
│ ├── upp-data/ # Data model, synchronization, and business logic
│ ├── upp-wdgt/ # Reusable UI widget library
│ └── feature/ # Feature modules (login, ticket, place, product, ...)
├── server/ # PHP backend (Slim + legacy)
└── docker/ # Full-stack development environment

Library Dependency Graph

The shared libraries form a layered dependency chain:

┌─────────────┐
│ upp-wdgt │ UI components (Angular + Ionic)
├─────────────┤
│ upp-data │ Data model, sync, business logic
├─────────────┤
│ upp-base │ Core services (HTTP, state, storage, i18n)
├─────────────┤
│ upp-defs │ Constants, types, utilities (no dependencies)
└─────────────┘

Each layer only depends on the layers below it. Feature libraries (libs/feature/*) compose these layers into domain-specific modules consumed by the apps.

How to Use This Guide

  • New to the project? Start with Getting Started for the full architecture overview and development setup.
  • Need to understand a library? Jump to the Libraries section for exhaustive API documentation.
  • Building something new? Check the Guides for step-by-step tutorials.
  • Looking for widget examples? The upp-wdgt documentation includes interactive demos.