festBracelet is an innovative project that reverse-engineers the functionality of NFC bracelets used in festivals and events. It creates a secure, scalable system for managing NFC-based user data and payments using MIFARE 1K-enabled NFC bracelets.
The system uses a combination of:
- Web Server for managing front-end interactions.
- Python Backends for handling NFC checkpoint operations.
Even though the system has multiple components, it's resource-efficient and can run on Raspberry Pi 3 devices. Each checkpoint works independently with an NFC sensor, allowing for secure and scalable communication with a centralized database.
-
Real-time User Data Insights
View detailed information about users when their NFC bracelet is scanned. -
Modify User Balance
Add or subtract balance from a user's account with a simple and intuitive interface. -
Register New Users
Link a user's name and ticket ID to their NFC bracelet, setting the stage for future developments such as mobile top-ups.
For each checkpoint, you need:
- A Raspberry Pi 3 (or better).
- An NFC ACS ACR122 sensor.
- Internet connection for syncing with the centralized database.
git clone https://github.com/rocristoi/festBracelet.git
cd festBracelet
- Install Python Requirements
-
Ensure Python 3 is installed on your system, then run:
pip install -r requirements.txt
-
- Create the .env File
-
In the
festBracelet
root directory, create a.env
file with the following format:DB_HOST=xxx DB_PORT=xxx DB_USER=xxx DB_PASS=xxx DB_NAME=xxx
-
- Run the Backend Server
- Start the backend server by executing:
python backend.py
- Start the backend server by executing:
-
Navigate to the Front-End Directory
bash cd festBraceletWeb
-
Install Dependencies
bash npm install
-
Edit the
constants.js
File -
Build the Website
- Build the static assets by running:
npm run build
- Build the static assets by running:
-
Host the Static Files
- Use Apache2 or Nginx to serve the files from the dist/ directory.
- Connect Your NFC Sensor
- Attach the ACS122 NFC Sensor to your Raspberry Pi / Hosting Device
- Start the Backend Server
- In the
festBracelet
root directory, run:python backend.py
- Host the Front-End
- Serve the static files from dist/ using Apache2 or Nginx.
Once everything is set up, your checkpoint is ready to scan bracelets, modify user balances, and register new users.
- Create a user interface for solo top-ups via mobile phones.
- Ignore empty tags during NFC readings.
- Implement additional error-handling features for robustness.
Feel free to fork the repository, submit issues, and contribute to the project on GitHub :D
Developed with ❤️ by @rocristoi. Contributions are welcome!