Open Small Shop

A small online shop you own completely – for people for whom Shopify is too expensive, eBay too generic and WordPress/WooCommerce too complicated.

It runs on ordinary, cheap web hosting (PHP and SQLite, no database server), takes payments with PayPal, speaks five languages and ships worldwide. It was built by a non-programmer together with an AI assistant (Claude) for a real shop that sells motorcycle parts from India to the whole world – and it is meant to be adapted the same way.

Provided as is, without support. I am not a programmer and I do not answer coding questions. Get a Claude subscription (or another AI coding assistant) and adapt it yourself: the file CLAUDE.md gives your assistant the map of the code. If you improve it, publish your own version – the MIT licence allows it.

New here? Read the owner's manual – what the shop does and how you run it.

See it live: himalayan-tools.com runs on this code. · Project page: https://opensmallshop.m31.de/


What it does

For your buyers

For you

What it does not have (see the FAQ): VAT/sales-tax calculation, card payment without PayPal (e.g. Stripe), product variants (sizes/colours), a page editor in admin, newsletters, coupons.

What it costs

The software is free (MIT licence). You pay for: web hosting with PHP 8.2+ and SQLite (typically €3–10 per month), your domain, and PayPal's fees per sale. No monthly shop fee.


Installation (about one afternoon with your AI assistant)

You need: web hosting with PHP 8.2 or newer (extensions pdo_sqlite, gd, curl, mbstring, openssl, zip; intl recommended), Apache with .htaccess, an email mailbox at your host (SMTP), a PayPal business account, and an FTP program (e.g. FileZilla or WinSCP).

  1. Download the zip from https://opensmallshop.m31.de/ and unpack it on your computer.
  2. Try it on your computer first (optional, needs PHP installed): cp config.example.php private/config.php, set admin_initial_password, then php -S 127.0.0.1:8080 index.php and open http://127.0.0.1:8080.
  3. Make it yours – with your AI assistant: shop details in data/site.json, logo, products (or later in Admin → Products), the texts in data/pages/ – the terms and the privacy policy are only templates: write your own. Shipping prices and rules: data/zones.json (see "Adapting").
  4. Upload everything to a folder on your host (e.g. shop), and point your domain to it. Folder permissions 755, files 644. The folder private/ stays as it is: its .htaccess locks it.
  5. Config: on the server, copy config.example.php to private/config.php and fill in: env (test first), base_url, your mailbox (SMTP), PayPal sandbox keys and admin_initial_password. Never put this file anywhere public.
  6. Admin: open https://your-shop/admin/, log in with admin_initial_password, choose your own password, then delete admin_initial_password from config.php. Open Server check.
  7. PayPal webhook: in developer.paypal.com → your app → Webhooks → add https://your-shop/api/paypal-webhook.php with the events Checkout order approved, Payment capture completed / denied / refunded / reversed, Customer dispute created. Put the webhook ID into config.php.
  8. Cron job: in your host's control panel, run lib/cron.php every hour (it finishes interrupted payments, cleans up and makes the backups).
  9. Test with PayPal sandbox accounts: orders in several languages and countries, cancel, close the tab after paying, customer account, admin "Completed" with tracking. Then go live: env → live, live PayPal keys and a live webhook, one real order.

Adapting it to your shop

The demo is set up like the original shop: a seller in India, India Post, prices in euros. What you will most likely change – ask your AI assistant, pointing it to CLAUDE.md:

Files

index.php, .htaccess   the shop (front controller, Apache rules)
admin/                 the admin pages
api/                   checkout and PayPal endpoints
lib/                   the code (one file per topic) and two small libraries
templates/             the HTML of the pages
assets/                CSS, JavaScript, fonts
data/                  your shop: site.json, products, pages, translations, shipping zones
images/demo/           demo pictures (replace)
private/               config.php, database, invoices, backups – never public, never shared
tools/                 small command-line helpers

Version

1.0 – 1 November 2026: first public release.

Licence and credits

MIT licence – see LICENSE. Use it, change it, sell with it. No warranty. Third-party parts and their licences: THIRD-PARTY.md. Made by sam2019 with Claude (Anthropic), 2026.