A smart, privacy-first attendance tracker for students β built with vanilla JS, powered by LocalStorage, and installable as a PWA.
Live Demo: mayurkshirsagar-web.github.io/AttendanceTracker.io
Repository: github.com/Mayurkshirsagar-web/AttendanceTracker.io
- Overview
- Features
- Tech Stack
- Project Structure
- How It Works
- Getting Started
- Usage Guide
- PWA Support
- Privacy
- Screenshots
- Contributing
- Author
AttendanceTracker.io is a client-side web application designed to help students track their academic attendance across subjects and semesters. Instead of manually calculating percentages, the app automates it all β just set up your timetable once, log your daily attendance, and let the tracker handle the math.
No login. No server. No data leaving your browser.
- Custom Timetable Setup β Add subjects for each day of the week (MonβSat) with a simple input-and-add flow
- Semester Date Range β Define a start and end date for your semester; the tracker uses this to calculate total possible classes
- Attendance Criteria β Set a minimum attendance percentage target (e.g. 75%) to track whether you're meeting the requirement
- Attendance Chart Page β Visual per-subject attendance cards showing present/absent counts and percentage progress
- Daily Attendance Logging β Mark attendance for each subject at the end of each day
- LocalStorage Persistence β All data is saved locally; your setup survives page refreshes and browser restarts
- PWA Installable β Can be installed on mobile or desktop as a standalone app
- Loader Screen β Smooth loading animation on startup
- Reset Functionality β One-click full data reset with confirmation guard
- Responsive Design β Works across mobile, tablet, and desktop
| Layer | Technology |
|---|---|
| Markup | HTML5 |
| Styling | CSS3 (modular, multi-file) |
| Logic | Vanilla JavaScript (ES Modules) |
| Date Handling | Day.js |
| Fonts | Google Fonts β Montserrat, Roboto |
| Storage | Browser LocalStorage |
| Offline Support | Service Worker (sw.js) |
| PWA | Web App Manifest (manifest.json) |
| Hosting | GitHub Pages |
No build tools, no npm, no frameworks. Pure browser-native stack.
AttendanceTracker.io/
β
βββ index.html # Main setup page (timetable + criteria + dates)
βββ attendance-chart.html # Attendance visualization page
βββ manifest.json # PWA manifest
βββ sw.js # Service Worker for offline caching
β
βββ script/
β βββ time-table.js # UI logic for timetable setup page
β βββ time-table-at.js # UI logic for attendance chart page
β
βββ data/
β βββ time-table.js # Timetable data layer (LocalStorage read/write)
β
βββ data-at/
β βββ subject.js # Subject attendance data layer
β
βββ styles/
β βββ general.css # Global/shared styles
β βββ main-styles/
β βββ header.css
β βββ footer.css
β βββ sidebar.css
β βββ main.css # Timetable page styles
β βββ main-styles-at/
β βββ main.css # Attendance chart page styles
β
βββ Images/ # App icons, logos, UI assets
βββ favicon_io/ # Favicon set (all sizes)
The app follows a straightforward 3-step flow:
1. Setup (index.html)
- User adds subjects for each day of the week
- Sets semester start and end dates
- Sets an attendance criteria percentage (e.g. 75%)
- All data is persisted to LocalStorage via the
data/time-table.jsmodule
2. Daily Logging (attendance-chart.html)
- At the end of each day, the user logs which subjects they attended
- The app reads the day's timetable and presents the relevant subjects
- Present/absent choices are saved back to LocalStorage via
data-at/subject.js
3. Analytics
- The attendance chart page reads all stored data and renders per-subject cards
- Each card shows: total classes, attended count, and current attendance percentage
- Criteria threshold is visually indicated so students know where they stand
Since this is a pure static site with no build step, setup is dead simple.
git clone https://github.com/Mayurkshirsagar-web/AttendanceTracker.io.git
cd AttendanceTracker.ioThen open index.html directly in your browser.
β οΈ Note: ES Modules (type="module") require a server context to work correctly β opening viafile://may block module imports in some browsers.
If you have VS Code, install the Live Server extension and click "Go Live".
Just go to: mayurkshirsagar-web.github.io/AttendanceTracker.io
No installation needed.
- On the main page, you'll see a card for each day (MondayβSaturday)
- Type a subject name in the input field and click Add (or press Enter)
- Repeat for every subject on that day
- Subject names must be consistent β the app uses exact string matching
- Under the timetable, set your Begin Tracking On date (must be today or future)
- Set your Stop Tracking On date (must be after the start date)
- Click Confirm on each to save
- Enter your minimum required attendance percentage (e.g.
75) - Click Confirm to save it
- At the end of each academic day, click Attendance Chart in the header
- Mark each subject as Present or Absent
- Your running percentages update automatically
- The Attendance Chart page shows a card per subject
- Each card displays your current percentage vs. your target criteria
- Navigate back to the timetable page anytime via the Time Table button
- Click the Reset button in the header to wipe all data
- A confirmation dialog prevents accidental resets
AttendanceTracker.io is a Progressive Web App. You can install it on your device for an app-like experience:
- Android/Chrome β tap the "Add to Home Screen" prompt or use the browser menu
- iOS/Safari β tap Share β Add to Home Screen
- Desktop/Chrome β click the install icon in the address bar
The Service Worker (sw.js) caches all static assets for offline access after the first visit.
Dev tip: If you're running this locally and changes aren't reflecting, go to DevTools β Application β Service Workers β check "Update on reload" or hit Unregister, then hard reload (
Ctrl+Shift+R).
All data is stored exclusively in your browser's LocalStorage. Nothing is sent to any server, third party, or external API. Clearing your browser data or using Incognito mode will result in data loss.
No accounts. No tracking. No telemetry.
| Page | Description |
|---|---|
index.html |
Timetable setup, date range config, criteria input |
attendance-chart.html |
Subject-wise attendance cards and progress |
This project is open source. Contributions, bug reports, and feedback are welcome.
| For bugs or suggestions, |
|---|
| email: mayurkshirsagar2510@gmail.com |
Mayur Namdev Kshirsagar
First-year CSE student at NIT Durgapur
Built this as a hands-on project to practice real-world web development and solve a genuine student problem.
- GitHub: github.com/Mayurkshirsagar-web
- Email: mayurkshirsagar2510@gmail.com
Built with β€οΈ by a CSE Student at NIT Durgapur


