Skip to content

DumbWareio/DumbPad

Repository files navigation

DumbPad

A stupid simple, no auth (unless you want it!), modern notepad application with auto-save functionality and dark mode support.

image

image

Features

  • Simple, clean interface
  • Auto-saving
  • Dark mode support
  • Responsive design
  • Docker support
  • Optional PIN protection (4-10 digits)
  • File-based storage
  • Data persistence across updates

Quick Start

Using Docker (Recommended)

# Pull the latest image
docker pull dumbwareio/dumbpad:latest

# Run without PIN protection
docker run -p 3000:3000 \
  -v "$(pwd)/data:/app/data" \
  dumbwareio/dumbpad

# Run with PIN protection
docker run -p 3000:3000 \
  -v "$(pwd)/data:/app/data" \
  -e DUMBPAD_PIN=1234 \
  dumbwareio/dumbpad

Running Locally

  1. Clone the repository:
git clone https://github.com/dumbwareio/dumbpad.git
cd dumbpad
  1. Install dependencies:
npm install
  1. Set up environment:
cp .env.example .env
# Edit .env as needed
  1. Start the server:
npm start

The application will be available at http://localhost:3000

Environment Variables

Copy .env.example to .env and configure:

Variable Description Default Required
PORT Server port 3000 No
DUMBPAD_PIN 4-10 digit PIN protection None No

Security Features

PIN Protection

  • Optional 4-10 digit PIN
  • Brute force protection:
    • 5 attempts maximum
    • 15-minute lockout after failed attempts
    • IP-based tracking
    • Constant-time comparison
    • Secure cookie storage

Data Security

  • File-based storage in data directory
  • Data directory excluded from version control
  • Secure volume mounting in Docker

Building from Source

  1. Clone and build:
git clone https://github.com/dumbwareio/dumbpad.git
cd dumbpad
docker build -t dumbwareio/dumbpad:latest .
  1. Run your local build:
docker run -p 3000:3000 \
  -v "$(pwd)/data:/app/data" \
  dumbwareio/dumbpad:latest

Data Persistence

Your notes are stored in the data directory, which is:

  • Excluded from version control (via .gitignore)
  • Preserved when updating the application
  • Mounted as a volume when running with Docker

To ensure your notes persist across updates:

  1. If running locally:

    # First time setup
    mkdir -p data
    touch data/.gitkeep
    
    # When updating
    git stash        # Stash any local changes
    git pull        # Pull latest changes
    git stash pop   # Restore local changes
  2. If running with Docker:

    # First time setup
    mkdir -p data
    
    # Running with proper volume mount
    docker run -p 3000:3000 \
      -v "$(pwd)/data:/app/data" \
      dumbwareio/dumbpad:latest
    
    # When updating
    docker pull dumbwareio/dumbpad:latest
    # Then run again with the same volume mount

⚠️ Important: Never delete the data directory when updating! This is where all your notes are stored.

Usage

  • Just start typing! Your notes will be automatically saved.
  • Use the theme toggle in the top-right corner to switch between light and dark mode.
  • Press Ctrl+S (or Cmd+S on Mac) to force save.
  • Auto-saves every 10 seconds while typing.
  • Create multiple notepads with the + button.
  • Download notepads as .txt files.
  • If PIN protection is enabled, you'll need to enter the PIN to access the app.

Technical Details

  • Backend: Node.js with Express
  • Frontend: Vanilla JavaScript
  • Storage: File-based storage in data directory
  • Styling: Modern CSS with CSS variables for theming
  • Security: Constant-time PIN comparison, brute force protection

Links

Contributing

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/my-feature
  3. Commit your changes: git commit -am 'Add my feature'
  4. Push to the branch: git push origin feature/my-feature
  5. Submit a pull request