- Today & Weekly Schedule — View your class schedule (same as AmikomOne App)
- Class Reminders — Get notified before class starts
- Self-hosted — Full control over your data and deployment
A Discord bot that automates class reminders by syncing schedule data with real-time events.
| Component | Description |
|---|---|
| Data Ingestion | Schedule data is imported manually via the Amikom student dashboard API and stored as a static JSON file |
| Polling | Continuously monitors the schedule file, calculating time differences between current time and upcoming classes |
| State Management | Redis stores notification state to prevent duplicates across application restarts |
| Event Driven | Redis Pub/Sub decouples the system; events are published when classes are imminent |
| Subscribers | Redis subscribers query PostgreSQL for active guild subscriptions and send notifications to Discord channels |
Caution
This bot and project are not affiliated with, endorsed by, or officially connected to Universitas Amikom Yogyakarta. It is a community-built tool created by students, for students. Use at your own risk. For official academic information, always refer to Dashboard Mahasiswa or AmikomOne App.
You can invite the bot to your server using this button below:
After that, see the Subscribe to Reminders section.
If you want to build this project yourself, see the Self Hosting section below.
- Log in to Dashboard Mahasiswa
- Once logged in, open this URL
- You should see JSON data. If not, ensure you're using the same browser session
- Select all and copy the JSON (
Ctrl+AthenCtrl+C) - Paste into a text editor and save as
schedule.json - In your Discord server, run:
/schedule set - Enter schedule information and upload the
schedule.jsonfile when prompted - Verify the schedule preview appears
- In your Discord server, choose a channel for notifications
- Run:
/reminder subscribe - The bot will ask you to input your Major, Enrolled Year, and Class Number.
- Done! You'll now receive class reminders
- Unsubscribe:
/reminder unsubscribe - Check status:
/reminder status
- Today's Schedule:
/schedule today - Weekly Schedule:
/schedule weekly
- Node.js v21 or higher
- npm v9 or higher
- Docker & Docker Compose installed
- Git
- Discord account with server admin privileges
- An Amikom account (NPM & password)
- Server/PC capable of running 24/7 (for continuous notifications)
Note
Follow these steps in order.
1. Create a Discord Bot
- Navigate to the Discord Developer Portal
- Log in with your Discord account
- Click New Application (top-right) if you haven't created a bot yet
- Enter your Application Name
- Copy the Application ID from the application page
- Go to the Bot section (left sidebar)
- Under Token, click Reset Token and copy the new token
- Navigate to Installation (left sidebar)
- Under Installation Contexts, select Guild Install
- For Install Link, choose Discord Provided Link and copy the URL
- Under Default Install Settings > Guild Install, add
applications.commandsandbotto Scopes - Save changes and open the invite URL
- Select your server to add the bot
[!IMPORTANT] You'll need:
DISCORD_CLIENT_ID(Application ID) andDISCORD_TOKEN(Bot Token)
2. Deploy the Bot
# Clone the repository
git clone https://github.com/adwerygaming/amikom-class-notifier
cd amikom-class-notifier
# Copy and configure environment variables
cp .env.example .env
# Edit .env with your credentials (see below)
# Start infrastructure services
docker compose up -d
# Build and start the bot
npm run build
npm run start
NODE_ENV=production
# Discord (from step 1)
DISCORD_CLIENT_ID=your_application_id_here
DISCORD_TOKEN=your_bot_token_here
# Redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
# PostgreSQL
POSTGRES_PORT=5432
POSTGRES_PASSWORD=your_secure_password_here
# PGAdmin (optional, for database management)
PGADMIN_PORT=8080
PGADMIN_PASSWORD=your_secure_password_here
# Connection string (update with your credentials)
PG_CONNECTION_STRING=postgresql://postgres:your_secure_password_here@localhost:5432/amikom_notifier
[!TIP] Generate fast, secure passwords using it-tools.tech/token-generator
After that, go to the Importing Schedule Data section to import your schedule and the Subscribe to Reminders section to set up your reminders.
# Install dependencies
npm install
# Run in development mode (with hot reload)
npm run dev
# Lint code
npm run lint
Contributions are open to everyone. If you implement something cool and useful, open a PR and we'll discuss it there. ❤️
If you have any questions, feel free to reach out via links on my GitHub profile
This project is not affiliated with Universitas Amikom Yogyakarta
