Secure · Automated · Self-Hosted

Sell digital products the simple way.

A secure, self-hosted store with tamper-proof payments, automated email delivery, and a built-in admin panel — configured with a single .env file.

No external database
PayPal verified payments
Single-use download links
Free product support

Everything You Need

Built to sell, out of the box.

No plugins, no subscriptions, no third-party SaaS. Just your store, your files, your revenue.

↔️

Two Ways to Sell

Run a full Shop with a browsable catalog and admin panel, or switch to Single Product mode for a focused, distraction-free sales page. Flip between them in your .env file.

Shop
Catalog
Single
Focused
🔐

Password-Protected Admin

Add, edit, and remove products through a clean dashboard. Changes appear instantly — no page reload needed.

Rate-limited login
💳

Tamper-Proof Payments

Prices are always read from your database on the server — never from the browser. Buyers cannot manipulate what they pay.

server_price === paypal_amount ✓
📦

Protected Downloads

Files are never publicly accessible. Every link is tied to a verified purchase and is single-use only. Customers can re-verify on the Redownload page.

1 link = 1 download
📧

Automatic Email Receipts

Customers get a receipt the moment their purchase is confirmed — with order details and a redownload link. Works with local mail or any SMTP provider.

SMTP Local mail Auto-trigger
🆓

Free Product Support

Products priced at $0.00 skip payment entirely and go straight to the download page. Offer free and paid products side by side.

$0.00 → instant download
🗄️

SQLite Storage

Lightweight SQLite database created automatically on first run. No external database server or configuration needed.

db/store.db — auto-created
📸

Purchase Snapshots

Each transaction records the product name and price at the time of purchase. Renaming or repricing a product never alters historical order records.

💻

Command-Line Tools

Manage products and test email from the terminal. Supports guided prompts or quick one-liners.

npm run products:help

Security First

Locked down by default.

Every surface that could be abused is protected. You shouldn't have to think about it — and with DigitalShelf, you don't.

Server-Side Price Validation

The amount PayPal collected is checked against your database before any purchase is confirmed. Browser manipulation is impossible.

Protected File Storage

Files are stored outside the public directory. They're only served after the store confirms a valid, verified purchase exists.

Single-Use Download Links

Download access is revoked the moment a file is served. The same link cannot be reused. Customers re-verify via Transaction ID or email.

Brute-Force Protection

Admin login is rate-limited per IP. By default, 5 failed attempts within 15 minutes triggers a lockout. Fully configurable via .env.

Dead Simple Setup

Up and running in minutes.

No complicated infrastructure. One config file and you're ready to take payments.

1

Connect your PayPal Business account

Generate your API credentials from your PayPal Business dashboard and drop them into your .env file.

2

Configure your store

Set your store name, mode, admin password, SMTP settings, and pagination — all in one place.

# .env
STORE_MODE=shop
ADMIN_PASSWORD=your_password
PAYPAL_CLIENT_ID=••••••••
SMTP_HOST=smtp.example.com
3

Add your products & start selling

Use the admin panel in your browser, or the CLI for terminal lovers. The database is created automatically.

npm run products:add

Ready to ship?

Self-host your own digital product store with full control over your files, payments, and customer data.