atd-cli
v1.0.14
Published
Automated Zoom Meeting Registration CLI for Java Institute students with attendance monitoring, portal auto-login, quick access to assessments, and smart lecture filtering
Downloads
1,532
Maintainers
Readme
ATD CLI - Automated Attendance & Meeting Registration
🚀 A powerful command-line tool for Java Institute students to automatically register for Zoom meetings and view their daily schedules.
Features
✅ Automatic Zoom meeting registration - Register for meetings with a single command
✅ Smart lecture filtering - Automatically skips cancelled lectures
✅ Auto-extracted Student ID - No manual Student ID entry required
✅ Secure password input - Hidden password entry for safety
✅ Attendance monitoring - Check and monitor online attendance status continuously
✅ Desktop notifications - Get alerted with sound when attendance becomes active
✅ Automated portal login - One-click login to student portal with saved credentials
✅ Quick access to assessments - Auto-login and navigate directly to assessments page
✅ View daily lecture schedules - Check your timetable without registering
✅ Multiple date formats - Use today, tomorrow, specific dates, or relative dates
✅ Dry-run mode - Preview registration without actually registering
✅ JSON output - Perfect for scripting and automation
✅ Interactive configuration - Easy setup with guided prompts
✅ Colorful terminal output - Beautiful CLI interface
✅ Comprehensive logging - Track all operations with winston
✅ Error handling - Robust error handling and recovery
Installation
Global Installation (Recommended)
Install the CLI tool globally to use it from anywhere:
Note: On Windows, run your terminal (Command Prompt or PowerShell) as Administrator before running this command to avoid permission issues.
npm install -g atd-cliLocal Installation
For project-specific use:
npm install atd-cli
npx atdFrom Source
If you want to install from this repository:
git clone https://github.com/maleesha-pramud/attendance_mark_v2.git
cd attendance_mark_v2/automation
npm install
npm install -g .Quick Start
After installation, run the tool for the first time:
atdYou'll be prompted to enter your credentials:
- First Name
- Last Name
- NIC Number (for portal login)
- Contact Number
- Portal Password (hidden input)
Note: Your Student ID will be automatically extracted from the portal on first setup.
These credentials are stored locally in a .env file and never shared.
Usage
View Today's Schedule
atd scheduleView Tomorrow's Schedule
atd schedule --date tomorrowRegister for Today's Meetings
atd register
# or simply
atdRegister for Tomorrow's Meetings
atd register --date tomorrowPreview Registration (Dry Run)
atd register --dry-runView Specific Date
atd schedule --date 2025-12-01
atd schedule --date +3 # 3 days from now
atd schedule --date -2 # 2 days agoConfiguration Management
# Show configuration file location
atd config --path
# Show current configuration (masked sensitive data)
atd config --show
# Reset configuration (re-enter all values)
atd config --reset
# Delete all configuration files
atd config --cleanGet JSON Output (for scripting)
atd schedule --json
atd register --jsonAccess Student Portal
Open the student portal dashboard:
atd portal
# or using the short alias
atd p
# or explicitly
atd p dashboardOpen the assessments page:
atd p assessments
# or using the short alias
atd p aFilter assessments by text (highlights and navigates through matches):
atd p assessments -f "web"
atd p a -f "web"
atd p a --filter "Programming"All portal commands automatically:
- Navigate to the login page
- Enter your NIC number and password
- Click the login button
- Navigate to the requested page
- Keep browser open for you to use
Date Format Options
The tool supports multiple date formats:
today- Today's date (default)tomorrow- Tomorrow's dateyesterday- Yesterday's date+N- N days from today (e.g.,+3for 3 days ahead)-N- N days before today (e.g.,-2for 2 days ago)YYYY-MM-DD- Specific date (e.g.,2025-12-01)
Commands Reference
atd or atd register
Register for Zoom meetings
Options:
-d, --date <date>- Specify date (default: today)--dry-run- Preview without registering--json- Output in JSON format-h, --help- Display help
atd schedule
View lecture schedule without registering
Options:
-d, --date <date>- Specify date (default: today)--json- Output in JSON format-h, --help- Display help
atd config
Manage configuration
Options:
--show- Display current configuration--reset- Reset all configuration values--path- Show configuration file location--clean- Delete all configuration files-h, --help- Display help
atd check or atd c
Check if online attendance is currently active
Features:
- Instant check of attendance status
- Desktop notification when active
- Sound alarm (5 beeps) when active
- Automatic notification popup stays on top of all windows
Example:
atd check
# or use the shorthand
atd catd monitor or atd m
Continuously monitor attendance status at regular intervals
Options:
-i, --interval <minutes>- Check interval in minutes (default: 10)
Features:
- Automatic checking every N minutes (default: 10)
- Desktop notification when attendance becomes active
- Sound alarm (5 beeps) when attendance becomes active
- Notification stays on top of all windows
- Timestamped check results
- Runs until manually stopped (Ctrl+C)
- Comprehensive logging of all checks
Examples:
# Check every 10 minutes (default)
atd monitor
# Check every 5 minutes
atd monitor -i 5
# Check every minute (useful during class time)
atd m -i 1Output:
════════════════════════════════════════════════════════════════
Monitor Attendance Status
════════════════════════════════════════════════════════════════
✓ All required environment variables are set
📡 Starting attendance monitor for Student ID: 76131
Checking every 10 minute(s)...
Press Ctrl+C to stop
[10:00:00 AM] Check #1: Checking attendance...
[10:00:00 AM] ✗ Attendance is not active
Next check in 10 minute(s)...
[10:10:00 AM] Check #2: Checking attendance...
[10:10:00 AM] ✓✓✓ ATTENDANCE IS ACTIVE! ✓✓✓
🔔 Showing notification and playing alarm...Notification Features:
- Windows toast notification
- Stays on top of all applications
- Sound alarm plays automatically
- 30-second auto-dismiss
- Click to dismiss early
atd logs or atd l
Display today's logs with color-coded output
Features:
- Shows all logs from the current day
- Color-coded entries for easy reading:
- 🔴 Red - "Not active" checks and errors
- 🟢 Green - "Active" checks
- 🟡 Yellow - Warnings
- ⚪ White - General info
- Summary statistics (total, active, not active)
- Error count and location
- Automatic date-based log files
Example:
atd logs
# or use the shorthand
atd lOutput:
════════════════════════════════════════════════════════════════
Today's Logs
════════════════════════════════════════════════════════════════
📄 Reading: logs/combined-2025-12-05.log
────────────────────────────────────────────────────────────────
2025-12-05 11:01:22 [info]: Attendance check: Not active for student 76131
2025-12-05 11:15:00 [info]: Attendance monitor check #10: Active for student 76131
────────────────────────────────────────────────────────────────
✓ No errors logged today
SUMMARY
Total logs: 10
Active checks: 1
Not active checks: 9Use Cases:
- Review today's attendance checking history
- Quickly see when attendance was active
- Monitor for errors or issues
- Track monitoring activity
atd portal or atd p
Access student portal pages with auto-login
Subcommands:
atd p dashboard (default)
Open the student portal dashboard. This is the default action when you run atd p or atd portal.
atd p assessments or atd p a
Open the assessments and exams page. Automatically logs in and navigates directly to the student exam and assessment page. Perfect for quickly checking assignments, quizzes, and exam schedules.
Options:
-f, --filter <text>- Filter/search for specific text on the page
Features:
- Uses NIC_NUMBER and PORTAL_PASSWORD from your configuration
- Browser automation with credentials auto-fill and login
- Direct navigation to the requested page
- Optional text filtering with visual highlighting
- Interactive navigation between matches with Previous/Next buttons
- Browser remains open for you to use
Filter Features:
- Highlights all matches in yellow
- Current match highlighted in orange
- Navigation panel with counter (e.g., "1 / 5")
- Previous (↑) and Next (↓) buttons to jump between matches
- Close (✕) button to remove highlights
- Automatic scroll to matches
- Case-insensitive search
Example Output
Schedule View
════════════════════════════════════════════════════════════════
Meeting Schedule
════════════════════════════════════════════════════════════════
✓ All required environment variables are set
📅 Date: Today (2025-12-05)
Found 3 meeting(s) (2 active, 1 cancelled)
════════════════════════════════════════════════════════════════
SCHEDULE
════════════════════════════════════════════════════════════════
3 meeting(s) scheduled:
1. WP II - Day 47
Time: 08:00 AM - 12:00 PM
Lecturer: Mr Anjana Samarakoon
2. WP II - Day 48 [CANCELLED]
Time: 01:00 PM - 05:00 PM
Lecturer: Mr Anjana Samarakoon
3. WP II - Day 49
Time: 06:00 PM - 10:00 PM
Lecturer: Mr Anjana Samarakoon
════════════════════════════════════════════════════════════════Registration Output
════════════════════════════════════════════════════════════════
Zoom Meeting Auto-Registration
════════════════════════════════════════════════════════════════
✓ All required environment variables are set
📅 Date: Today (2025-12-05)
Processing 3 meeting(s) (2 active, 1 cancelled)...
✓ Successfully registered for 2 meeting(s)
⚠ Skipped 1 cancelled meeting(s)
════════════════════════════════════════════════════════════════Configuration
Configuration is stored in your home directory (not in the project folder):
Location:
- Windows:
C:\Users\YourName\.atd-cli\.env - Mac/Linux:
~/.atd-cli/.env
The file contains:
STUDENT_ID=auto_extracted_from_portal
FIRST_NAME=your_first_name
LAST_NAME=your_last_name
[email protected]
NIC_NUMBER=your_nic_number
CONTACT_NUMBER=your_contact_number
PORTAL_PASSWORD=your_portal_password
TIMEZONE_ID=Asia/ColomboNotes:
STUDENT_IDis automatically extracted from the portal during first setupPORTAL_PASSWORDis required for portal login and student ID extraction- Password input is hidden when typing for security
Note: The .env file is automatically created on first run and your credentials are stored locally only.
Logs
All operations are logged with automatic daily rotation and cleanup:
Log Files:
logs/combined-YYYY-MM-DD.log- All logs for the current daylogs/error-YYYY-MM-DD.log- Errors only for the current day- Console output - Real-time colored logs
Automatic Cleanup:
- Old log files are automatically deleted on the first command run each day
- Only the current day's logs are retained
- Keeps your logs directory clean and manageable
- Cleanup is silent unless old logs are found
Example:
✓ Cleaned up 3 old log file(s)This ensures you always have access to today's logs while keeping disk space usage minimal.
Requirements
- Node.js 14.0.0 or higher
- Active Java Institute student account
- Internet connection
How It Works
- Fetch Timetable - Calls Java Institute API with your student ID and requested date
- Extract UUID - For each meeting link, fetches the Zoom registration page and extracts the UUID
- Register - Submits registration form data to Zoom's API with your credentials
- Display Results - Shows action URLs for each successful registration with colored output
Troubleshooting
"Student ID not found" error
- Verify your Student ID is correct using
atd config --show - Reset your configuration with
atd config --reset
"API server error" or 500 errors
- The Java Institute server might be temporarily down
- Try again after a few minutes
- Verify the portal is accessible at https://web.javainstitute.org/
Permission issues on Windows
- Run Command Prompt or PowerShell as Administrator
- Use
npm install -g atd-cliwith administrator privileges
Command not found after installation
- Restart your terminal
- Check if npm global bin folder is in your PATH
- Run
npm config get prefixto find the global installation path
Registration Failed
Check logs/error-YYYY-MM-DD.log (today's error log) for detailed error messages. Common issues:
- Network connectivity problems
- Invalid credentials (use
atd config --resetto re-enter) - Meeting already registered
- Captcha requirements (may need manual registration)
Automation with Task Scheduler (Windows)
To automatically register every day:
- Open Task Scheduler
- Create Basic Task
- Set trigger to "Daily" at your preferred time (e.g., 7:00 AM)
- Action: "Start a program"
- Program:
atd - Arguments:
register - Click Finish
Privacy & Security
- ✅ All credentials are stored locally on your machine
- ✅ No data is sent to third parties
- ✅ The tool only communicates with official Java Institute and Zoom APIs
- ✅ Your credentials are never logged or shared
- ✅ The
.envfile is in.gitignoreto prevent accidental commits - ✅ Passwords are masked when displaying configuration
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Changelog
Version 1.0.14 (2025-12-05)
- NEW: Auto-extraction of Student ID from portal during first setup
- NEW: Smart lecture filtering - Automatically skips cancelled lectures
- NEW: Hidden password input for secure credential entry
- IMPROVED: No longer need to manually enter Student ID
- IMPROVED: Registration now shows statistics (X active, Y cancelled)
- IMPROVED: Cancelled lectures are clearly marked with [CANCELLED] label
- IMPROVED: Schedule view shows active vs cancelled meeting counts
- Student ID is automatically extracted from the portal's timetable link
- Cancelled lectures are detected via
cancel_statusfield from API - Password masking ensures credentials are not visible during input
- Enhanced security and user experience
Version 1.0.12 (2025-12-05)
- NEW:
atd checkcommand - Check if online attendance is currently active - NEW:
atd monitorcommand - Continuously monitor attendance status at intervals - NEW:
atd logscommand - Display today's logs with color-coded output - NEW: Desktop notifications when attendance becomes active
- NEW: Sound alarm (5 beeps) when attendance is detected
- NEW: Daily log rotation - Automatic cleanup of old log files
- NEW: Color-coded log viewer - Red for "not active", Green for "active"
- IMPROVED: Log files now use date-based naming (combined-YYYY-MM-DD.log)
- IMPROVED: Only current day's logs are retained automatically
- Monitor command supports custom intervals with
-ioption - Notifications stay on top of all windows with 30-second auto-dismiss
- Comprehensive summary statistics in logs command
- All new commands have short aliases:
c,m,l
Version 1.0.11 (2025-12-03)
- NEW: Added alias
afor assessments command atd p anow works as shorthand foratd p assessments- Works with all filter options:
atd p a -f "search term"
Version 1.0.10 (2025-12-03)
- NEW: Filter option for assessments command (
-f, --filter) - Highlight and search for text on assessments page
- Interactive navigation with Previous/Next buttons
- Visual counter showing current match position
- Automatic scrolling to matches
- Close button to remove highlights
- Optimized portal login flow - skips dashboard page load
- Improved navigation speed when accessing assessments
Version 1.0.6 (2025-12-01)
- FIX: Added PORTAL_PASSWORD to required environment variables
- Portal password is now prompted during initial setup
- Fixed authentication issue for portal commands
Version 1.0.5 (2025-12-01)
- NEW: Portal command restructured with subcommands
atd poratd portal- Short alias for portal commandsatd p dashboard- Open portal dashboard (default)atd p assessments- Direct access to assessments page- Improved command structure for better usability
Version 1.0.4 (2025-12-01)
- NEW: Automated portal login with Puppeteer
atd portalnow automatically logs you into the Java Institute student portal- Uses NIC_NUMBER and PORTAL_PASSWORD from your configuration
- Browser automation with credentials auto-fill and login
Version 1.0.3 (2025-12-01)
- Added
atd portalcommand to open Java Institute student portal in browser - Quick access to web portal with a single command
Version 1.0.2 (2025-11-30)
- BREAKING CHANGE: Configuration now stored in user's home directory (
~/.atd-cli/.env) - Added
atd config --pathto show configuration file location - Added
atd config --cleanto delete all configuration files - Configuration persists across npm installations/uninstallations
- Improved configuration management for multi-user systems
Version 1.0.1 (2025-11-30)
- Bug fixes and improvements
Version 1.0.0 (2025-11-30)
- Initial release
- CLI tool with
atdcommand - Register and schedule commands
- Multiple date format support
- Configuration management
- Dry-run mode
- JSON output support
License
MIT License - see LICENSE file for details
Author
Maleesha Pramud
Email: [email protected]
GitHub: @maleesha-pramud
Support
- 📧 Email: [email protected]
- 🐛 Issues: GitHub Issues
- 📖 Documentation: Check this README and
atd --help
Disclaimer
This is an unofficial tool created for student convenience. Always verify your meeting registrations through the official Java Institute portal. The author is not responsible for missed classes or registration failures.
Acknowledgments
- Java Institute for providing the API
- All contributors and users of this tool
Made with ❤️ for Java Institute students
