Enterprise-grade asset management without enterprise complexity or cost.
Krubles is a powerful, offline-first desktop asset management system built with Electron, React, and SQLite. Track unlimited assets with lightning-fast search, custom categories, QR code generation, and comprehensive inventory management β all while maintaining complete data ownership.
Start with pre-configured categories for your industry:
- IT & Technology - Computers, monitors, network equipment, software licenses
- Auto Dealership - Vehicles, parts, service tools, office equipment
- Warehouse & Distribution - Inventory products, equipment, safety gear, shipping supplies
- Construction - Power tools, heavy equipment, safety equipment, materials
- Healthcare - Medical equipment, surgical instruments, office equipment, furniture
- Education - Computers, projectors, lab equipment, furniture
- Custom - Build your own category structure from scratch
- Lightning-Fast Search - FTS5 full-text indexing finds assets in <100ms even with 100,000+ records
- Smart Pagination - Server-side pagination keeps memory usage constant regardless of dataset size
- Optimized Database - 20+ performance indexes and SQLite optimization pragmas for maximum speed
- Custom Field Search - JSON custom fields are automatically flattened and indexed for full-text search
- Custom Categories - Create unlimited categories with custom icons and colors during setup
- Category Filtering - Toggle between "My Categories", "Favorites", or "All Categories" views
- Custom Fields - Add category-specific fields (text, number, date, dropdown, checkbox)
- Inventory Tracking - Track individual items within bulk assets
- Assignment Management - Check out assets to users with expected return dates
- Maintenance Records - Schedule and track maintenance activities
- Full-Text Search - Search across asset tags, names, descriptions, serial numbers, brands, models, and custom fields
- Smart Filters - Filter by category, status, location, and custom criteria
- Sortable Columns - Click any column header to sort ascending or descending
- Debounced Search - Smooth typing experience with 300ms search delay
- Category Preferences - Only see categories relevant to your workflow
- Real-Time Dashboard - At-a-glance view of total, available, assigned, and maintenance assets
- Activity Timeline - Complete audit trail of all asset changes
- Asset Statistics - Track asset counts by status and category
- Database Optimization - Built-in tools to optimize database performance
- Modern UI - Clean, professional interface built with React and TailwindCSS
- Setup Wizard - Guided onboarding with business templates
- Responsive Design - Works on any screen size
- Keyboard Shortcuts - Fast workflows for power users
- Visual Category System - Color-coded categories with emoji icons
- Offline-First - 100% functional without internet connection
- Self-Hosted - Your data stays on your computer
- SQLite Backend - Reliable, battle-tested database engine
- TypeScript - Full type safety across the entire codebase
- Electron - Native desktop performance on all platforms
- Node.js 18+ (Download from nodejs.org)
- npm 8+ (comes with Node.js)
-
Clone the repository
git clone https://github.com/yourusername/krubles-asset-management.git cd krubles-asset-management -
Install dependencies
npm install
-
Start the development server
npm start
-
Build for production
npm run package
The packaged app will be in the out/ directory.
- Launch Krubles - The Setup Wizard will guide you through initial configuration
- Choose Business Type - Select from IT, Auto, Warehouse, Construction, Healthcare, Education, or Custom
- Review Categories - Select which pre-configured categories you want, or add your own custom categories
- Enter Business Info - Add your company name and default location
- Start Managing Assets - You're ready to go!
Create an Asset:
- Navigate to "Assets" in the sidebar
- Click "New Asset"
- Fill in asset details (tag, name, category, etc.)
- Add custom fields specific to the category
- Save the asset
Search & Filter:
- Use the search bar to find assets by any text field
- Filter by category, status, or location using the dropdown filters
- Click column headers to sort results
View Modes:
- Toggle between "My Categories", "Favorites", and "All Categories" using the sidebar selector
- Only see categories relevant to your workflow
Create Custom Categories:
- Go to Settings β Category Management
- Click "Manage Categories"
- Add new categories with custom names, icons, and colors
- Set category-specific custom fields (e.g., VIN for vehicles, SKU for inventory)
Category Preferences:
- Mark categories as favorites for quick access
- Hide unused categories from dropdowns
- Reorder categories in your preferred sequence
Enable Tracked Inventory:
- When creating an asset, check "Track Individual Items"
- Enter total quantity (e.g., 50 identical laptops)
- System automatically creates unique QR codes for each item
- Track individual item assignments and locations
Check Out Assets:
- Select asset β Click "Assign"
- Enter assignee name, purpose, and expected return date
- System automatically updates availability
Frontend:
- React 19.2.3
- TypeScript 5.x
- TailwindCSS 3.x
- Zustand 5.0.9 (state management)
- Lucide React (icons)
Backend:
- Electron 39.2.7
- Better-SQLite3 12.5.0
- FTS5 (full-text search)
Build:
- Webpack 5.x
- Electron Forge 7.10.2
Core Tables:
categories- Asset category definitions with custom fieldsassets- Main asset records with FTS5 indexingcustom_field_definitions- Dynamic field schemas per categoryinventory_items- Individual item tracking for bulk assetsassignments- Asset checkout/check-in recordsmaintenance_records- Scheduled and completed maintenanceinventory_transactions- Receive/adjust/transfer operationsactivity_log- Complete audit trailuser_category_preferences- Per-user category visibility settingsbusiness_profile- Company information
Performance Features:
- FTS5 virtual table for sub-100ms full-text search
- 20+ composite and partial indexes
- Custom fields flattened into searchable text
- Incremental auto-vacuum to prevent bloat
- WAL mode for concurrent access
- 64MB cache size for optimal performance
asset-management/
βββ src/
β βββ components/ # React UI components
β β βββ AssetManager.tsx
β β βββ CategoryManager.tsx
β β βββ SetupWizard.tsx
β β βββ ...
β βββ database/ # SQLite schema & migrations
β β βββ db.ts
β β βββ schema.ts
β β βββ migrations.ts
β βββ ipc/ # Electron IPC handlers
β β βββ assets.ts
β β βββ categories.ts
β β βββ categoryPreferences.ts
β β βββ ...
β βββ types/ # TypeScript interfaces
β β βββ api.ts
β βββ utils/ # Utility functions
β β βββ customFieldsIndexer.ts
β βββ index.ts # Electron main process
β βββ preload.ts # IPC bridge
β βββ App.tsx # React root
βββ public/ # Static assets
βββ package.json
βββ README.md
npm start # Start development server with hot reload
npm run package # Build production executable
npm run make # Create distributable installers
npm run lint # Run ESLint
npm run build # Build for productionThe system includes automatic database optimization:
- Automatic Schedule - Runs 30 seconds after startup, then every 24 hours
- Manual Optimization - Available in Settings β Database Optimization
- Operations Performed:
- FTS5 index rebuild
- Custom fields re-indexing
- ANALYZE query planner statistics
- PRAGMA optimize
- Incremental vacuum
| Operation | Dataset Size | Performance | Status |
|---|---|---|---|
| Full-Text Search | 100,000 assets | <100ms | β |
| Paginated Load | Any size | <200ms | β |
| Sort Operation | 100,000 assets | <50ms | β |
| Asset Creation | N/A | <20ms | β |
| Database Size | 100,000 assets | <500MB | β |
| Memory Usage | Any dataset | <250MB | β |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Electron
- UI powered by React and TailwindCSS
- Icons by Lucide
- Database by Better-SQLite3
- π§ Email: support@krubles.com
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
Made with β€οΈ by the Krubles Team
Krubles - Enterprise asset management without the enterprise price tag.