SkillAgentSearch skills...

DumbAssets

A Stupid Simple Asset Tracker

Install / Use

/learn @DumbWareio/DumbAssets
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

DumbAssets

A stupid simple asset tracker for keeping track of your physical assets, their components, and applicable warranties and routine maintenance.

<p align="center"> <img src="https://img.shields.io/github/package-json/v/dumbwareio/dumbassets" alt="GitHub package.json version" /> <a href="https://hub.docker.com/r/dumbwareio/dumbassets" target="_blank"><img src="https://img.shields.io/docker/v/dumbwareio/dumbassets?logo=docker&label=Docker" alt="Docker Image Version" /></a> <img src="https://img.shields.io/docker/pulls/dumbwareio/dumbassets" alt="Docker Pulls" /> <img src="https://img.shields.io/badge/license-GPL--3.0-blue.svg" alt="License" /> <img src="https://img.shields.io/github/actions/workflow/status/dumbwareio/dumbassets/docker-publish.yml" alt="GitHub Actions Workflow Status" /> <a href="https://dumbassets.dumbware.io/" target="_blank"> <img alt="Static Badge" src="https://img.shields.io/badge/demo-site?label=dumbassets" /> </a> </p> <p align="center"> <img width=75% src="https://github.com/user-attachments/assets/4c90541b-fb7d-44ac-bacb-064422abd529" /> </p> <p align="center"> <a href="https://dumbassets.dumbware.io" target="_blank">Explore the Demo</a> </p>

Table of Contents


Quick Start

Prerequisites

  • Docker (recommended)
  • Node.js >=20.0.0 (for local development)

Option 1: Docker (For Dummies)

docker run -p 3000:3000 -v ./data:/app/data dumbwareio/dumbassets:latest
  1. Go to http://localhost:3000
  2. Add assets, upload photos/receipts, and track warranties
  3. Celebrate how dumb easy this was

Option 2: Docker Compose (For Dummies who like customizing)

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:-http://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
  1. Go to http://localhost:3000
  2. Add and manage your assets

Option 3: Running Locally (For Developers)

git clone https://github.com/yourusername/DumbAssets.git
cd DumbAssets
npm install
npm start

Open your browser to http://localhost:3000


Features

  • 🚀 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

Configuration

Environment Variables

| 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 | http://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!

<details> <summary><strong>💰 Currency Configuration</strong></summary>

DumbAssets supports multiple currencies via environment variables. The application uses the standard ISO 4217 currency codes and locale formatting.

Environment Variables

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

Usage Examples

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 Configuration

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

Currency Format Examples

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 |

Supported Currency Codes

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.

</details>

Data Storage

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

Security

  • 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

Technical Details

Stack

  • 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

Dependencies

  • 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

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes using Conventional Commits
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See the Development Guide for local setup and guidelines.


Support the Project

<a href="https://www.buymeacoffee.com/dumbware" target="_blank"> <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="60"> </a>

Made with ❤️ by DumbWare.io

Related Skills

View on GitHub
GitHub Stars1.1k
CategoryDevelopment
Updated2d ago
Forks53

Languages

JavaScript

Security Score

100/100

Audited on Mar 25, 2026

No findings