A complete NFC-based payment system for managing student snack bar purchases. Tap contactless cards for instant payments with real-time dashboard monitoring.
- NFC Card Payments - Fast, cashless transactions with contactless cards
- Student Account Management - Track balances, cards, and transaction history
- Modern Web Dashboard - Built with Next.js, TypeScript, and Tailwind CSS
- CLI Tools - Quick command-line utilities for POS, top-ups, and enrollment
- Real-time Updates - Live tap notifications in the web interface
- Dual Reader Support - Run multiple NFC readers simultaneously
Built for Raspberry Pi 4 Model B running Raspberry Pi OS (64-bit)
Tested on:
- Raspberry Pi 4 Model B (8GB RAM recommended)
- Raspberry Pi OS (Bookworm or later)
- Debian-based Linux distributions
- Arch Linux
python init_db.pycd web-next
pnpm installDevelopment mode:
pnpm devProduction mode:
pnpm build
pnpm startOpen http://localhost:3000 and create your admin account.
- Set up authentication - See docs/authentication.md
- Configure NFC readers - See docs/nfc-setup.md
- Deploy to production - See docs/deployment.md
Quick operations from the command line:
pos.py- Process payments via NFC card tapstopup.py- Add money to student accountsenroll.py- Register new students and link NFC cardstap-broadcaster.py- Broadcast NFC taps to the web interface in real-time
Example:
python pos.py 6.5 # Charge ¥6.5 per tap- Getting Started - Installation and prerequisites
- Deployment Guide - Production setup with Docker, systemd, and SSL
- Security Guide - Best practices for securing your system
- Authentication - Set up Better Auth for the web interface
- NFC Setup - Configure PN532 card readers
- Database Guide - Schema details and migrations
- User Guide - Day-to-day operations
- Scripts Reference - Utility scripts and tools
- Development Guide - Architecture and extending the system
- UI Components Guide - Custom components and animations
- Testing Guide - Running tests
- Troubleshooting - Common issues and solutions
- Changelog - Version history and updates
If you find this project helpful and would like to support its development, consider making a donation:
Bitcoin (BTC):
bc1pyv54eqxuanqgv3cm2yjl37xjxlavnh7fcfu9d3yg983uzp4qazcs5xgsz2
This project is licensed under the MIT License. See the LICENSE file for details.