From e6de14719769a153fccddc0f515a58d4c194ad09 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 19:36:15 +0000 Subject: [PATCH 1/4] Initial plan From 8322733f28b35b3c5393b011990dd5cd4f9f1607 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 19:49:29 +0000 Subject: [PATCH 2/4] Add SEO landing pages, FAQ schema, meta tags, and whitepaper page - Update homepage with meta description, keywords, and canonical URL - Add JSON-LD FAQ structured data to homepage - Add visible FAQ section to homepage - Create /student-union-cashless landing page with FAQ schema - Create /indie-festival-payments landing page with FAQ schema - Create /hacker-camp-nfc landing page with FAQ schema - Create /whitepaper page rendering the security whitepaper as HTML - Add routes for all new pages in routes/web.php - Add English translations for meta tags and FAQ content Agent-Logs-Url: https://github.com/CatLabInteractive/catlab-drinks/sessions/44091289-1fe9-4e4e-9416-a93a55acfb4d Co-authored-by: daedeloth <1168599+daedeloth@users.noreply.github.com> --- resources/lang/en/welcome.php | 15 + .../views/landing/hacker-camp-nfc.blade.php | 245 +++++++++++++++ .../landing/indie-festival-payments.blade.php | 204 ++++++++++++ .../landing/student-union-cashless.blade.php | 200 ++++++++++++ resources/views/welcome.blade.php | 85 +++++ resources/views/whitepaper.blade.php | 292 ++++++++++++++++++ routes/web.php | 4 + 7 files changed, 1045 insertions(+) create mode 100644 resources/views/landing/hacker-camp-nfc.blade.php create mode 100644 resources/views/landing/indie-festival-payments.blade.php create mode 100644 resources/views/landing/student-union-cashless.blade.php create mode 100644 resources/views/whitepaper.blade.php diff --git a/resources/lang/en/welcome.php b/resources/lang/en/welcome.php index 078a6e6..de9d116 100644 --- a/resources/lang/en/welcome.php +++ b/resources/lang/en/welcome.php @@ -53,4 +53,19 @@ 'license_warranty' => 'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.', 'language' => 'Language', + + 'meta_description' => 'CatLab Drinks is an open-source, hardware-agnostic cashless payment system for events and festivals. Use budget NFC tags, self-host on your own server, and run a complete DIY festival payment infrastructure.', + 'meta_keywords' => 'hardware-agnostic cashless payment system, budget NFC top-up system for festivals, DIY festival payment infrastructure, open-source POS, NFC payment, cashless event, festival payment, self-hosted bar automation', + + 'faq_title' => 'Frequently Asked Questions', + 'faq_1_q' => 'Can I use standard NFC tags for a festival payment system?', + 'faq_1_a' => 'Yes. CatLab Drinks works with standard NTAG213 NFC tags that cost as little as €0.10 each. There is no need for expensive proprietary wristbands or vendor-locked hardware.', + 'faq_2_q' => 'What hardware do I need to run a cashless event?', + 'faq_2_a' => 'Any Android phone or tablet with NFC can serve as a POS terminal. For desktop setups, a USB NFC reader such as the ACR122U works with our companion service. The system is fully hardware-agnostic.', + 'faq_3_q' => 'Is CatLab Drinks suitable for small events on a tight budget?', + 'faq_3_a' => 'Absolutely. The software is free and open-source, NFC tags are extremely cheap, and you can use existing Android devices as terminals. This makes it ideal for student unions, community events, and small festivals.', + 'faq_4_q' => 'How does the NFC card security work?', + 'faq_4_a' => 'Each POS terminal has its own ECDSA cryptographic key pair. Card data is signed with the terminal private key and verified using approved public keys. The card hardware UID is included in the signature to prevent cloning.', + 'faq_5_q' => 'Does the system work offline?', + 'faq_5_a' => 'Yes. Because the balance is stored directly on the NFC card, transactions can be processed even without an internet connection. Data syncs automatically when connectivity is restored.', ]; diff --git a/resources/views/landing/hacker-camp-nfc.blade.php b/resources/views/landing/hacker-camp-nfc.blade.php new file mode 100644 index 0000000..34533b2 --- /dev/null +++ b/resources/views/landing/hacker-camp-nfc.blade.php @@ -0,0 +1,245 @@ + + + + + + + + + + NFC Payment Infrastructure for Hacker Camps — CatLab Drinks + + + + + @include('blocks.favicon') + + + + @if(config('services.gtm')) + + @endif + + + +@if(config('services.gtm')) + +@endif + +
+ +
+ +
+ +
+
+

NFC Payment Infrastructure for Hacker Camps

+

Open architecture. Open source. Bring your own hardware.

+

+ Hacker camps and tech events demand transparency and control. CatLab Drinks is a + GPL-licensed cashless payment system you can deploy, inspect, and modify. Source your + own NTAG213 tags in bulk, run the server on your own metal, and integrate with your + existing infrastructure via a documented REST API. +

+

+ Open Web App + Install Android App + View on GitHub +

+
+
+ +
+ +
+
+

Built for People Who Read the Source

+

+ No black boxes. The cryptographic model, card data format, and API surface are fully + documented and open for audit. Here's what's under the hood. +

+
+
+ +
+
+

🔑 Per-Device ECDSA Keys

+

+ Each POS terminal generates its own P-192 key pair. Signatures fit within NTAG213's + 144-byte memory. Public keys require explicit admin approval — no trust-on-first-use. +

+
+
+

🛠️ Raw Hardware Sourcing

+

+ Use any NTAG213 NFC tags from any supplier. ACR122U or compatible USB readers for + desktop setups. Android NFC for mobile terminals. No proprietary hardware required. +

+
+
+

📡 Socket.IO NFC Bridge

+

+ The companion nfc-socketio + service bridges USB NFC readers to the browser POS via socket.io. Run it on a Raspberry + Pi or any Linux box. +

+
+
+

📄 Full REST API

+

+ Both the management and device APIs are documented with Swagger. Integrate with your + own dashboards, ticketing systems, or data pipelines. +

+
+
+

🐳 Docker-Ready

+

+ Deploy with Docker, Docker Compose, Heroku buildpacks, or bare-metal PHP+Apache. The + Dockerfile and Procfile are included in the repository. +

+
+
+

🔓 GPL v3 Licensed

+

+ Free as in freedom. Fork it, patch it, redistribute it. The full source — backend, + frontend, NFC logic, and crypto — is on GitHub. +

+
+
+ +
+ +
+
+

Technical Details

+
+
+ +
+
+

Card Data Format (V1)

+

+ Each NFC card stores 85 bytes of signed data in an NDEF external record: +

+ + + + + + + + + + + + + + + + + + +
FieldSizeDescription
Version1 byteFormat version (0x01)
Device ID3 bytesSigning terminal identifier
Balance4 bytesSigned 32-bit integer (cents)
Transaction count4 bytesUnsigned 32-bit monotonic counter
Timestamp4 bytesUnsigned 32-bit Unix timestamp
Previous transactions20 bytes5 × signed 32-bit amounts
Discount1 byteDiscount flag
ECDSA signature48 bytesP-192 signature (24 r + 24 s)
+

+ The signature covers version + deviceId + payload + cardHardwareUid. + Including the hardware UID (read from the NFC chip, not stored in the data) prevents + cross-card replay attacks. +

+
+
+ +
+ +
+
+

Frequently Asked Questions

+
+
+ +
+
+
+
Can I audit the full source code of the payment system?
+

Yes. CatLab Drinks is released under the GNU GPL v3 license. The entire codebase — backend, POS frontend, NFC card logic, and cryptographic signing — is publicly available on GitHub for inspection, modification, and redistribution.

+
+
+
What cryptography does the NFC card system use?
+

Each POS terminal generates an ECDSA P-192 key pair. Card data (balance, transaction count, timestamps, and the hardware UID) is signed with the terminal's private key. Other terminals verify signatures using approved public keys distributed by the server. P-192 was chosen to fit signatures within the 144-byte NTAG213 memory constraint.

+
+
+
Can I source my own NFC hardware?
+

Absolutely. The system uses standard NTAG213 tags available from any electronics supplier. For readers, any NFC-capable Android device or ACR122U-compatible USB reader works. There is zero vendor lock-in on hardware.

+
+
+
How do I integrate CatLab Drinks with my own infrastructure?
+

The system exposes a full REST API documented with Swagger. Deploy via Docker, Heroku, or any PHP-capable server. The NFC companion service for USB readers communicates over socket.io. All protocols are documented and open.

+
+
+
+ +
+ +
+ +
+ +
+ + + diff --git a/resources/views/landing/indie-festival-payments.blade.php b/resources/views/landing/indie-festival-payments.blade.php new file mode 100644 index 0000000..14c0af2 --- /dev/null +++ b/resources/views/landing/indie-festival-payments.blade.php @@ -0,0 +1,204 @@ + + + + + + + + + + Cashless Payments for Indie Festivals — CatLab Drinks + + + + + @include('blocks.favicon') + + + + @if(config('services.gtm')) + + @endif + + + +@if(config('services.gtm')) + +@endif + +
+ +
+ +
+ +
+
+

Cashless Payments for Indie Festivals

+

Own your payment infrastructure. No vendor lock-in, no per-transaction fees, no mandatory hardware bundles.

+

+ Indie festivals shouldn't have to hand over a slice of every drink sale just to go cashless. + CatLab Drinks is an open-source, hardware-agnostic payment system that lets you build your + own DIY festival payment infrastructure using off-the-shelf NFC tags that cost cents — not euros. +

+

+ Open Web App + Install Android App + View on GitHub +

+
+
+ +
+ +
+
+

Break Free from Expensive Ecosystems

+

+ Traditional cashless vendors lock you into their hardware, their software, and their pricing. + CatLab Drinks takes the opposite approach: everything is open, standard, and under your control. +

+
+
+ +
+
+

🏷️ €0.10 NFC Tags

+

+ Use standard NTAG213 NFC tags or stickers sourced from any supplier. No proprietary + wristbands or vendor-specific chips required. Budget a fraction of what traditional + systems charge per attendee. +

+
+
+

📱 Your Own Devices

+

+ Any Android phone or tablet with NFC becomes a POS terminal. Use what you already have + or buy affordable second-hand devices. Desktop setups use any USB NFC reader. +

+
+
+

🖥️ Self-Hosted

+

+ Deploy on your own server, a VPS, or a free-tier cloud platform. Your attendee data + and transaction history stay on infrastructure you control. No third-party data sharing. +

+
+
+

📊 Full Sales Visibility

+

+ Real-time dashboards show revenue per bar, top-selling items, and transaction volumes. + Make informed decisions during the festival and generate post-event reports instantly. +

+
+
+

📡 Reliable Offline Mode

+

+ Field conditions are unpredictable. The POS system continues processing transactions + offline because balances live on the cards. Data syncs seamlessly when the connection + is restored. +

+
+
+

🔐 Bank-Grade Signing

+

+ Every card transaction is signed with per-device ECDSA cryptographic keys. No shared + secrets, no single points of failure. An admin must approve every terminal key before + it can write to cards. +

+
+
+ +
+ +
+
+

Frequently Asked Questions

+
+
+ +
+
+
+
Can I run a cashless festival without expensive vendor contracts?
+

Yes. CatLab Drinks is free, open-source software. You deploy it on your own server and use standard NTAG213 NFC tags that cost as little as €0.10 each. There are no licensing fees, no per-transaction charges, and no mandatory hardware bundles.

+
+
+
What NFC tags work with this system?
+

Any standard NTAG213 NFC tag or sticker works. You can source them from any electronics supplier worldwide. There is no requirement for proprietary wristbands or vendor-specific chips.

+
+
+
How many POS terminals can I run simultaneously?
+

There is no hard limit. Each Android device or USB NFC reader setup acts as an independent terminal. Add as many bars and terminals as your event needs.

+
+
+
What happens if the internet goes down during the festival?
+

The POS keeps working. Balances are stored on the NFC cards themselves, so transactions process locally. When connectivity returns, everything syncs automatically to the server.

+
+
+
+ +
+ +
+ +
+ +
+ + + diff --git a/resources/views/landing/student-union-cashless.blade.php b/resources/views/landing/student-union-cashless.blade.php new file mode 100644 index 0000000..ad77e36 --- /dev/null +++ b/resources/views/landing/student-union-cashless.blade.php @@ -0,0 +1,200 @@ + + + + + + + + + + Cashless Payments for Student Unions — CatLab Drinks + + + + + @include('blocks.favicon') + + + + @if(config('services.gtm')) + + @endif + + + +@if(config('services.gtm')) + +@endif + +
+ +
+ +
+ +
+
+

Cashless Payments for Student Unions

+

Run a professional cashless bar at your next campus event — without the professional price tag.

+

+ Student unions run on tight budgets and volunteer power. CatLab Drinks is a free, open-source bar + automation system that turns cheap NFC tags and the Android phones you already have into a + fully-featured cashless payment infrastructure. No vendor contracts, no recurring fees, no + hardware lock-in. +

+

+ Open Web App + Install Android App + View on GitHub +

+
+
+ +
+ +
+
+

Why Student Unions Choose CatLab Drinks

+
+
+ +
+
+

💰 Minimal Cost

+

+ The software is completely free. NFC tags cost as little as €0.10 each — a fraction of the + price of proprietary wristbands. Use the Android devices your team already owns as POS + terminals. +

+
+
+

🙋 Volunteer-Friendly

+

+ The POS interface is simple enough for anyone to use after a two-minute walkthrough. Pair a + new device by scanning a QR code. No training sessions or technical knowledge required. +

+
+
+

🔓 Zero Lock-In

+

+ Self-host on your own server or use a free-tier cloud service. Standard NFC tags, standard + Android devices, open-source code. Move to a different solution any time — your data is + always yours. +

+
+
+

📊 Real-Time Sales Reports

+

+ Treasurers get instant visibility into revenue, top-selling items, and per-bar breakdowns. + Export data for your financial reporting with no extra tools needed. +

+
+
+

📡 Works Offline

+

+ Spotty campus WiFi? No problem. The POS system processes transactions offline and syncs + when the connection returns. Balances are stored directly on the NFC cards. +

+
+
+

🔐 Cryptographic Security

+

+ Each terminal signs card data with its own ECDSA key pair. Signatures are verified + organisation-wide, preventing forgery and ensuring every transaction is tamper-proof. +

+
+
+ +
+ +
+
+

Frequently Asked Questions

+
+
+ +
+
+
+
How much does it cost to set up a cashless system for a student event?
+

CatLab Drinks is free and open-source software. The only cost is the NFC tags themselves, which start at around €0.10 each. You can use any Android phone or tablet you already own as a POS terminal.

+
+
+
Can volunteers run the system without technical training?
+

Yes. The POS interface is designed to be simple — volunteers tap menu items, confirm the order, and optionally scan an NFC card. Pairing a device takes under two minutes with the QR code flow.

+
+
+
Do we need to buy specialised hardware?
+

No. CatLab Drinks is hardware-agnostic. Any NFC-enabled Android device works as a terminal. For desktop setups, any compatible USB NFC reader can be used. Standard NTAG213 tags work as payment cards.

+
+
+
Can we self-host the system on our own server?
+

Absolutely. CatLab Drinks is designed for self-hosting. Deploy with Docker, Heroku, or any PHP-capable server. Your data stays under your control at all times.

+
+
+
+ +
+ +
+ +
+ +
+ + + diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 60c6091..add9c69 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -3,6 +3,9 @@ + + + {{ __('welcome.title') }} — {{ __('welcome.tagline') }} @@ -13,6 +16,55 @@ @include('blocks.favicon') + + @if(config('services.gtm')) + @endif + + + +@if(config('services.gtm')) + +@endif + +
+ +
+ +
+ +

Security Whitepaper

+

How to Securely Process Festival Payments Using Standard €0.10 NFC Tags

+ +
+ +

1. Executive Summary

+

+ CatLab Drinks is a cashless point-of-sale (POS) system designed for events, festivals, and bars. It uses + NFC-enabled cards (NTAG213) as physical payment tokens that store a digital balance. Multiple POS terminals + operate concurrently, with support for offline operation when internet connectivity is unreliable. +

+

+ This whitepaper describes the security architecture and measures taken to protect the integrity of the + cashless payment ecosystem against fraud, replay attacks, and unauthorized modifications. +

+ +
+ +

2. Threat Model

+ +

2.1 Primary Threats

+ + + + + + + + + + + + +
ThreatDescriptionRisk Level
Balance forgeryAn attacker writes arbitrary credit to their NFC cardCritical
Replay attackCopying signed data from one card to anotherHigh
Key interceptionAn authenticated user extracts the signing key from the browserHigh
Rogue terminalAn unauthorized device enters the ecosystem and signs cardsHigh
Offline tamperingExploiting offline POS terminals to manipulate balancesMedium
Write interruptionPower loss during NFC write corrupts card dataMedium
+ +

2.2 Previous Vulnerability (Version 0)

+

+ The original system used a single shared symmetric HMAC-SHA256 key across all POS terminals. This key + was loaded client-side whenever any user logged into the management website, creating a critical vulnerability: + any authenticated user could intercept the key and forge card balances. +

+ +
+ +

3. Cryptographic Architecture (Version 1)

+ +

3.1 Asymmetric Key Model

+

+ Version 1 replaces the shared symmetric key with per-device ECDSA P-192 key pairs: +

+ +

+ This eliminates the shared-secret vulnerability: no single key compromise affects the entire system. +

+ +

3.2 Why ECDSA P-192?

+ + + + + + + + + + +
CriteriaECDSA P-192ECDSA P-256HMAC-SHA256
Signature size48 bytes64 bytes32 bytes
Security level96-bit128-bit256-bit
Key typeAsymmetricAsymmetricSymmetric
Client-side exposurePrivate key per-devicePrivate key per-deviceShared secret
+

+ P-192 was chosen over P-256 to minimize signature size (48 vs 64 bytes), which is important given + NTAG213's 144-byte memory constraint. The 96-bit security level is more than adequate for a drinks + credit system where the economic incentive for attacks is low. +

+ +

3.3 Key Storage

+

+ The private key is AES-encrypted using the device secret (provided by the server via the + GET /pos-api/v1/devices/current API call) and stored in the browser's localStorage. This means: +

+
    +
  1. The private key can only be decrypted after successful device authentication
  2. +
  3. The device secret never leaves the server unencrypted in the management API
  4. +
  5. If localStorage is cleared, the key pair is lost and a new one must be generated and approved
  6. +
  7. When a new public key is submitted, the server automatically resets the approval status — an administrator must re-approve the new key
  8. +
  9. On approval, the device's own public key is registered in its local verification map so it can immediately read cards it signs
  10. +
+ +
+ +

4. Card Data Integrity

+ +

4.1 Signature Scheme

+

The ECDSA P-192 signature covers:

+
signature = ECDSA_SIGN(
+    SHA-256(version_byte + device_id + card_data + card_hardware_uid),
+    device_private_key
+)
+

Fields included in the signature:

+ + +

4.2 Replay Attack Prevention

+

+ The card hardware UID is included in the signed data but not stored on the card (it's read from + the NFC hardware). This prevents an attacker from copying signed data from a high-balance card to a + low-balance card — the signature verification will fail because the hardware UIDs differ. +

+ +

4.3 Version Detection

+

Card data version is determined by the first byte of the payload:

+ + +
+ +

5. Key Management & Admin Workflow

+ +

5.1 Key Generation

+

+ Key generation is an explicit manual action — it is never automatic. The POS terminal shows a modal + requiring the user to press "Generate Credentials". This ensures operators are aware that a new key pair will + be created and requires administrator approval. +

+ +

5.2 Key Approval Flow

+
    +
  1. POS terminal generates key pair locally
  2. +
  3. Public key is uploaded to the server
  4. +
  5. Key enters "Pending" state — card operations blocked
  6. +
  7. Administrator approves the key via the admin dashboard
  8. +
  9. Terminal downloads approved keys — card operations now allowed
  10. +
+ +

5.3 Key Revocation

+

+ Administrators can instantly revoke a key if a terminal is compromised. The admin dashboard warns + that revocation is a destructive action because all cards last signed by that device will fail signature verification + and must be re-scanned at an approved terminal. +

+ +

5.4 Device Soft-Delete

+

+ Deleting a POS device soft-deletes it, preserving the public key record and signed card tracking. This ensures + cards signed by the deleted device can still be verified, and the admin can still manage the device's key. +

+ +
+ +

6. Offline Operation

+ +

6.1 Transaction Splitting

+

+ Cards store the last 5 previous transaction amounts. When a POS terminal goes offline, these stored + transactions allow the system to reconstruct missing transaction history when connectivity is restored. +

+ +

6.2 Transaction Merger

+

+ The TransactionMerger handles reconciliation of transactions received from different terminals + in potentially different order. It uses database-level locking to prevent race conditions and maintains an + "overflow" transaction to absorb balance discrepancies. +

+ +
+ +

7. Physical Security

+ +

7.1 NFC Write Protection

+

+ The nfc-socketio service applies a write password + to the NFC tags, derived from the organisation secret and card UID. While NTAG213's 4-byte password is + insufficient for cryptographic security, it prevents accidental overwrites. +

+ +

7.2 NTAG213 Memory Layout

+ + + + + + + + + + + +
ComponentSize
NTAG213 user memory144 bytes
TLV overhead3 bytes
Max NDEF message141 bytes
URI record (topup URL)~37 bytes
External record (v1 data)~104 bytes
+ +
+ +

8. Defence in Depth

+

+ The system employs multiple layers of security that must all be defeated for a successful attack: +

+
    +
  1. NFC write password — prevents casual overwrites (low security, 4 bytes)
  2. +
  3. ECDSA signature — prevents balance forgery without the private key (high security, 96-bit)
  4. +
  5. Hardware UID binding — prevents cross-card replay attacks
  6. +
  7. Admin key approval — prevents rogue terminal injection
  8. +
  9. Server reconciliation — detects anomalies after the fact
  10. +
  11. Monotonic counter — detects rollback/replay of stale card states
  12. +
+ +
+ +

9. Summary of Security Measures

+ + + + + + + + + + + + + + + + +
MeasureProtection Against
Per-device ECDSA key pairsKey interception, shared secret compromise
Card hardware UID in signatureReplay attacks across cards
Admin key approvalRogue terminals
Key revocation with impact trackingCompromised terminals
Monotonic transaction counterCard state rollback/replay
Server-side balance reconciliationUndetected balance manipulation
Maximum balance enforcementUnrealistic balance forgery
Version byte in signatureVersion downgrade attacks
NFC write passwordAccidental overwrites
Offline transaction recoveryData loss from connectivity issues
+ +
+ +
+ +
+ +
+ + + diff --git a/routes/web.php b/routes/web.php index f430f82..c25a085 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,6 +13,10 @@ Route::get('/', 'HomeController@welcome'); Route::view('/getting-started', 'getting-started'); +Route::view('/student-union-cashless', 'landing.student-union-cashless'); +Route::view('/indie-festival-payments', 'landing.indie-festival-payments'); +Route::view('/hacker-camp-nfc', 'landing.hacker-camp-nfc'); +Route::view('/whitepaper', 'whitepaper'); Route::get('/docs', 'DocumentController@swagger'); Route::get('/docs/oauth2', 'DocumentController@oauth2Redirect'); From d37461961a14d1faab4da071fd504afc7b2e77be Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 19:52:23 +0000 Subject: [PATCH 3/4] Use literal UTF-8 characters in JSON-LD instead of Unicode escapes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace \u20ac, \u2014, \u2019 escapes with literal €, —, ' characters in JSON-LD FAQ schema blocks for consistency with visible page content. Agent-Logs-Url: https://github.com/CatLabInteractive/catlab-drinks/sessions/44091289-1fe9-4e4e-9416-a93a55acfb4d Co-authored-by: daedeloth <1168599+daedeloth@users.noreply.github.com> --- resources/views/landing/hacker-camp-nfc.blade.php | 4 ++-- resources/views/landing/indie-festival-payments.blade.php | 2 +- resources/views/landing/student-union-cashless.blade.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/views/landing/hacker-camp-nfc.blade.php b/resources/views/landing/hacker-camp-nfc.blade.php index 34533b2..e62ae46 100644 --- a/resources/views/landing/hacker-camp-nfc.blade.php +++ b/resources/views/landing/hacker-camp-nfc.blade.php @@ -24,7 +24,7 @@ "name": "Can I audit the full source code of the payment system?", "acceptedAnswer": { "@type": "Answer", - "text": "Yes. CatLab Drinks is released under the GNU GPL v3 license. The entire codebase \u2014 backend, POS frontend, NFC card logic, and cryptographic signing \u2014 is publicly available on GitHub for inspection, modification, and redistribution." + "text": "Yes. CatLab Drinks is released under the GNU GPL v3 license. The entire codebase — backend, POS frontend, NFC card logic, and cryptographic signing — is publicly available on GitHub for inspection, modification, and redistribution." } }, { @@ -32,7 +32,7 @@ "name": "What cryptography does the NFC card system use?", "acceptedAnswer": { "@type": "Answer", - "text": "Each POS terminal generates an ECDSA P-192 key pair. Card data (balance, transaction count, timestamps, and the hardware UID) is signed with the terminal\u2019s private key. Other terminals verify signatures using approved public keys distributed by the server. P-192 was chosen to fit signatures within the 144-byte NTAG213 memory constraint." + "text": "Each POS terminal generates an ECDSA P-192 key pair. Card data (balance, transaction count, timestamps, and the hardware UID) is signed with the terminal's private key. Other terminals verify signatures using approved public keys distributed by the server. P-192 was chosen to fit signatures within the 144-byte NTAG213 memory constraint." } }, { diff --git a/resources/views/landing/indie-festival-payments.blade.php b/resources/views/landing/indie-festival-payments.blade.php index 14c0af2..bbf4891 100644 --- a/resources/views/landing/indie-festival-payments.blade.php +++ b/resources/views/landing/indie-festival-payments.blade.php @@ -24,7 +24,7 @@ "name": "Can I run a cashless festival without expensive vendor contracts?", "acceptedAnswer": { "@type": "Answer", - "text": "Yes. CatLab Drinks is free, open-source software. You deploy it on your own server and use standard NTAG213 NFC tags that cost as little as \u20ac0.10 each. There are no licensing fees, no per-transaction charges, and no mandatory hardware bundles." + "text": "Yes. CatLab Drinks is free, open-source software. You deploy it on your own server and use standard NTAG213 NFC tags that cost as little as €0.10 each. There are no licensing fees, no per-transaction charges, and no mandatory hardware bundles." } }, { diff --git a/resources/views/landing/student-union-cashless.blade.php b/resources/views/landing/student-union-cashless.blade.php index ad77e36..82ab69f 100644 --- a/resources/views/landing/student-union-cashless.blade.php +++ b/resources/views/landing/student-union-cashless.blade.php @@ -24,7 +24,7 @@ "name": "How much does it cost to set up a cashless system for a student event?", "acceptedAnswer": { "@type": "Answer", - "text": "CatLab Drinks is free and open-source software. The only cost is the NFC tags themselves, which start at around \u20ac0.10 each. You can use any Android phone or tablet you already own as a POS terminal." + "text": "CatLab Drinks is free and open-source software. The only cost is the NFC tags themselves, which start at around €0.10 each. You can use any Android phone or tablet you already own as a POS terminal." } }, { @@ -32,7 +32,7 @@ "name": "Can volunteers run the system without technical training?", "acceptedAnswer": { "@type": "Answer", - "text": "Yes. The POS interface is designed to be simple \u2014 volunteers tap menu items, confirm the order, and optionally scan an NFC card. Pairing a device takes under two minutes with the QR code flow." + "text": "Yes. The POS interface is designed to be simple — volunteers tap menu items, confirm the order, and optionally scan an NFC card. Pairing a device takes under two minutes with the QR code flow." } }, { From 9cacf867c362c93989f5f82992426442054e39aa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 20 Apr 2026 09:33:14 +0000 Subject: [PATCH 4/4] Add translations for SEO meta tags and FAQ to nl, fr, de, es Translate meta_description, meta_keywords, faq_title, and all FAQ question/answer pairs (faq_1_q through faq_5_a) into Dutch, French, German, and Spanish. Agent-Logs-Url: https://github.com/CatLabInteractive/catlab-drinks/sessions/416ebc31-323c-47e6-a729-c82fa5e00a97 Co-authored-by: daedeloth <1168599+daedeloth@users.noreply.github.com> --- resources/lang/de/welcome.php | 15 +++++++++++++++ resources/lang/es/welcome.php | 15 +++++++++++++++ resources/lang/fr/welcome.php | 15 +++++++++++++++ resources/lang/nl/welcome.php | 15 +++++++++++++++ 4 files changed, 60 insertions(+) diff --git a/resources/lang/de/welcome.php b/resources/lang/de/welcome.php index 3ab5569..747f543 100644 --- a/resources/lang/de/welcome.php +++ b/resources/lang/de/welcome.php @@ -53,4 +53,19 @@ 'license_warranty' => 'DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE GEWÄHRLEISTUNG, WEDER AUSDRÜCKLICH NOCH STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNGEN DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG.', 'language' => 'Sprache', + + 'meta_description' => 'CatLab Drinks ist ein quelloffenes, hardwareunabhängiges bargeldloses Zahlungssystem für Veranstaltungen und Festivals. Verwenden Sie günstige NFC-Tags, hosten Sie auf Ihrem eigenen Server und betreiben Sie eine komplette DIY-Zahlungsinfrastruktur für Festivals.', + 'meta_keywords' => 'hardwareunabhängiges bargeldloses Zahlungssystem, günstiges NFC-Aufladesystem für Festivals, DIY-Festival-Zahlungsinfrastruktur, Open-Source-Kassensystem, NFC-Zahlung, bargeldlose Veranstaltung, Festivalzahlung, selbst gehostete Bar-Automatisierung', + + 'faq_title' => 'Häufig gestellte Fragen', + 'faq_1_q' => 'Kann ich Standard-NFC-Tags für ein Festival-Zahlungssystem verwenden?', + 'faq_1_a' => 'Ja. CatLab Drinks funktioniert mit Standard-NTAG213-NFC-Tags, die ab nur 0,10 € pro Stück erhältlich sind. Es sind keine teuren proprietären Armbänder oder herstellergebundene Hardware erforderlich.', + 'faq_2_q' => 'Welche Hardware brauche ich für eine bargeldlose Veranstaltung?', + 'faq_2_a' => 'Jedes Android-Telefon oder -Tablet mit NFC kann als Kassenterminal dienen. Für Desktop-Setups funktioniert ein USB-NFC-Leser wie der ACR122U mit unserem Begleitdienst. Das System ist vollständig hardwareunabhängig.', + 'faq_3_q' => 'Ist CatLab Drinks für kleine Veranstaltungen mit knappem Budget geeignet?', + 'faq_3_a' => 'Absolut. Die Software ist kostenlos und quelloffen, NFC-Tags sind extrem günstig und Sie können vorhandene Android-Geräte als Terminals verwenden. Das macht es ideal für Fachschaften, Gemeinschaftsveranstaltungen und kleine Festivals.', + 'faq_4_q' => 'Wie funktioniert die NFC-Kartensicherheit?', + 'faq_4_a' => 'Jedes Kassenterminal verfügt über ein eigenes kryptografisches ECDSA-Schlüsselpaar. Kartendaten werden mit dem privaten Schlüssel des Terminals signiert und mit genehmigten öffentlichen Schlüsseln verifiziert. Die Hardware-UID der Karte wird in die Signatur aufgenommen, um Klonen zu verhindern.', + 'faq_5_q' => 'Funktioniert das System offline?', + 'faq_5_a' => 'Ja. Da das Guthaben direkt auf der NFC-Karte gespeichert wird, können Transaktionen auch ohne Internetverbindung verarbeitet werden. Die Daten werden automatisch synchronisiert, wenn die Verbindung wiederhergestellt ist.', ]; diff --git a/resources/lang/es/welcome.php b/resources/lang/es/welcome.php index 4ba076c..f4bfa73 100644 --- a/resources/lang/es/welcome.php +++ b/resources/lang/es/welcome.php @@ -53,4 +53,19 @@ 'license_warranty' => 'EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITÁNDOSE A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN.', 'language' => 'Idioma', + + 'meta_description' => 'CatLab Drinks es un sistema de pago sin efectivo de código abierto e independiente del hardware para eventos y festivales. Use etiquetas NFC económicas, aloje en su propio servidor y ejecute una infraestructura de pago completa para festivales.', + 'meta_keywords' => 'sistema de pago sin efectivo independiente del hardware, sistema de recarga NFC económico para festivales, infraestructura de pago DIY para festivales, punto de venta open-source, pago NFC, evento cashless, pago de festival, automatización de bar autoalojada', + + 'faq_title' => 'Preguntas frecuentes', + 'faq_1_q' => '¿Puedo usar etiquetas NFC estándar para un sistema de pago de festival?', + 'faq_1_a' => 'Sí. CatLab Drinks funciona con etiquetas NFC NTAG213 estándar que cuestan tan solo 0,10 € cada una. No se necesitan pulseras propietarias caras ni hardware dependiente de un proveedor.', + 'faq_2_q' => '¿Qué hardware necesito para organizar un evento cashless?', + 'faq_2_a' => 'Cualquier teléfono o tableta Android con NFC puede funcionar como terminal de punto de venta. Para configuraciones de escritorio, un lector NFC USB como el ACR122U funciona con nuestro servicio complementario. El sistema es totalmente independiente del hardware.', + 'faq_3_q' => '¿Es CatLab Drinks adecuado para eventos pequeños con presupuesto ajustado?', + 'faq_3_a' => 'Por supuesto. El software es gratuito y de código abierto, las etiquetas NFC son extremadamente económicas y puede usar dispositivos Android existentes como terminales. Esto lo hace ideal para asociaciones estudiantiles, eventos comunitarios y festivales pequeños.', + 'faq_4_q' => '¿Cómo funciona la seguridad de las tarjetas NFC?', + 'faq_4_a' => 'Cada terminal de punto de venta tiene su propio par de claves criptográficas ECDSA. Los datos de la tarjeta se firman con la clave privada del terminal y se verifican con claves públicas aprobadas. El UID de hardware de la tarjeta se incluye en la firma para evitar la clonación.', + 'faq_5_q' => '¿El sistema funciona sin conexión?', + 'faq_5_a' => 'Sí. Como el saldo se almacena directamente en la tarjeta NFC, las transacciones pueden procesarse incluso sin conexión a Internet. Los datos se sincronizan automáticamente cuando se restablece la conectividad.', ]; diff --git a/resources/lang/fr/welcome.php b/resources/lang/fr/welcome.php index 4939348..dcc7c8b 100644 --- a/resources/lang/fr/welcome.php +++ b/resources/lang/fr/welcome.php @@ -53,4 +53,19 @@ 'license_warranty' => 'LE LOGICIEL EST FOURNI "TEL QUEL", SANS GARANTIE D\'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS S\'Y LIMITER AUX GARANTIES DE QUALITÉ MARCHANDE, D\'ADÉQUATION À UN USAGE PARTICULIER ET DE NON-CONTREFAÇON.', 'language' => 'Langue', + + 'meta_description' => 'CatLab Drinks est un système de paiement sans contact open-source et indépendant du matériel pour événements et festivals. Utilisez des tags NFC bon marché, hébergez sur votre propre serveur et déployez une infrastructure de paiement festival complète.', + 'meta_keywords' => 'système de paiement sans contact indépendant du matériel, système de recharge NFC économique pour festivals, infrastructure de paiement festival DIY, point de vente open-source, paiement NFC, événement cashless, paiement festival, automatisation de bar auto-hébergée', + + 'faq_title' => 'Questions fréquemment posées', + 'faq_1_q' => 'Puis-je utiliser des tags NFC standard pour un système de paiement de festival ?', + 'faq_1_a' => 'Oui. CatLab Drinks fonctionne avec des tags NFC NTAG213 standard qui ne coûtent que 0,10 € pièce. Il n\'est pas nécessaire d\'acheter des bracelets propriétaires coûteux ou du matériel verrouillé par un fournisseur.', + 'faq_2_q' => 'Quel matériel faut-il pour organiser un événement cashless ?', + 'faq_2_a' => 'N\'importe quel téléphone ou tablette Android avec NFC peut servir de terminal de caisse. Pour les configurations de bureau, un lecteur NFC USB tel que l\'ACR122U fonctionne avec notre service compagnon. Le système est totalement indépendant du matériel.', + 'faq_3_q' => 'CatLab Drinks convient-il aux petits événements avec un budget limité ?', + 'faq_3_a' => 'Absolument. Le logiciel est gratuit et open source, les tags NFC sont extrêmement bon marché et vous pouvez utiliser des appareils Android existants comme terminaux. C\'est idéal pour les associations étudiantes, les événements communautaires et les petits festivals.', + 'faq_4_q' => 'Comment fonctionne la sécurité des cartes NFC ?', + 'faq_4_a' => 'Chaque terminal de caisse possède sa propre paire de clés cryptographiques ECDSA. Les données de la carte sont signées avec la clé privée du terminal et vérifiées à l\'aide de clés publiques approuvées. L\'UID matériel de la carte est inclus dans la signature pour empêcher le clonage.', + 'faq_5_q' => 'Le système fonctionne-t-il hors ligne ?', + 'faq_5_a' => 'Oui. Comme le solde est stocké directement sur la carte NFC, les transactions peuvent être traitées même sans connexion Internet. Les données se synchronisent automatiquement lorsque la connectivité est rétablie.', ]; diff --git a/resources/lang/nl/welcome.php b/resources/lang/nl/welcome.php index 99d1b80..dfc905c 100644 --- a/resources/lang/nl/welcome.php +++ b/resources/lang/nl/welcome.php @@ -53,4 +53,19 @@ 'license_warranty' => 'DE SOFTWARE WORDT GELEVERD "ZOALS ZE IS", ZONDER ENIGE GARANTIE, EXPLICIET OF IMPLICIET, INCLUSIEF MAAR NIET BEPERKT TOT DE GARANTIES VAN VERKOOPBAARHEID, GESCHIKTHEID VOOR EEN BEPAALD DOEL EN NIET-INBREUK.', 'language' => 'Taal', + + 'meta_description' => 'CatLab Drinks is een open-source, hardware-onafhankelijk cashless betaalsysteem voor evenementen en festivals. Gebruik goedkope NFC-tags, host op je eigen server en bouw een complete doe-het-zelf betaalinfrastructuur voor festivals.', + 'meta_keywords' => 'hardware-onafhankelijk cashless betaalsysteem, goedkoop NFC-oplaadsysteem voor festivals, doe-het-zelf festival betaalinfrastructuur, open-source kassasysteem, NFC-betaling, cashless evenement, festivalbetaling, zelf-gehost barautomatisering', + + 'faq_title' => 'Veelgestelde vragen', + 'faq_1_q' => 'Kan ik standaard NFC-tags gebruiken voor een festivalbetaalsysteem?', + 'faq_1_a' => 'Ja. CatLab Drinks werkt met standaard NTAG213 NFC-tags die slechts €0,10 per stuk kosten. Er zijn geen dure merkgebonden polsbandjes of leveranciersgebonden hardware nodig.', + 'faq_2_q' => 'Welke hardware heb ik nodig om een cashless evenement te organiseren?', + 'faq_2_a' => 'Elke Android-telefoon of -tablet met NFC kan als kassaterminal dienen. Voor desktopopstellingen werkt een USB NFC-lezer zoals de ACR122U met onze begeleidingsservice. Het systeem is volledig hardware-onafhankelijk.', + 'faq_3_q' => 'Is CatLab Drinks geschikt voor kleine evenementen met een beperkt budget?', + 'faq_3_a' => 'Absoluut. De software is gratis en open source, NFC-tags zijn extreem goedkoop en je kunt bestaande Android-apparaten als terminals gebruiken. Dit maakt het ideaal voor studentenverenigingen, buurtactiviteiten en kleine festivals.', + 'faq_4_q' => 'Hoe werkt de NFC-kaartbeveiliging?', + 'faq_4_a' => 'Elke kassaterminal heeft een eigen ECDSA cryptografisch sleutelpaar. Kaartgegevens worden ondertekend met de privésleutel van de terminal en geverifieerd met goedgekeurde openbare sleutels. De hardware-UID van de kaart wordt opgenomen in de handtekening om klonen te voorkomen.', + 'faq_5_q' => 'Werkt het systeem offline?', + 'faq_5_a' => 'Ja. Omdat het saldo direct op de NFC-kaart wordt opgeslagen, kunnen transacties zelfs zonder internetverbinding worden verwerkt. Gegevens worden automatisch gesynchroniseerd wanneer de verbinding hersteld is.', ];