{"id":22477560,"url":"https://github.com/canardconfit/is-academia-bot","last_synced_at":"2026-02-09T12:34:34.078Z","repository":{"id":221438467,"uuid":"752171821","full_name":"CanardConfit/is-academia-bot","owner":"CanardConfit","description":"A simple bot that allows me to scrap my grades from my school's IS-Academia website","archived":false,"fork":false,"pushed_at":"2025-01-27T14:36:44.000Z","size":168,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-01T20:01:08.031Z","etag":null,"topics":["bot","docker","is-academia","school"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/repository/docker/canardconfit/is-academia-bot/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CanardConfit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-03T08:34:00.000Z","updated_at":"2025-04-02T14:27:35.000Z","dependencies_parsed_at":"2024-04-07T17:25:48.202Z","dependency_job_id":"f06590bd-9698-453e-be04-c407cbdf5977","html_url":"https://github.com/CanardConfit/is-academia-bot","commit_stats":null,"previous_names":["canardconfit/is-academia-bot"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/CanardConfit/is-academia-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanardConfit%2Fis-academia-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanardConfit%2Fis-academia-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanardConfit%2Fis-academia-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanardConfit%2Fis-academia-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CanardConfit","download_url":"https://codeload.github.com/CanardConfit/is-academia-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanardConfit%2Fis-academia-bot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259941002,"owners_count":22935291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","docker","is-academia","school"],"created_at":"2024-12-06T14:11:31.857Z","updated_at":"2026-02-09T12:34:29.351Z","avatar_url":"https://github.com/CanardConfit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IS-Academia Bot\n\n![Docker Pulls](https://img.shields.io/docker/pulls/canardconfit/is-academia-bot)\n![GitHub Release](https://img.shields.io/github/v/release/CanardConfit/is-academia-bot)\n![GitHub Repo stars](https://img.shields.io/github/stars/CanardConfit/is-academia-bot)\n\n## Introduction\n\nIS-Academia Bot is an automated tool designed to fetch, analyze, and report changes in course modules from the IS-Academia platform, commonly used by \nacademic institutions to manage course registrations, grades, and schedules.\nThis bot simplifies tracking changes in course details, offering notifications through various channels and updates via a Git repository.\n\n\u003e **Note**: This bot is currently designed to work with the HES-SO website (https://age.hes-so.ch) and the SWITCH Edu-Id connection. If you are not within these settings, you may need to modify the program to make this work for you.\n\n## Table of Contents\n\n- [Introduction](#Introduction)\n- [Installation](#Installation)\n  - [Local Installation](#Local-Installation)\n  - [Installation with Docker](#Installation-with-Docker)\n- [Environment Configuration](#Environment-Configuration)\n- [Features](#Features)\n- [How It Works](#How-It-Works)\n- [Contributing](#Contributing)\n- [License](#License)\n\n\n## Installation\n\n### Local Installation\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/yourusername/IS-Academia-Bot.git\ncd IS-Academia-Bot\n```\n\n2. Install dependencies:\n\n```bash\nnpm install\n# or, if you use yarn\nyarn install\n```\n\n3. Configure the .env file with your IS-Academia credentials, Discord webhook, and other settings. Refer to the provided .env.example for guidance.\n4. Run the bot:\n\n```bash\nnpm start\n# or, if you use yarn\nyarn start\n```\n\n### Installation with Docker\n\nThe Docker image can be pulled from Docker Hub, here (ghcr.io) or Quay.io:\n```sh\n# Docker Hub\ndocker pull canardconfit/is-academia-bot\n\n# ghcr.io\ndocker pull ghcr.io/canardconfit/is-academia-bot\n\n# Quay.io\ndocker pull quay.io/canardconfit/is-academia-bot\n```\n\nDocker compose file:\n```yml\nversion: '3'\n\nservices:\n  is-academia-bot:\n    image: canardconfit/is-academia-bot:latest\n    container_name: is-academia-bot\n    restart: always\n    volumes:\n      - \"./git-history:/app/git-history\"\n    env_file:\n      - \"./environment.env\"\n```\n\n\u003e **Note**: Create `environment.env` file with a copy of .env.example\n\nFrom file [docker-compose.yml](./docker-compose.yml).\n\n## Environment Configuration\n\nConfigure the bot by editing the .env file. Essential configurations include:\n\n- **SWITCH_USERNAME** and **SWITCH_PASSWORD** for IS-Academia login.\n- **GIT_REMOTE**, **GIT_BRANCH**, **GIT_FOLDER** and **GIT_FILE** for Git repository details.\n- **DISCORD_ID** and **DISCORD_TOKEN** for Discord notifications.\n- **TELEGRAM_TOKEN** and **TELEGRAM_CHAT_ID** for Telegram notifications.\n\nFor more details on configuration options, refer to the `.env.example` file.\n\n## Features\n\nModule Tracking: Automatically tracks changes in course modules.\n\nGit Version Control: Maintains a version-controlled history of module changes.\n\nFlexible Configuration: Customizable to monitor specific courses or semesters.\n\nNotification Support: Sends notifications through different channels :\n\n- Discord via Webhook\n- Telegram via Bot API\n\n## How It Works\n\nIS-Academia Bot scrapes the IS-Academia webpage for the specified courses or modules, compares the fetched data with the previously stored state, and identifies any changes.\nOn detecting updates, it commits these changes to a Git repository and optionally sends notifications through the configured channels.\n\n## Contributing\n\nContributions are welcome! Please fork the repository and submit pull requests with your improvements. For major changes, open an issue first to discuss what you would like to change.\n\n## License\n\n[Apache 2.0 License](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanardconfit%2Fis-academia-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanardconfit%2Fis-academia-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanardconfit%2Fis-academia-bot/lists"}