A modern, minimalistic RFID attendance dashboard with real-time updates, search functionality, and dark/light theme support.
- π Real-time Updates - Auto-refreshes every 1 second
- π Advanced Search - Search by RA number, lab, or date range
- π Sound Notifications - Audio alerts for new entries
- π Dark/Light Theme - Toggle between themes with persistence
- π Lab Filtering - Filter by specific labs
- π± Responsive Design - Works on desktop and mobile
- π₯ CSV Export - Download attendance data
- β‘ Minimalistic Design - Clean, professional interface
- Frontend: HTML5, CSS3, JavaScript (ES6+)
- Backend: Google Apps Script + Google Sheets
- Styling: Custom CSS with minimalistic design
- Deployment: Vercel
- Create a new Google Apps Script project
- Replace the default code with your attendance tracking script
- Deploy as web app with execute permissions
- Copy the execution URL
Update the APPS_SCRIPT_EXEC_URL in script.js:
const APPS_SCRIPT_EXEC_URL = "YOUR_GOOGLE_APPS_SCRIPT_URL";-
Install Vercel CLI:
npm install -g vercel
-
Login to Vercel:
vercel login
-
Deploy:
vercel
-
Follow the prompts:
- Set up and deploy?
Y - Which scope? Choose your account
- Link to existing project?
N - Project name:
rfid-attendance-dashboard - Directory:
.(current directory)
- Set up and deploy?
-
Create GitHub Repository:
git init git add . git commit -m "Initial commit" git remote add origin https://github.com/yourusername/rfid-attendance-dashboard.git git push -u origin main
-
Connect to Vercel:
- Go to vercel.com
- Click "New Project"
- Import your GitHub repository
- Deploy automatically
- Go to vercel.com
- Drag and drop your project folder
- Deploy instantly
If you need to keep your Google Apps Script URL private, you can use environment variables:
-
In Vercel Dashboard:
- Go to your project settings
- Add environment variable:
GOOGLE_APPS_SCRIPT_URL
-
Update script.js:
const APPS_SCRIPT_EXEC_URL = process.env.GOOGLE_APPS_SCRIPT_URL || "YOUR_FALLBACK_URL";
- In Vercel Dashboard:
- Go to your project settings
- Click "Domains"
- Add your custom domain
- Update DNS records as instructed
# Start local server
python3 -m http.server 8000
# Or with Node.js
npx serve .
# Open in browser
open http://localhost:8000rfid-attendance-dashboard/
βββ index.html # Main HTML file
βββ script.js # JavaScript functionality
βββ style.css # CSS styles
βββ package.json # Project configuration
βββ vercel.json # Vercel deployment config
βββ .gitignore # Git ignore rules
βββ README.md # This file
Your Google Apps Script should handle these endpoints:
GET /exec- Returns attendance data as JSONGET /exec?download=1- Returns CSV dataGET /exec?action=clear&token=qwerty- Clears all data
Expected JSON response format:
[
{
"epoch": 1761603244,
"time": "1899-12-29T22:22:54.000Z",
"Lab": "Lab_503",
"ra": 3012245,
"last3": 245
}
]- Real-time search by RA number, last 3 digits, or lab name
- Date range filtering with from/to date pickers
- Lab-specific filtering with dropdown selection
- Clear filters functionality
- Web Audio API implementation
- Automatic playback for new entries
- Graceful fallback if audio not supported
- System preference detection
- Manual toggle with sun/moon icons
- Persistent storage of theme choice
- Smooth transitions between themes
-
CORS Errors:
- Ensure Google Apps Script is deployed with proper permissions
- Check that the URL is correct
-
No Data Loading:
- Verify Google Apps Script URL
- Check browser console for errors
- Ensure Google Sheets has data
-
Sound Not Working:
- Check browser audio permissions
- Try clicking on the page first to enable audio context
Enable debug logging by opening browser console (F12) to see:
- Search filter operations
- Data fetching status
- Theme changes
- Error messages
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
For issues and questions:
- Create an issue on GitHub
- Check the troubleshooting section
- Review browser console for errors
Deployed on Vercel π