Skip to content

DumbWareio/DumbBudget

Repository files navigation

DumbBudget

A simple, secure personal budgeting app with PIN protection. Track your income and expenses with a clean, modern interface.

image

Features

  • 🔒 PIN-protected access
  • 💰 Track income and expenses
  • 📊 Real-time balance calculations
  • 🏷️ Categorize transactions
  • 📅 Date range filtering
  • 🔄 Sort by date or amount
  • 📱 Responsive design
  • 🌓 Light/Dark theme
  • 📤 Export to CSV
  • 🔍 Filter transactions by type
  • 💱 Multi-currency support
  • 🌐 PWA Support

Supported Currencies

DumbBudget supports the following currencies:

  • USD (US Dollar) 🇺🇸
  • EUR (Euro) 🇪🇺
  • GBP (British Pound) 🇬🇧
  • JPY (Japanese Yen) 🇯🇵
  • AUD (Australian Dollar) 🇦🇺
  • CAD (Canadian Dollar) 🇨🇦
  • CHF (Swiss Franc) 🇨🇭
  • CNY (Chinese Yuan) 🇨🇳
  • HKD (Hong Kong Dollar) 🇭🇰
  • NZD (New Zealand Dollar) 🇳🇿
  • MXN (Mexican Peso) 🇲🇽
  • RUB (Russian Ruble) 🇷🇺
  • SGD (Singapore Dollar) 🇸🇬
  • KRW (South Korean Won) 🇰🇷
  • INR (Indian Rupee) 🇮🇳
  • BRL (Brazilian Real) 🇧🇷
  • ZAR (South African Rand) 🇿🇦
  • TRY (Turkish Lira) 🇹🇷
  • PLN (Polish Złoty) 🇵🇱
  • SEK (Swedish Krona) 🇸🇪
  • NOK (Norwegian Krone) 🇳🇴
  • DKK (Danish Krone) 🇩🇰
  • IDR (Indonesia Rupiah) 🇮🇩

Set your preferred currency using the CURRENCY environment variable (defaults to USD if not set).

Using Docker

docker run -d \
  -p 3000:3000 \
  -v /path/to/your/data:/app/data \
  -e DUMBBUDGET_PIN=12345 \
  -e CURRENCY=USD \
  -e BASE_URL=http://localhost:3000 \
  -e SITE_TITLE='My Account' \
  dumbwareio/dumbbudget:latest
services:
  dumbbudget:
    image: dumbwareio/dumbbudget:latest
    container_name: dumbbudget
    restart: unless-stopped
    ports:
      - ${DUMBBUDGET_PORT:-3000}:3000
    volumes:
      - ${DUMBBUDGET_DATA_PATH:-./data}:/app/data
    environment:
      - DUMBBUDGET_PIN=${DUMBBUDGET_PIN:-} # PIN to access the site
      - BASE_URL=${DUMBBUDGET_BASE_URL:-http://localhost:3000} # URL to access the site
      - CURRENCY=${DUMBBUDGET_CURRENCY:-USD} # Supported Currency Code: https://github.com/DumbWareio/DumbBudget?tab=readme-ov-file#supported-currencies
      - SITE_TITLE=${DUMBBUDGET_SITE_TITLE:-DumbBudget} # Name to show on site
      - INSTANCE_NAME=${DUMBBUDGET_INSTANCE_NAME:-} # Name of instance/account
      # (OPTIONAL)
      # Restrict origins - ex: https://subdomain.domain.tld,https://auth.proxy.tld,http://internalip:port' (default is '*')
      # - ALLOWED_ORIGINS=${DUMBBUDGET_ALLOWED_ORIGINS:-http://localhost:3000}
    # healthcheck:
    #   test: wget --spider -q  http://127.0.0.1:3000
    #   start_period: 20s
    #   interval: 20s
    #   timeout: 5s
    #   retries: 3

Note: Replace /path/to/your/data with the actual path where you want to store your transaction data on the host machine.

Environment Variables

Variable Description Required Default Example
DUMBBUDGET_PIN PIN code for accessing the application Yes - 12345
PORT Port number for the server No 3000 8080
CURRENCY Currency code for transactions No USD EUR
BASE_URL Base URL for the application No http://localhost:PORT https://budget.example.com
SITE_TITLE Allows you to name each instance should you have multiple. No - My Account

Development Setup

  1. Clone the repository:
git clone https://github.com/DumbWareio/DumbBudget.git
cd DumbBudget
  1. Install dependencies:
npm install
  1. Create a .env file:
DUMBBUDGET_PIN=12345
PORT=3000
NODE_ENV=development
BASE_URL=http://localhost:3000
CURRENCY=USD
SITE_TITLE='DumbBudget'
INSTANCE_NAME='My Account'
ALLOWED_ORIGINS=* # Restrict origins - ex: https://subdomain.domain.tld,https://auth.proxy.tld,http://internalip:port' (default is '*')
  1. Start the development server:
npm run dev
  1. Open http://localhost:3000 in your browser

Building from Source

# Build the Docker image
docker build -t dumbwareio/dumbbudget:latest .

# Create a directory for persistent data
mkdir -p ~/dumbbudget-data

# Run the container
docker run -d \
  -p 3000:3000 \
  -v ~/dumbbudget-data:/app/data \
  -e DUMBBUDGET_PIN=12345 \
  -e BASE_URL=http://localhost:3000 \
  -e SITE_TITLE='My Account' \
  dumbwareio/dumbbudget:latest

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Security

DumbBudget includes several security features:

  • PIN protection for access
  • Rate limiting on PIN attempts
  • Temporary lockout after failed attempts
  • No sensitive data stored in browser storage
  • Secure session handling

Support

Support the Project

Buy Me A Coffee

Made with ❤️ by DumbWare.io

About

A stupid simple budget app!

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published