IG6Tool

A point of sale system used to process payments and keep track of stock at the Infogroep room.

Visitors can visit the Infogroep room at the campus of the VUB to purchase snacks and drinks. IG6Tool is the platform used to process payments as well as keep track of the amount of products that are in stock.

It was deployed in February 2025 and consists of a Next.js frontend and a Node.js backend, both using TypeScript.

Features #

Account & Membership Management #

  • Both visitors and Infogroep board members can sign up for an account using their VUB account using SSO.
  • Roles can be assigned to users, which enables discounts on certain products.
  • Memberships can be created to assign specific roles to users for the duration of an academic year.
  • Legacy email/password accounts are still supported, including email-based password resets.

Public UI #

  • The public website displays product availability and pricing.
  • Upon logging in, users can view their account balance and past purchases.
  • Authenticated users can transfer funds to other users.

Private UI #

  • Privileged users have access to the administration UI.
  • A dashboard is available that shows statistics like popular products, payment processing fees, and popular payment methods.
  • Privileged users can enter sales, add or edit products, and perform other privileged actions.

Stock Management #

  • The stock history of a product is stored for auditing purposes.
  • Stock can be manually updated with a reason (e.g., lost, expired).
  • Deliveries from Coca-Cola can be automatically imported.

    A headless browser is used in the backend to fetch recent orders, Google Gemini is used to analyze the orders and match items to existing products.

  • Purchases made physically at supermarkets can be automatically imported by uploading a photo of the receipt.

    Google Gemini is used to analyze and match products.

Point of sale UI #

  • A dedicated point of sale UI is accessible only from within the Infogroep room.
  • Integrates with a physical scanner that automatically places a product in the cart if a barcode is scanned.
  • A kiosk screen displays the selected products, total price, and payment QR codes.
  • Displays album art when music is playing via the Sonos system.

OAuth #

  • IG6Tool can also be used as an OAuth server to authenticate users across other Infogroep platforms, such as the library.
  • It uses OpenID Connect to authenticate via the VUB’s SSO.

Payment Processing #

  • Visitors can pay using Payconiq. IG6Tool communicates with the Payconiq API to display QR codes to the user. Payment statuses are updated in real-time on the point of sale UI.
  • Privileged users can also add funds to their account using EPC QR codes.

Miscellaneous Features #

  • Warranties for book reservations made using the library platform are automatically reserved on a user’s balance.
  • Books can be lent out directly from the point of sale.
  • The kiosk screen displays ads specified by the Infogroep API.

Tech Stack #

IG6Tool consists of a Next.js frontend and a Node.js backend, both using TypeScript. It is deployed on a Kubernetes cluster and uses GlitchTip for error reporting.