# DumbAssets **Repository Path**: liujucai/DumbAssets ## Basic Information - **Project Name**: DumbAssets - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-19 - **Last Updated**: 2025-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DumbAssets A stupid simple asset tracker for keeping track of your physical assets, their components, and applicable warranties and routine maintenance.

GitHub package.json version Docker Image Version Docker Pulls License GitHub Actions Workflow Status Static Badge

Explore the Demo

--- ## Table of Contents - [Quick Start](#quick-start) - [Features](#features) - [Configuration](#configuration) - [Security](#security) - [Technical Details](#technical-details) - [Contributing](#contributing) - [License](#license) --- ## Quick Start ### Prerequisites - Docker (recommended) - Node.js >=20.0.0 (for local development) ### Option 1: Docker (For Dummies) ```sh docker run -p 3000:3000 -v ./data:/app/data dumbwareio/dumbassets:latest ``` 1. Go to [http://localhost:3000](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: ```yaml 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: ```sh docker compose up -d ``` 1. Go to [http://localhost:3000](http://localhost:3000) 2. Add and manage your assets ### Option 3: Running Locally (For Developers) ```sh git clone https://github.com/yourusername/DumbAssets.git cd DumbAssets npm install npm start ``` Open your browser to [http://localhost:3000](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!
💰 Currency Configuration 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)** ```bash # No configuration needed - this is the default ``` **Euro (Germany)** ```bash export CURRENCY_CODE=EUR export CURRENCY_LOCALE=de-DE ``` **British Pound** ```bash export CURRENCY_CODE=GBP export CURRENCY_LOCALE=en-GB ``` **Canadian Dollar** ```bash export CURRENCY_CODE=CAD export CURRENCY_LOCALE=en-CA ``` **Japanese Yen** ```bash export CURRENCY_CODE=JPY export CURRENCY_LOCALE=ja-JP ``` #### Docker Configuration **Docker Compose** ```yaml services: dumbassets: environment: - CURRENCY_CODE=EUR - CURRENCY_LOCALE=de-DE ``` **Docker Run** ```bash 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](https://en.wikipedia.org/wiki/ISO_4217).
### 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](https://www.conventionalcommits.org/) 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 Buy Me A Coffee Made with ❤️ by [DumbWare.io](https://dumbware.io)