npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

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

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-cli

Local Installation

For project-specific use:

npm install atd-cli
npx atd

From 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:

atd

You'll be prompted to enter your credentials:

  • First Name
  • Last Name
  • Email
  • 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 schedule

View Tomorrow's Schedule

atd schedule --date tomorrow

Register for Today's Meetings

atd register
# or simply
atd

Register for Tomorrow's Meetings

atd register --date tomorrow

Preview Registration (Dry Run)

atd register --dry-run

View Specific Date

atd schedule --date 2025-12-01
atd schedule --date +3    # 3 days from now
atd schedule --date -2    # 2 days ago

Configuration 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 --clean

Get JSON Output (for scripting)

atd schedule --json
atd register --json

Access Student Portal

Open the student portal dashboard:

atd portal
# or using the short alias
atd p
# or explicitly
atd p dashboard

Open the assessments page:

atd p assessments
# or using the short alias
atd p a

Filter 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 date
  • yesterday - Yesterday's date
  • +N - N days from today (e.g., +3 for 3 days ahead)
  • -N - N days before today (e.g., -2 for 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 c

atd 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 1

Output:

════════════════════════════════════════════════════════════════
   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 l

Output:

════════════════════════════════════════════════════════════════
   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: 9

Use 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/Colombo

Notes:

  • STUDENT_ID is automatically extracted from the portal during first setup
  • PORTAL_PASSWORD is 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 day
  • logs/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

  1. Fetch Timetable - Calls Java Institute API with your student ID and requested date
  2. Extract UUID - For each meeting link, fetches the Zoom registration page and extracts the UUID
  3. Register - Submits registration form data to Zoom's API with your credentials
  4. 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-cli with administrator privileges

Command not found after installation

  • Restart your terminal
  • Check if npm global bin folder is in your PATH
  • Run npm config get prefix to 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 --reset to re-enter)
  • Meeting already registered
  • Captcha requirements (may need manual registration)

Automation with Task Scheduler (Windows)

To automatically register every day:

  1. Open Task Scheduler
  2. Create Basic Task
  3. Set trigger to "Daily" at your preferred time (e.g., 7:00 AM)
  4. Action: "Start a program"
  5. Program: atd
  6. Arguments: register
  7. 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 .env file is in .gitignore to prevent accidental commits
  • ✅ Passwords are masked when displaying configuration

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. 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_status field 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 check command - Check if online attendance is currently active
  • NEW: atd monitor command - Continuously monitor attendance status at intervals
  • NEW: atd logs command - 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 -i option
  • 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 a for assessments command
  • atd p a now works as shorthand for atd 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 p or atd portal - Short alias for portal commands
  • atd 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 portal now 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 portal command 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 --path to show configuration file location
  • Added atd config --clean to 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 atd command
  • 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

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