A stupid simple asset tracker for keeping track of your physical assets, their components, and applicable warranties and routine maintenance.
- Docker (recommended)
- Node.js >=20.0.0 (for local development)
docker run -p 3000:3000 -v ./data:/app/data dumbwareio/dumbassets:latest
- Go to https://localhost:3000
- Add assets, upload photos/receipts, and track warranties
- Celebrate how dumb easy this was
Create a docker-compose.yml
file:
services:
dumbassets:
container_name: dumbassets
image: dumbwareio/dumbassets:latest
restart: unless-stopped
ports:
- ${DUMBASSETS_PORT:-3000}:3000
volumes:
- ${DUMBASSETS_DATA_PATH:-./data}:/app/data
environment:
NODE_ENV: ${DUMBASSETS_NODE_ENV:-production}
DEBUG: ${DUMBASSETS_DEBUG:-true}
SITE_TITLE: ${DUMBASSETS_SITE_TITLE:-DumbAssets}
BASE_URL: ${DUMBASSETS_BASE_URL:-https://localhost:3000}
DUMBASSETS_PIN: ${DUMBASSETS_PIN:-1234}
ALLOWED_ORIGINS: ${DUMBASSETS_ALLOWED_ORIGINS:-*}
APPRISE_URL: ${DUMBASSETS_APPRISE_URL:-}
CURRENCY_CODE: ${DUMBASSETS_CURRENCY_CODE:-USD}
CURRENCY_LOCALE: ${DUMBASSETS_CURRENCY_LOCALE:-en-US}
# ...other env vars
Then run:
docker compose up -d
- Go to https://localhost:3000
- Add and manage your assets
git clone https://github.com/yourusername/DumbAssets.git
cd DumbAssets
npm install
npm start
Open your browser to https://localhost:3000
- π Track assets with detailed info (model, serial, warranty, etc.)
- π§© Add components and sub-components
- πΌοΈ Upload and store photos and receipts
- π Search by name, model, serial, or description
- π·οΈ Hierarchical organization of components
- π Warranty expiration notifications (configurable)
- π§ Maintenance event notifications
- π·οΈ Flexible tagging system for better organization
- π Built in Apprise notification integration
- π Light/Dark mode with theme persistence
- π‘οΈ PIN authentication with brute force protection
- π¦ Docker support for easy deployment
- π Direct Asset Linking: Notifications include links to the specific asset
Variable | Description | Default | Required |
---|---|---|---|
PORT | Server port | 3000 | No |
DUMBASSETS_PIN | PIN protection (4+ digits) | None | No |
APPRISE_URL | Apprise URL for notifications | None | No |
TZ | Container timezone | America/Chicago | No |
BASE_URL | Base URL for the application | https://localhost | No |
SITE_TITLE | Site title shown in browser tab and header | DumbAssets | No |
ALLOWED_ORIGINS | Origins allowed to visit your instance | '*' | No |
DEMO_MODE | Enables read-only mode | false | No |
CURRENCY_CODE | ISO 4217 currency code for price formatting | USD | No |
CURRENCY_LOCALE | Locale for currency formatting | en-US | No |
Tip
Apprise integration is built-in to DumbAssets, allowing you to simply add your Discord/ntfy/Telegram/etc link WITHOUT having to run Apprise as a separate service!
π° Currency Configuration
DumbAssets supports multiple currencies via environment variables. The application uses the standard ISO 4217 currency codes and locale formatting.
CURRENCY_CODE
- Default:
USD
- Description: The ISO 4217 currency code for price formatting
- Examples:
USD
,EUR
,GBP
,CAD
,AUD
,JPY
CURRENCY_LOCALE
- Default:
en-US
- Description: The locale for currency formatting (affects number formatting, decimal separators, etc.)
- Examples:
en-US
,en-GB
,de-DE
,fr-FR
,ja-JP
US Dollar (Default)
# No configuration needed - this is the default
Euro (Germany)
export CURRENCY_CODE=EUR
export CURRENCY_LOCALE=de-DE
British Pound
export CURRENCY_CODE=GBP
export CURRENCY_LOCALE=en-GB
Canadian Dollar
export CURRENCY_CODE=CAD
export CURRENCY_LOCALE=en-CA
Japanese Yen
export CURRENCY_CODE=JPY
export CURRENCY_LOCALE=ja-JP
Docker Compose
services:
dumbassets:
environment:
- CURRENCY_CODE=EUR
- CURRENCY_LOCALE=de-DE
Docker Run
docker run -e CURRENCY_CODE=EUR -e CURRENCY_LOCALE=de-DE dumbassets
Different locales will format the same amount differently:
Locale | Currency | Amount: 1234.56 | Formatted Output |
---|---|---|---|
en-US | USD | 1234.56 | $1,234.56 |
de-DE | EUR | 1234.56 | 1.234,56 β¬ |
en-GB | GBP | 1234.56 | Β£1,234.56 |
fr-FR | EUR | 1234.56 | 1 234,56 β¬ |
ja-JP | JPY | 1234.56 | Β₯1,235 |
Any valid ISO 4217 currency code is supported. Common examples include:
- USD - US Dollar
- EUR - Euro
- GBP - British Pound
- CAD - Canadian Dollar
- AUD - Australian Dollar
- JPY - Japanese Yen
- CHF - Swiss Franc
- CNY - Chinese Yuan
- INR - Indian Rupee
- BRL - Brazilian Real
- MXN - Mexican Peso
- SEK - Swedish Krona
- NOK - Norwegian Krone
- DKK - Danish Krone
For a complete list, refer to the ISO 4217 standard.
All data is stored in JSON files in the /data
directory:
/data/Assets.json
- All asset data/data/SubAssets.json
- All component data/data/Images
- Uploaded photos/data/Receipts
- Uploaded receipts/data/config.json
- Notification and app config
- Variable-length PIN support (4+ digits)
- Constant-time PIN comparison
- Brute force protection (lockout after too many attempts)
- Secure session cookies
- No client-side PIN storage
- Rate limiting
- Backend: Node.js (>=14.0.0) with Express
- Frontend: Vanilla JavaScript (ES6+)
- Container: Docker with Alpine base
- Notifications: Apprise integration (via Python)
- Uploads: Multer for file handling
- Scheduling: node-cron for warranty & Maintenance notifications
- express: Web framework for Node.js
- multer: File upload handling and multipart/form-data parsing
- apprise: Notification system integration for alerts
- cors: Cross-origin resource sharing middleware
- dotenv: Environment variable configuration management
- express-rate-limit: Rate limiting middleware for API protection
- express-session: Session management and authentication
- cookie-parser: Cookie parsing middleware
- node-cron: Task scheduling for notifications
- uuid: Unique ID generation for assets
- sharp: Image processing and optimization
- compression: Response compression middleware
- helmet: Security headers middleware
- fs-extra: Enhanced filesystem operations
- path: Path manipulation utilities
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes using Conventional Commits
- Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
See the Development Guide for local setup and guidelines.
Made with β€οΈ by DumbWare.io