PoopiePay
Docker app from akshaybhandare's Repository
Overview
Readme
View on GitHubβ‘ PoopiePay
A fast, minimalist, and ultra-lightweight UPI QR Code Generator with a persistent file data saver. Designed to run as a single compiled binary or a tiny ~12MB Docker container, perfect for self-hosting on Unraid, Linux, or macOS.
β¨ Features
- β‘ Single Binary: Everything (web server, minimalist UI, and QR engine) is compiled directly into a single ~4.8MB binary with zero runtime dependencies.
- π± 3 Simple Inputs:
- UPI ID: Payee address (e.g.
merchant@okhdfcbankor9876543210@paytm). - Remarks: Transaction note (e.g.
Groceries,Dinner,Invoice #12). - Amount: Transaction amount in INR (
βΉ).
- UPI ID: Payee address (e.g.
- πΎ Automatic File Data Saver:
- Automatically remembers and pre-populates your UPI ID and Remarks so you only have to type the amount for quick counter payments.
- Changes to UPI ID or Remarks immediately persist to
data/data.json(and browserlocalStorage). - Stores recent payment history in the same JSON file.
- π· 1-Tap Customer Experience:
- Generates standard
upi://pay?pa=...&am=...&tn=...&cu=INRQR codes. - Customers scan with Google Pay, PhonePe, Paytm, BHIM, Cred, or Navi and just hit Pay.
- Generates standard
- π¨ Minimalist & Modern UI:
- Live real-time QR generation as you type.
- Quick amount chips (
+βΉ50,+βΉ100,+βΉ500,+βΉ1000,Clear). - Copy UPI Deep-Link button for messaging or sharing.
- Download High-Res QR button (PNG).
- Clean collapsible transaction history.
- π¦ Hostable on Unraid:
- Maps to
/mnt/user/appdata/poopiepay:/data. - Docker container size is only ~12MB!
- Maps to
π Quick Start
Option 1: Run Pre-compiled Binary Directly (No Docker required)
On macOS:
PORT=8080 ./poopiepay
On Linux (x86_64 / Unraid console):
PORT=8080 ./poopiepay-linux-amd64
On ARM Linux (Raspberry Pi / ARM Unraid):
PORT=8080 ./poopiepay-linux-arm64
Open your browser to: http://localhost:8080
Option 2: Docker / Docker Compose
Run with docker-compose:
docker compose up -d
Or run directly with Docker:
docker run -d \
--name poopiepay \
--restart unless-stopped \
-p 8080:8080 \
-v $(pwd)/data:/data \
poopiepay
π₯οΈ Unraid Deployment Guide
In Unraid:
- Open the Docker tab and click Add Container.
- Fill in:
- Name:
poopiepay - Repository: Build locally or use your image tag.
- Port: Host
8080β Container8080. - Path: Host
/mnt/user/appdata/poopiepayβ Container/data.
- Name:
- Click Apply.
- Access via
http://<your-unraid-ip>:8080.
Your settings and recent payment history are saved in /mnt/user/appdata/poopiepay/data.json.
π οΈ Building from Source
Requirements: Go 1.20+ (standard library only).
# Build native binary and Linux cross-compilations in one command:
./build.sh
This generates:
poopiepay(Native macOS Mach-O executable)poopiepay-linux-amd64(Static Linux ELF binary for Unraid/x86_64)poopiepay-linux-arm64(Static Linux ELF binary for ARM64)
π Project Structure
PoopiePay/
βββ main.go # Single Go web server & file data saver (stdlib only)
βββ static/
β βββ index.html # Modern minimalist single-page app
β βββ qrcode.min.js # Bundled 19KB client QR engine (no CDN required)
βββ data/
β βββ data.json # Persistent JSON file storage
βββ Dockerfile # Multi-stage build producing ~12MB container
βββ docker-compose.yml # Ready for Docker / Unraid
βββ build.sh # Single-command cross-compiler
βββ PLANNING.md # Architecture and specification
βββ README.md # Documentation
π Security & Performance
- Zero pip / npm bloat: 100% built on Go standard library.
- Atomic file writes: Uses temporary files and atomic renames to prevent file corruption during power cuts or server restarts.
- Air-gapped & Offline: All static assets are embedded into the binary. No external CDN requests needed at runtime.
Related apps
Explore more like this
Explore allDetails
ghcr.io/akshaybhandare/poopiepay:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Port used by the PoopiePay web interface.
- Target
- 8080
- Default
- 8080
Persistent directory for storing PoopiePay data.json (saved UPI ID, remarks, and recent transactions).
- Target
- /data
- Default
- /mnt/user/appdata/poopiepay