Exploring the Innopay system with Cursor

@sorin.cristescu · 2025-06-21 11:49 · OffChain Luxembourg

As I've mentioned in previous post, OffChain Luxembourg has begun rolling out the "Innopay" brand, powered by HBD payments. What does that mean in practice I'll explain in this post:

  • Labour is extremely expensive in Luxembourg, who sports the highest "minimum salary" in the EU. High salaries for the staff jeopardize the profitability of low-margin businesses such as restaurants, especially since, unlike in the US:

    • there is no tipping culture in Europe, the waiters are supposed to be paid by the owner and get very few tips

    • social protections are good and the less scrupulous staff doesn't shy away from stretching it with generous sick days and absences.

  • Big, mid-market restaurants (Indie's has 70 tables between the main room, the terrace and the upper floor) need to not only fill as many tables as possible, but also to keep customers happy and not waiting too long for a waiter to show up.

The combination of these two factors make an automatic "self order-and-pay" particularly interesting in its case: customers take a seat and, provided they are enrolled in Innopay, open their phone's camera and read a QR-code for the drink and /or dish they want to order.

This is pilot with only the most popular dishes and drinks. Ideally the menu should be in an web app

Here's how that would look outside on the terrace at the back where customers might otherwise feel a bit stranded, as they are at the mercy of a waiter remembering to come take their orders.

Beautiful view from the terrace but don't get misled by the palm trees in the background, we are at 50° latitude North

The main development is a Vercel+Neon DB server-side app that polls the public HAF_SQL database every 5s looking for transfers to @indies.cafe and checking their memo.

When one such transfer is found, it gets displayed in a very basic web interface that can be accessed at indies.innopay.lu from the laptop that is always open behind the bar's counter, and a "doorbell" sound is also emitted.

The server application can be accessed from anywhere, including from a smartphone

I developed this with Grok. But despite the application being rather simple, doing "back-and-forth"-s between Grok and VS Code became unwieldy.

So I installed Cursor to try it out (everybody is raving about Cursor) and fired it up and asked it to explain the project. I thought it would be helpful to display here Cursor's analysis of the project:

I'll explore the project structure and key files to provide you with a comprehensive summary of this project.

Read file: package.json Read file: README.md Read file: app/page.tsx Read file: app/page.tsx Read file: app/api/poll-hbd/route.ts Read file: app/api/fulfill/route.ts Read file: lib/db.ts Ran tool Read file: menu/qrcodegen.ts Based on my exploration of the project, here's a comprehensive summary of the IndiesMenu project:

Project Overview

IndiesMenu is a Next.js-based restaurant order management system designed for a café called "Indies Cafe" that accepts cryptocurrency payments through the Hive blockchain. The system monitors HBD (Hive Backed Dollar) transfers and manages customer orders in real-time.

Key Features

🍽️ Order Management System

  • Real-time order monitoring: Polls the Hive blockchain every 5 seconds for new HBD transfers to @indies.cafe

  • Order fulfillment tracking: Staff can mark orders as fulfilled, removing them from the pending queue

  • Table assignment: Orders are automatically parsed to identify table numbers from memo fields

  • Order timing: Tracks when orders were received and highlights late orders (>10 minutes)

🔊 Audio Notifications

  • Sound alerts: Plays doorbell and chime sounds when new orders arrive

  • Audio unlock: Requires user interaction to enable audio (browser security requirement)

  • Toast notifications: Visual pop-up notifications for new orders with order details

💰 Cryptocurrency Integration

  • Hive blockchain integration: Monitors HBD transfers using HAF (Hive Application Framework)

  • Payment processing: Accepts HBD payments with order details in transaction memos

  • QR code generation: Separate menu system generates QR codes for easy payment

Technical Architecture

Frontend (Next.js 15)

  • React 19 with TypeScript

  • Tailwind CSS for styling

  • React Toastify for notifications

  • Real-time polling with 5-second intervals

Backend APIs

  • /api/poll-hbd: Fetches new HBD transfers from HAF and stores them in database

  • /api/fulfill: Marks orders as fulfilled in the database

  • /api/haf-test: Testing endpoint for HAF integration

Database Layer

  • PostgreSQL (Neon database) for production

  • SQLite (better-sqlite3) for local development

  • Transfer tracking: Stores order details, fulfillment status, and timestamps

External Integrations

  • HAF (Hive Application Framework): Queries blockchain for HBD transfers

  • Hive blockchain: Monitors transfers to @indies.cafe account

Project Structure

indiesmenu/ ├── app/ # Next.js app directory │ ├── api/ # API routes │ │ ├── poll-hbd/ # HBD transfer polling │ │ ├── fulfill/ # Order fulfillment │ │ └── haf-test/ # HAF testing │ ├── page.tsx # Main order dashboard │ └── layout.tsx # App layout ├── lib/ │ └── db.ts # Database configuration ├── menu/ # QR code generation system │ ├── qrcodegen.ts # QR code generator │ └── innologo-71x47.png # Logo for QR codes └── public/sounds/ # Audio notification files

Use Case

This system is designed for a café that:

  1. Accepts crypto payments via Hive blockchain

  2. Needs real-time order management for staff

  3. Wants automated notifications for new orders

  4. Requires order fulfillment tracking to manage workflow

The system essentially bridges the gap between cryptocurrency payments and traditional restaurant operations, providing a seamless experience for both customers (who can pay with crypto) and staff (who get real-time order notifications and management tools).

What I plan next:

  • a customer-facing web interface for Innopay users to be able to choose anything from both the drinks and the food menus of (any) restaurant

  • a payment interface to on-board new users to Innopay

  • a smartphone app that simplifies things for the normies.

Let me know in the comments if reading this emboldens you to make Innopay yours too and deploy it in Germany (Aachen: @detlev , elsewhere @uwelang ) or anywhere else ( @meno , @jga )

#innopay #spendhbd #leofinance #luxembourg #ecency #hive-165025
Payout: 0.000 HBD
Votes: 139
More interactions (upvote, reblog, reply) coming soon.