DI-Lab is a web application for optimizing legendary gems in Diablo Immortal. Similar to World of Warcraft tools like Raidbots and Ask Mr. Robot, DI-Lab helps players make data-driven decisions about gem upgrades to maximize their character's power.
The application analyzes your current gem build, considers available resources (platinum, Telluric Pearls, etc.), and provides prioritized upgrade recommendations based on power gain per resource cost.
- Gem Inventory: Upload screenshots or manually select legendary gems from a comprehensive database
- Resource Management: Input available resources to get realistic upgrade recommendations
- Optimization Engine: Algorithm that factors in resources, current build, and goals to recommend best upgrades
- Character Sync: Battle.net OAuth with character verification (planned)
- Build Management: Save, share, and compare builds (planned)
- Free Tier: Basic optimization, manual gem entry, limited selections
- Paid Tier 1: Advanced algorithms, screenshot OCR, build saving/sharing
- Paid Tier 2: Battle.net character sync, historical tracking, API access
- Bun runtime (recommended) or Node.js 20+
- Bun is used as the primary package manager
# Clone the repository
git clone https://github.com/dahgoth/di-lab.git
cd di-lab
# Install dependencies
bun install# Start development server
bun dev
# Build for production
bun build
# Start production server
bun startOpen http://localhost:3000 in your browser.
We welcome contributions! Please follow our commit workflow:
This project uses Conventional Commits with automated validation:
# Type must be one of: feat, fix, docs, style, refactor, test, chore, perf, ci, build, revert
# Scope is optional but recommended for spec-specific changes
# Examples:
git commit -m "feat: add gem selector component"
git commit -m "fix(optimize): resolve resonance calculation error"
git commit -m "docs: update installation instructions"Before each commit, the following checks run automatically:
- ESLint - Code quality and formatting
- TypeScript - Type checking
- commitlint - Commit message format validation
If checks fail:
- Run
bun lint --fixto auto-fix formatting issues - Fix type errors manually
- Rewrite commit message following conventional format
- Create a feature branch from
main - Make your changes following conventional commits
- Create a PR using our template
- Ensure all CI checks pass
- Wait for review
This project uses release-please-action for automated releases:
- Commits to
maintrigger a Release PR - Review and merge the Release PR
- GitHub Release is created automatically
- Version in package.json is bumped automatically
See our contributing guidelines for more details.
This project is licensed under the GNU Affero General Public License v3.0 or later - see the LICENSE file for details.
- Inspired by Raidbots and Ask Mr. Robot
- Made with Kilo Code