A modern, sleek desktop application for tracking and managing CurseForge mod updates with Discord webhook integration.
- Features
- Getting Started
- Configuration
- Usage Guide
- Technical Stack
- Advanced Features
- Troubleshooting
- Development Guide
- Performance Optimization
- Contributing
- Support
- FAQ
- 📦 Track multiple CurseForge mods across different games
- 🔔 Real-time update notifications via Discord webhooks
- 🎨 Customizable Discord message templates
- 📊 Activity tracking and logging
- 🌗 Modern, dark-mode interface
- ⚡ Fast and lightweight (built with Rust/Tauri)
- 🔄 Automatic update checking at customizable intervals
- 📝 Rich text formatting in Discord notifications
- 🎯 Mod-specific webhook assignments
- 📈 Activity history and logging
- 🎭 Custom webhook avatars and usernames
Before you begin, ensure you have the following installed:
- Node.js (v16 or higher)
- Rust
- Git
- VS Code (recommended)
- Tauri Prerequisites
- Microsoft Visual Studio C++ Build Tools
- WebView2 Runtime
- Clone the repository:
git clone https://github.com/yourusername/artis-curseforge-mod-tracker.git
cd artis-curseforge-mod-tracker- Install dependencies:
npm install- Generate Cargo lockfile:
cargo generate-lockfile- Visit CurseForge Console
- Create an account or sign in
- Navigate to API Keys section
- Generate a new API key
- Add the key in the application settings
- Open Discord server settings
- Navigate to Integrations > Webhooks
- Click "Create Webhook"
- Customize name and channel
- Copy webhook URL
- 🔒 Never share webhook URLs publicly
- 🔄 Rotate webhook URLs periodically
- 📝 Use descriptive webhook names
- 🎯 Create channel-specific webhooks
- Choose from preset intervals (1min - 24h).
- Custom templates
- Embed colors
- Mention settings
- Thumbnail preferences
- Visit mod page on CurseForge
- Look for "Project ID" in About This Project
- Copy the numeric ID
- Click "Add Mod"
- Paste Project ID
- Configure webhooks
- Set update preferences
- Navigate to Webhooks page
- Click "Add Webhook"
- Enter webhook details:
- Name
- URL
- Avatar (optional)
- Username (optional)
- Enable custom template
- Customize:
- Colors
- Fields
- Layout
- Content
{modName} - Mod name
{modID} - Mod ID
{modAuthorName} - Author name
{latestModFileName} - File name
{newReleaseDate} - New update time
{newReleaseDate} - New update time
{modURL} - URL to mod page
{everyone} - @everyone mention
{here} - @here mention
{&roleID} - Mention a role (e.g., {&123456789})
{#channelID} - Channel link (e.g., {#987654321})
- Mod updates
- Webhook deliveries
- Configuration changes
- System events
- By mod
- By date
- By type
- By status
- Framework: Next.js 14
- UI Library: NextUI
- Styling: TailwindCSS
- Animations: Framer Motion
- Icons: Lucide Icons
- Runtime: Rust
- Framework: Tauri
- Database: SQLite
- HTTP Client: reqwest
- Serialization: serde
- Package Manager: npm
- Build Tool: Cargo
- Code Quality: ESLint, Prettier
- Version Control: Git
- Embeds
- Fields
- Thumbnails
- Footers
- Timestamps
- Hex color picker
- Preset palettes
- Enable/disable multiple
- Template application
- Preview mode
- Test messages
- Delivery status
- Verify key validity
- Check permissions
- Ensure proper format
- Validate URL format
- Check channel permissions
- Check internet connection
- Verify mod IDs
- Confirm API status
- Install VS Code
- Add recommended extensions:
- Rust Analyzer
- Tauri
- ES7+ React
- Tailwind CSS IntelliSense
# Start development server
npm run tauri dev
# Run tests
npm test
# Lint code
npm run lint
# Format code
npm run formatartis-curseforge-mod-tracker/
├── src/ # Frontend source code
│ ├── hooks/ # Custom React hooks
│ │ ├── usePreventBrowserShortcuts.js # Browser shortcut handling
│ │ ├── useUpdateCheck.js # Update checking logic
│ │ ├── useContextMenu.js # Context menu functionality
│ │ └── useModUpdateChecker.js # Mod update checking logic
│ │
│ ├── styles/ # Styling
│ │ └── globals.css # Global CSS styles
│ │
│ ├── contexts/ # React contexts
│ │ └── UpdateServiceContext.jsx # Update service state management
│ │
│ ├── app/ # Next.js pages
│ │ ├── webhooks/ # Webhook management
│ │ ├── webhook-templates/ # Template customization
│ │ ├── mods/ # Mod management
│ │ ├── page.jsx # Main dashboard
│ │ └── layout.jsx # App layout wrapper
│ │
│ └── components/ # React components
│ ├── UpdateCheckButton.jsx # Update trigger button
│ ├── UpdateCountdown.jsx # Next update timer
│ ├── Sidebar.jsx # Navigation sidebar
│ ├── TrackedMods.jsx # Mod tracking display
│ ├── WebhookEditor.jsx # Webhook configuration
│ ├── WebhookEditorModal.jsx # Webhook editing modal
│ ├── WebhookAssignModal.jsx # Mod-webhook assignment
│ ├── WebhookCard.jsx # Webhook display card
│ ├── Settings.jsx # Settings panel
│ ├── ColorPicker.jsx # Color selection tool
│ ├── DeleteConfirmationModal.jsx # Deletion confirmation
│ ├── AddModModal.jsx # New mod addition
│ ├── AddWebhookModal.jsx # New webhook creation
│ ├── QuickStartGuide.jsx # Onboarding guide
│ ├── RecentActivity.jsx # Activity history
│ ├── DiscordPreview.jsx # Message preview
│ └── ModCard.jsx # Mod display card
│
├── src-tauri/ # Rust backend code
│ ├── src/
│ │ ├── database/ # Database operations
│ │ │ ├── settings.rs # Settings management
│ │ │ ├── webhooks.rs # Webhook operations
│ │ │ ├── webhook_templates.rs # Template management
│ │ │ ├── mods.rs # Mod operations
│ │ │ ├── activities.rs # Activity logging
│ │ │ ├── init.rs # Database initialization
│ │ │ └── mod.rs # Module declarations
│ │ │
│ │ ├── commands/ # Tauri commands
│ │ │ ├── settings_commands.rs # Settings endpoints
│ │ │ ├── webhook_commands.rs # Webhook endpoints
│ │ │ ├── webhook_template_commands.rs # Template endpoints
│ │ │ ├── activity_commands.rs # Activity endpoints
│ │ │ ├── mod.rs # Module declarations
│ │ │ └── mod_commands.rs # Mod endpoints
│ │ │
│ │ └── main.rs # Application entry point
│ │
│ ├── icons/ # Application icons
│ │ ├── icon.png # PNG icon
│ │ └── icon.ico # ICO icon
│ │
│ ├── installer.nsi # Windows installer script
│ ├── tauri.conf.json # Tauri configuration
│ ├── Cargo.toml # Rust dependencies
│ ├── build.rs # Build script
│ └── Cargo.lock # Rust dependency lock
│
├── README.md # Project documentation
├── postcss.config.mjs # PostCSS configuration
├── tailwind.config.js # Tailwind CSS configuration
├── jsconfig.json # JavaScript configuration
├── .gitignore # Git ignore rules
├── next.config.mjs # Next.js configuration
├── package.json # Node.js dependencies
└── package-lock.json # Node.js dependency lock
- Component memoization
- Lazy loading
- Image optimization
- Code splitting
- Connection pooling
- Query optimization
- Caching strategies
- Memory management
It's a good practice to periodically back up your database, especially before updating the application or making significant changes. To do this:
- Press Windows Start button and search
Run. - Type
%LOCALAPPDATA%\\artis-curseforge-mod-trackerand press Enter. - Copy the
curseforge_tracker.dbfile to a safe location (e.g., an external drive or cloud storage).
- Fork repository
- Create feature branch
- Set up development environment
- Make changes
- Submit PR
feat: Add new feature
fix: Bug fix
docs: Documentation changes
style: Formatting changes
refactor: Code restructuring
test: Add/modify tests
Q: Is this free to use? A: Yes, completely free and open source.
Q: Which operating systems are supported? A: Windows, macOS, and Linux.
Q: Can I track multiple games? A: Yes, you can track mods from any game on CurseForge.
Q: How often can I check for updates? A: Minimum interval is 1 minute, recommended 30 minutes.
Q: Where can I get help? A: Join our Discord server or open a GitHub issue.
Q: How do I report bugs? A: Create an issue on GitHub with reproduction steps.
Yes, CurseForge Mod Tracker is safe to use. Here's why you can trust our application:
- Open Source: Our entire codebase is open source and available for review on GitHub. You can inspect every line of code we use.
- Transparent Development: All development is done in the open, with public pull requests and issue discussions.
- No Data Collection: We do not collect any personal data or telemetry from your system.
- Local Operation: The app operates locally on your machine, only connecting to CurseForge APIs for mod data.
If you encounter the SmartScreen warning, you can safely bypass it:
- Click on "More info" in the SmartScreen popup.
- Then click on "Run anyway".
For maximum security assurance, you can build the application yourself:
- Clone the repository:
git clone https://github.com/yourusername/artis-curseforge-mod-tracker.git
cd artis-curseforge-mod-tracker- Install dependencies:
npm install- Generate Cargo lockfile:
cargo generate-lockfile