TapTag is a full-stack, real-time RFID-based attendance management system built with ESP32, Flutter, and Express.js. Designed for seamless wireless authentication, analytics, and centralized logs using WebSockets and MongoDB.
Table of contents
Open Table of contents
Actions
Features
- RFID-Based Authentication: Register and log attendance using RFID cards and tags.
- ESP32 + RC522: Microcontroller reads UID and encrypts using AES-256 before broadcasting over Wi-Fi.
- WebSocket Integration: Real-time encrypted UID transmission to frontend app.
- Wi-Fi Hotspot Mode: Reader runs a self-hosted access point.
- Flutter App: Displays attendance logs, user data, and analytics.
- Backend in Express.js: Built using TypeScript, connected to MongoDB Atlas via Mongoose.
- RESTful API & WebSocket: Secured with rate limiting and served over Vercel with HTTPS.
Project Structure
arduino/
- ESP32 firmware with RFID, AES encryption, and WebSocket transmission.flutter/
- Cross-platform mobile and web app for admin view.express/
- RESTful API with JWT auth, user, tag, and attendance routes.
Hardware Requirements
- ESP32 Dev Board
- RFID-RC522 Module
- RFID Cards/Tags
- 5V Power Supply
- Jumper Wires, Optional PCB
Software Requirements
- Arduino IDE (with ESP32 board support)
- Node.js & npm
- Flutter SDK
- MongoDB Atlas
- Postman (API testing)
Wiring Diagram
RFID RC522 Pin | ESP32 Pin |
---|---|
SDA (SS) | D5 |
SCK | D18 |
MOSI | D23 |
MISO | D19 |
IRQ | Not used |
GND | GND |
RST | D22 |
3.3V | 3.3V |
Setup & Installation
ESP32 Firmware
- Install required libraries:
WiFi
,WebSocketsServer
,MFRC522
,AESLib
,ArduinoJson
. - Upload
.ino
firmware using Arduino IDE. - Configure Wi-Fi SSID and password or run in AP mode.
- Firmware encrypts UID and broadcasts it via WebSocket on
port 81
.
Express Backend
cd express
npm install
# Set up .env with MONGODB_URI and JWT_SECRET
npm run dev
Hosted live at: https://api.taptag.s-m-quadri.me
Flutter App
cd flutter
flutter pub get
flutter run
Currently available for Web and Windows. Android version in development.
Backend & API
- Base URL:
https://api.taptag.s-m-quadri.me
- WebSocket Local URL:
ws://192.168.4.1:81
- Full Postman Docs: TapTag API Docs
API Endpoints
POST /auth/register
- Register new userPOST /auth/login
- JWT-based login- CRUD for
/user
,/reader
,/tag
,/attendance
Security & Rate Limiting
- TLS via Let’s Encrypt
- Rate limit: 15 req/min (general), 6 req/2min (auth)
- AES-256 encryption for UID transfer
Contributors & Acknowledgements
Finance & Presentation
- Pawan Ramesh (MT24F11F001)
- Yashashree S. Sawargaonkar (MT24F11F004)
- Shubham Madane (MT24F05F007)
Full Stack Development
- Syed Minnatullah Quadri (MT24F05F001)
Guide
- Dr. Sushama Agrawal, Associate Professor, E&TC Department, GCOE, Sambhajinagar
For questions, contact: dev.smq@gmail.com