A .NET MAUI Android app for managing electronic components stored in AideTek compartment storage boxes.
Published with permission from AideTek.
BOX-ALL is a mobile inventory companion for anyone using AideTek's compartment storage boxes (BOXALL-144, BOXALL-96-AS, and others) to organize electronic components. The app provides a digital twin of your physical storage: a color-coded grid that mirrors your box layout, making it easy to see at a glance what's stored where, what's running low, and where empty compartments are.
It replaces spreadsheet-based tracking with a purpose-built mobile tool designed for workshop and lab use.
- Grid visualization — Canvas-rendered compartment grids that match your physical box layout. BOXALL-144 (12×12 uniform) and BOXALL-96 (mixed: 72 small + 12 large + 12 medium) are fully supported. Renders 144 compartments in under 100ms.
- Component management — Add, edit, delete, relocate components. Track part number, description, manufacturer, category, quantity, minimum stock level, supplier info, value, package, unit price, and more.
- Stock-level color coding — Green (in stock), yellow (low stock), red (out of stock), dark blue (empty). Visible on the grid at a glance.
- Multi-box support — Manage multiple boxes from a single dashboard with per-box statistics.
- Bulk import from Mouser orders — A two-stage workflow using Excel + Script Lab to prepare orders, then import them on the phone (see below).
- Sync export — Export your entire inventory as a JSON snapshot for integration with the Excel-side tooling.
- Offline-first, local storage — All data stored as JSON in app-private storage. No cloud account required. No internet needed.
| Box Type | Layout | Compartments | Status |
|---|---|---|---|
| BOXALL-144 | 12 × 12 uniform grid | 144 | ✅ Fully supported |
| BOXALL-96-AS | Mixed grid (small + large + medium) | 96 | ✅ Fully supported |
| BOXALL-48 | — | 48 | 🔜 Planned |
| BOXALL-40 | — | 40 | 🔜 Planned |
| BOXALL-24 | — | 24 | 🔜 Planned |
Anti-static (AS) variants use the same grid layout as their standard counterparts.
BOX-ALL includes a two-tier import system optimized for processing supplier orders. The idea is simple: it's much easier to assign box names and compartment positions on a desktop than one-by-one on a phone. The computer prepares the data; the phone imports it.
Step 1 — Export sync file (Phone)
Open the BOX-ALL app → Dashboard → "Synchronize". This generates boxall_status.json in /Documents/BOX-ALL/export/ containing your current inventory. Transfer it to your PC via USB or cloud drive. (Skip this step on your very first import.)
Step 2 — Prepare the order (Computer)
Open your Mouser order file (.xls or .xlsx) in Excel. Run the Script Lab snippet. If you have a sync file, load it — already-imported parts will be detected and shown in green with their current location pre-filled. New parts are highlighted in yellow.
Step 3 — Assign positions (Computer)
For each new component, pick a BoxName and Position from the dropdown lists. Click "Validate" to check for conflicts and duplicates.
Step 4 — Save as CSV (Computer)
Click "Save as CSV". The snippet generates a file named YYYY-MM-DD_mouser_ORDERNUM.csv. Transfer it to your phone.
Step 5 — Import (Phone)
Open the BOX-ALL app → "Import Parts" → pick the CSV file. The app validates each row and shows a color-coded preview: ✅ Ready,
Step 6 — Sync for next time (Phone) Run "Synchronize" again to update the sync file. Next time you place a Mouser order, the Script Lab snippet will know what's already in your boxes.
The repository includes a Script Lab snippet (BOX-ALL_Mouser_Import.ts) that runs inside Excel. Script Lab is a free Microsoft Office add-in for running JavaScript/TypeScript directly in Excel.
What it does:
- Reads a Mouser order file (
.xlsor.xlsx) using SheetJS - Creates a "BOX-ALL Import" worksheet with 18 standardized columns
- Optionally loads a
boxall_status.jsonsync file from the phone to detect already-imported parts - Highlights
BoxNameandPositioncolumns for manual assignment with dropdown validation - Validates the worksheet for conflicts and duplicates
- Saves the result as a properly formatted CSV file
Re-order detection: When you load a sync file, parts that are already stored in a box (matched by SalesOrderNumber + SupplierPartNumber) are shown in green with their current location pre-filled. Only new parts need manual assignment.
Dropdown validation: BoxName shows all boxes from the sync file (sorted A→Z). Position shows valid positions for all box types. Category provides a predefined list for consistency.
The app's bulk import reads BOX-ALL-format CSV files (not raw Mouser CSVs) and provides a preview before importing:
- Ready — Box exists, position is valid and empty → will be imported
- Conflict — Position is already occupied → user can choose to overwrite
- Skip — BoxName or Position not filled in
- Invalid — Box doesn't exist or position format is wrong
After import, run Sync Export from the dashboard to generate an updated boxall_status.json for the next order cycle.
The CSV uses 18 columns:
BoxName, Position, PartNumber, Description, Manufacturer, Category,
Quantity, MinStock, Supplier, SupplierPartNumber, Value, Package,
Tolerance, Voltage, UnitPrice, Notes, DatasheetUrl, SalesOrderNumber
You can create these manually or use the Script Lab snippet to generate them from Mouser orders.
- Visual Studio 2022 with .NET MAUI workload
- .NET 9.0 SDK
- Android device or emulator (API 34+)
# Clone the repository
git clone https://github.com/YOUR_USERNAME/BOX-ALL.git
# Open in Visual Studio 2022
# Set the Android device as the target
# Build and deploy (F5)- Install Script Lab in Excel
- Open Script Lab → Import
- Paste the contents of
BOX-ALL_Mouser_Import.ts - Open a Mouser order file in Excel
- Run the snippet
- Framework: .NET MAUI 9.0 (Android target)
- Pattern: MVVM with CommunityToolkit.Mvvm
- Storage: JSON files in app-private directory (no SQLite, no cloud)
- Grid rendering: Custom
IDrawablecanvas rendering for performance - Navigation: Shell-based with flyout menu
- DI: Services registered as singletons (data) and transient (ViewModels, Pages)
BOX-ALL/
├── Models/ # Component, BoxData, BoxRegistryItem, etc.
├── Services/ # FileService, BoxRegistryService, BoxDataService,
│ # ExportImportService, SyncExportService, BulkCsvParserService
├── ViewModels/ # MVVM ViewModels with CommunityToolkit
├── Views/ # XAML pages (Dashboard, BoxView, AddComponent, Import, etc.)
├── Drawables/ # GridDrawable (144), GridDrawable96 — canvas renderers
├── Helpers/ # PositionHelper — compartment position generation/validation
└── Resources/ # Fonts (Ubuntu family), colors, images, splash screen
App-private storage:
├── boxes.json # Box registry (list of all boxes)
├── settings.json # App preferences
└── boxes/
└── box_xxxx_name.json # Individual box data with all components
Public Documents (for sync):
└── Documents/BOX-ALL/export/
└── boxall_status.json # Sync snapshot for Script Lab integration
Dashboard → Grid View → Component Details
| Package | Version | Purpose |
|---|---|---|
| .NET MAUI | 9.0 | Cross-platform UI framework |
| CommunityToolkit.Mvvm | 8.4.0 | MVVM source generators and helpers |
| System.Text.Json | built-in | JSON serialization |
The Script Lab snippet uses SheetJS (xlsx) for reading Mouser .xls/.xlsx files.
- Additional box types (BOXALL-48, BOXALL-40, BOXALL-24)
- Search across all boxes by part number, description, or category
- Settings page
- Component photos / barcode scanning
- Position dropdown filtering by box type in Script Lab
- Cloud sync (optional)
AideTek manufactures compartment storage boxes designed for organizing small electronic components like resistors, capacitors, ICs, and connectors. Their BOXALL series features snap-close lids, ESD-safe variants, and standardized grid layouts that make them popular among electronics hobbyists and professionals.
This app is published with AideTek's permission and is not affiliated with or endorsed by AideTek.
MIT License — see LICENSE for details.
- AideTek for permission to reference their product line
- Script Lab by Microsoft for enabling the Excel integration
- SheetJS for XLS/XLSX parsing in the browser



