Admin Accounts
Username Last Login Created Actions
Loading...
Login History (last 50)
AdminIP AddressResultDate / Time
Loading...
Change Your Password
Audit Log
Date / Time Admin Action Target Detail
Loading...
Settings
Branding & Identity

Customise the app for your server. These values appear in the UI, DM footers, and payment references.

Users are told to include {prefix} {discord_id} with their payment. Leave blank to hide this field.
User Lookup Portal

Users can check their own subscription status at /lookup. Set a password to enable the portal — leave blank to keep the current password unchanged.

Open Portal ↗
Discord DM Reminders

Automatically DMs users on Discord at 7 days and 2 days before their subscription expires. Requires a Discord Bot token and the user's Discord User ID (snowflake) set on their profile.

Found in Discord Developer Portal → Your App → General Information → Public Key. Required for the /myid slash command.

Discord Webhook Notifications

Sends a daily Discord alert listing users whose subscriptions expire within the threshold. Alerts fire automatically once per day. Use "Send Now" to trigger immediately.

Database Backup & Export

The system automatically saves a .db + .csv + .xlsx snapshot every 3 days to the backups/ folder on the host. JJtopia User Backup Database.xlsx is also kept up-to-date automatically whenever users are added, edited, or payments are logged. Use the buttons below for an on-demand download.

Import Users from XLSX

Import users from a StreamVault backup XLSX (Users sheet) or the original JJtopia XLSX (Main / Shine sheets). Replace All wipes existing users first.

DM Message Templates

Customise the message body sent to users. Leave blank to use the default text.
Expiry reminder placeholders: {name} {days} {expiry} {urgency}
Payment confirmation placeholders: {name} {expiry} {months}

Audit Log Maintenance

Remove old audit log entries to keep the database tidy. Current entries:

Payment Notifications Maintenance

Remove old confirmed and dismissed payment notifications. Pending notifications are never pruned. Current resolved:

Subscription Manager
Version 2.1.0
Created By
inzi
Built for
Features
👥 User Management
Add, edit, delete subscribers. Search across all ID fields including payer notes. Sortable columns, pagination, bulk actions.
💳 Payment Tracking
Log payments per user, automatically extends expiry. Full payment history per subscriber.
🎬 Service Management
Create and manage streaming services (Emby, Plex, Jellyfin, etc.) with custom icons and colours.
🔔 Discord Webhook Alerts
Daily automated alerts to a Discord channel listing expiring and expired subscribers. Rich embed format.
💬 Discord DM Reminders
Automated DMs to subscribers at 7 days and 2 days before expiry. Includes payment link and customisable payment reference. Fully configurable templates.
🔍 User Lookup Portal
Password-protected public portal at /lookup — users can check their own subscription status.
💾 Backup & Export
Auto-backup every 3 days (.db + .csv + .xlsx). Live XLSX stays synced on every change. Google Drive upload via rclone (hourly live file + 3-day full backup). Drive Synced status badge in the header.
🛡️ Admin Management
Multiple admin accounts with forced password change on first login, password reset with generator, and audit logging.
📋 Audit Log
Full history of all admin actions — user changes, payments, logins, exports, and settings updates. Includes before/after expiry on payment entries. Prunable from Settings.
📱 Mobile Responsive
Fully responsive design — admin panel and lookup portal work on phones and tablets.
🤖 Discord /myid Command
Subscribers type /myid in Discord to automatically register their snowflake ID for DM reminders. Self-update portal at /update as a fallback.
📨 /senddm Test Command
Subscribers type /senddm in Discord to receive a test DM and verify expiry reminders will reach them. Matches by username and display name.
🗂 Backup Log
Every backup and rclone sync event is recorded in the database with status and detail. Visible in Audit → Backup Log. Auto-pruned after 30 days.
🗑 Bulk Delete Expired
One-click removal of users expired more than a chosen number of days ago. Threshold selector from 0 to 90 days.
📂 In-App XLSX Import
Upload and import users from a StreamVault backup XLSX directly from Settings. Add-missing or full-replace mode.
🎨 Multi-Server Branding
Fully configurable org name, payment reference prefix, and lookup URL. Deploy the same app for multiple Discord servers with no code changes.
🔐 Security Hardening
Account lockout after 5 failed attempts (15 min). Failed login logging. Discord webhook alert on every admin login. Stricter rate limiting. 12-char minimum passwords.
📊 Subscriber Report
Read-only report at /report — password protected, live searchable/filterable table. Spreadsheet View renders the live XLSX in-browser with search. Share with other admins without giving full app access.
✏️ DM Template Editor
Customise the expiry reminder and payment confirmation DM body text from Settings. Supports {name}, {days}, {expiry}, {months} placeholders.
Changelog
v2.1.0
Backup log: every backup and rclone sync event recorded in the database, visible in Audit → Backup Log, auto-pruned at 30 days. Drive Synced/Drive Sync Error badge in the admin header with hover tooltip. /senddm command registered and fixed (global_name fallback, removed JJtopia default). XLSX spreadsheet search on /report. /paid slash command removed.
v2.0.0
Multi-server deployment with full branding configuration (org name, payment ref, lookup URL). Security hardening: account lockout, failed login tracking, Discord webhook login alerts, stricter rate limiting, 12-char password minimum. Subscriber Report page (/report). Google Drive backup via rclone (hourly live XLSX + 3-day full sync). Dynamic XLSX filename from org name. Clickable Discord ID opens payment history. SQLite WAL mode + indexes for performance. Search debounce.
v1.9.0
Bulk delete expired users (threshold selector). In-app XLSX import (add or replace mode). DM message template editor for expiry reminders and payment confirmations. Notes search highlight. Admin login history. Backup CSV/XLSX now includes Discord User ID for full recovery.
v1.8.0
/paid command with optional target (for payers managing multiple accounts) and amount. /senddm test DM command. Admin payment notification bell with confirm/dismiss. Mobile toast fix.
v1.7.0
/myid Discord slash command — subscribers self-register their snowflake ID for DM reminders. Self-update portal at /update as fallback. Auto-match script to bulk-populate snowflake IDs from server member list.
v1.6.0
Save confirmation on user edits, removed native confirm() from extend buttons for browser compatibility, audit log prune tool in Settings, before→after expiry detail in payment audit entries.
v1.5.0
Discord DM reminders (7 & 2 day), payment link & TripBeerFund reference, pretty embed format, JJtopia Backup XLSX live-sync, About tab.
v1.4.0
Sortable columns, pagination, bulk extend, styled confirm modals, CSV/XLSX export with payment history, admin password generator.
v1.3.0
User lookup portal (/lookup) with password protection, security hardening, Cloudflare tunnel compatibility, rate limiting.
v1.2.0
Mobile responsive design, admin management, forced password change, audit log, Discord webhook rich embeds, manual DB backup.
v1.1.0
Payment tracking, service management, expiry status dashboard, Discord webhook alerts, bulk user import from XLSX.
v1.0.0
Initial release. User management, subscription tracking, expiry dates, services, admin login.
0 selected | Extend:
Payment Notifications