{"id":48920880,"url":"https://github.com/shurco/mycart","last_synced_at":"2026-06-04T13:30:36.664Z","repository":{"id":183525589,"uuid":"669522902","full_name":"shurco/mycart","owner":"shurco","description":"🛒 myCart - shopping cart in 1 file with card and cryptocurrency payment support","archived":false,"fork":false,"pushed_at":"2026-04-18T10:20:01.000Z","size":53694,"stargazers_count":348,"open_issues_count":19,"forks_count":51,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-19T10:04:33.214Z","etag":null,"topics":["basket","cart","commerce","cryptocurrency-exchanges","e-commerce","ecommerce","ecommerce-platform","go","golang","hacktoberfest","payment","paypal","self-hosted","shop","shopping-cart","stripe","stripe-payments","svelte"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shurco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"shurco"}},"created_at":"2023-07-22T14:55:38.000Z","updated_at":"2026-04-18T10:20:06.000Z","dependencies_parsed_at":"2023-07-24T21:11:37.806Z","dependency_job_id":"6dc1888c-282f-4eb2-90c2-9384c34653b7","html_url":"https://github.com/shurco/mycart","commit_stats":null,"previous_names":["shurco/litecart","shurco/cartka","shurco/mycart"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/shurco/mycart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shurco%2Fmycart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shurco%2Fmycart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shurco%2Fmycart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shurco%2Fmycart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shurco","download_url":"https://codeload.github.com/shurco/mycart/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shurco%2Fmycart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33907693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["basket","cart","commerce","cryptocurrency-exchanges","e-commerce","ecommerce","ecommerce-platform","go","golang","hacktoberfest","payment","paypal","self-hosted","shop","shopping-cart","stripe","stripe-payments","svelte"],"created_at":"2026-04-17T05:00:38.283Z","updated_at":"2026-06-04T13:30:36.645Z","avatar_url":"https://github.com/shurco.png","language":"Go","funding_links":["https://github.com/sponsors/shurco","https://developer.paypal.com/"],"categories":["Software"],"sub_categories":["E-commerce"],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"#\" target=\"_blank\" rel=\"noopener\"\u003e\n        \u003cimg src=\"https://github.com/shurco/mycart/blob/main/.github/media/banner.png\" alt=\"myCart - shopping-cart in 1 file\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\n\u003ca href=\"https://github.com/shurco/mycart/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/shurco/mycart?sort=semver\u0026label=Release\u0026color=651FFF\"\u003e\u003c/a\u003e\n\u003ca href=\"https://goreportcard.com/report/github.com/shurco/mycart\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/shurco/mycart\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.codefactor.io/repository/github/shurco/mycart\"\u003e\u003cimg src=\"https://www.codefactor.io/repository/github/shurco/mycart/badge\" alt=\"CodeFactor\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/shurco/mycart/actions/workflows/release.yml\"\u003e\u003cimg src=\"https://github.com/shurco/mycart/actions/workflows/release.yml/badge.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/shurco/mycart/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\"\u003e\u003c/a\u003e\n\n\u003e [!Important]\n\u003e This repository is being renamed.  \n\u003eThe project was originally published under the name litecart. I recently received a trademark-related claim regarding the use of this name. To avoid confusion and potential legal issues, the project will continue under a new name.  \n\u003eThe codebase itself is not changing. Only the project name, repository name, package identifiers, and related references will be updated.  \n\u003eThis repository will remain available for some time with redirects and notes pointing to the new location so existing users have time to migrate.  \n\u003eIf your setup depends on the current repository name, please update your references once the rename is complete.  \n\u003eThank you to everyone who has used the project and contributed feedback.  \n\n\u003e [!NOTE]\n\u003e **Disclaimer:** Not affiliated with any similarly named projects or brands.\n\u003e This is an independent open source project licensed under the MIT License.\n\n\n## 🛒\u0026nbsp;\u0026nbsp;What is myCart?\n\nmyCart is an open source shopping-cart in 1 file of embedded database (SQLite), convenient dashboard UI and simple site.\nFormerly known as **litecart** (legacy project name kept here for discoverability in search).\n\n\u003e [!WARNING]\n\u003e Current major version is zero (`v0.x.x`) to accommodate rapid development and fast iteration while getting early feedback from users. Please keep in mind that myCart is still under active development and therefore full backward compatibility is not guaranteed before reaching v1.0.0.\n\n### Video Example\n![Example](https://github.com/shurco/mycart/blob/main/.github/media/demo.gif)\n\n### Admin Panel Screenshots\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/shurco/mycart/blob/main/.github/media/screenshots/products.png\" width=\"270\"\u003e\n  \u003cimg src=\"https://github.com/shurco/mycart/blob/main/.github/media/screenshots/product-edit.png\" width=\"270\"\u003e\n  \u003cimg src=\"https://github.com/shurco/mycart/blob/main/.github/media/screenshots/carts.png\" width=\"270\"\u003e\n  \u003cimg src=\"https://github.com/shurco/mycart/blob/main/.github/media/screenshots/pages.png\" width=\"270\"\u003e\n  \u003cimg src=\"https://github.com/shurco/mycart/blob/main/.github/media/screenshots/settings.png\" width=\"270\"\u003e\n\u003c/p\u003e\n\n\n## 🏆\u0026nbsp;\u0026nbsp;Features\n\n🚀 **Simple and Fast**: Enjoy a one-click installation process that gets your store up and running quickly, saving you time and effort.  \n\n💰 **Support for Popular Payment Systems**: Accept payments seamlessly with support for popular payment systems, ensuring a smooth checkout experience for your customers.  \n\n🔑 **Sell Files and License Keys**: Whether you're selling digital files or license keys, myCart has you covered, providing flexibility in the types of products you can offer.  \n\n⚙️ **Lightweight and Efficient**: myCart utilizes SQLite as its embedded database, eliminating the need for heavy databases like MySQL, PostgreSQL, or MongoDB. This results in a lightweight website that performs exceptionally well.  \n\n☁️ **Easily Customizable**: Modify and customize your myCart website effortlessly to match your branding and unique requirements, making it truly your own.  \n\n🧞‍♂️ **Convenient Administration Panel**: With a user-friendly dashboard UI, myCart offers a hassle-free administration panel, allowing you to manage your store, inventory, and orders with ease.  \n\n⚡️ **Hardware Compatibility**: Whether you're running myCart on a powerful server or a modest hardware setup, rest assured that it will work seamlessly, providing a consistent shopping experience for your customers.  \n\n🔒 **Built-in HTTPS Support**: Prioritizing security, myCart comes with built-in support for HTTPS, ensuring the safety of your customers' data.\n\n🆓 **Free Products Support**: Offer free products to your customers by setting the product price to 0. Free products are automatically processed without requiring payment system integration, making it perfect for free downloads, samples, or promotional content.\n\n🌐 **Multi-language Support**: Built-in internationalization (i18n) support allows you to create multilingual stores. By default, myCart includes support for English and Chinese languages. The language switcher is available in both the admin panel and the public site, making it easy to manage content in multiple languages and provide a localized shopping experience for your customers.\n\n\n## ⬇️\u0026nbsp;\u0026nbsp;Installation\n\n`mycart` is engineered for easy installation and operation, requiring just a single command from your terminal. Besides the conventional installation method, `mycart` can also be set up and operated via HomeBrew, Docker, or any other container orchestration tools like Docker Compose, Docker Swarm, Rancher, or Kubernetes.\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/apple.svg\"\u003e\u0026nbsp;Install on macOS\nThe fastest method to install `mycart` on macOS involves using Homebrew. This will install the command-line tools and the `mycart` server as a combined executable. If you don't utilize Homebrew, adhere to the Linux instructions below for `mycart` installation.\n```shell\nbrew install shurco/tap/mycart\n```\n\nAlternately, you can configure the tap and install the package separately:\n``` shell\n$ brew tap shurco/tap\n$ brew install mycart\n```\n\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/linux.svg\"\u003e\u0026nbsp;Install on Linux \nThe most straightforward and recommended method to start using `mycart` on Unix operating systems involves installing and utilizing the `mycart` command-line tool. Execute the given command in your terminal and adhere to the instructions displayed on the screen.\n\n```bash\ncurl -L https://raw.githubusercontent.com/shurco/mycart/main/scripts/install | sh\n```\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/windows.svg\"\u003e\u0026nbsp;Install on Windows\nThe simplest and most recommended method to start using `mycart` on Windows is by installing and utilizing the `mycart` command-line tool. Execute the given command in your terminal and adhere to the instructions displayed on the screen.\n```bash\ncurl -L https://raw.githubusercontent.com/shurco/mycart/main/scripts/install | sh\n```\nor download and unzip the [latest version](https://github.com/shurco/mycart/releases/latest) for Windows.\n\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/docker.svg\"\u003e\u0026nbsp;Run using Docker\nDocker enables the management and operation of a `mycart` instance without requiring the installation of any command-line tools. The `mycart` Docker container includes all necessary command-line tools  or even for server execution.\n\nFor [Docker Hub](https://hub.docker.com/r/shurco/mycart):\n```bash\ndocker run \\\n  -v ./lc_base:/lc_base \\\n  -v ./lc_digitals:/lc_digitals \\\n  -v ./lc_uploads:/lc_uploads \\\n  -v ./site:/site \\\n  --rm shurco/mycart:latest init\n\ndocker run \\\n  --name mycart \\\n  --restart unless-stopped \\\n  -p '8080:8080' \\\n  -v ./lc_base:/lc_base \\\n  -v ./lc_digitals:/lc_digitals \\\n  -v ./lc_uploads:/lc_uploads \\\n  -v ./site:/site \\\n  shurco/mycart:latest\n```\nor if use [Github Packages Hub](https://github.com/shurco/mycart/pkgs/container/mycart):\n\n```bash\ndocker run \\\n  -v ./lc_base:/lc_base \\\n  -v ./lc_digitals:/lc_digitals \\\n  -v ./lc_uploads:/lc_uploads \\\n  -v ./site:/site \\\n  --rm ghcr.io/shurco/mycart:latest init\n\ndocker run \\\n  --name mycart \\\n  --restart unless-stopped \\\n  -p '8080:8080' \\\n  -v ./lc_base:/lc_base \\\n  -v ./lc_digitals:/lc_digitals \\\n  -v ./lc_uploads:/lc_uploads \\\n  -v ./site:/site \\\n  ghcr.io/shurco/mycart:latest\n```\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/docker.svg\"\u003e\u0026nbsp;Run using Docker Compose\nDocker Compose provides a convenient way to manage multiple containers and services. The project includes several Docker Compose configurations for different use cases.\n\n**Production Setup** (`docker/docker-compose.yml`):\nThis configuration includes the myCart application and an Nginx reverse proxy:\n\n```bash\ncd docker\ndocker-compose up -d\n```\n\nThis setup includes:\n- **mycart**: The main application container with all required volumes\n- **nginx**: Reverse proxy server that listens on port 80 and forwards requests to myCart\n\nThe Nginx configuration is located in `docker/nginx/nginx.conf` and can be customized as needed.\n\n**Development Setup** (`docker/docker-compose_dev.yml`):\nFor local development, you can use the development configuration which includes MailHog for email testing:\n\n```bash\ncd docker\ndocker-compose -f docker-compose.yml -f docker-compose_dev.yml up -d\n```\n\nThis adds:\n- **mailhog**: Email testing tool accessible at `http://localhost:8025` for viewing sent emails\n\n**Combined Usage**:\nTo run both production and development services together:\n\n```bash\ncd docker\ndocker-compose -f docker-compose.yml -f docker-compose_dev.yml up -d\n```\n\n**Initialization**:\nBefore starting the services, initialize the application:\n\n```bash\ndocker-compose run --rm mycart init\n```\n\n**Stopping Services**:\n```bash\ndocker-compose down\n```\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/k8s.svg\"\u003e\u0026nbsp;Run using Kubernetes\nAn example manifest for running on Kubernetes can be found in the `/k8s/` folder (thanks \u003ca href=\"https://github.com/vuisme\" target=\"_blank\"\u003e@vuisme\u003c/a\u003e)\n\n\n## 🔄\u0026nbsp;\u0026nbsp;Migrating from litecart\n\nIf you are upgrading from a version that was published under the old name **litecart**, see the **[Migration Guide](./docs/migration-from-litecart.md)** for step-by-step instructions covering binary, Docker, Docker Compose, Kubernetes, Homebrew, and Go module updates. Your data and database are fully compatible — no schema migration is required.\n\n## ⬇️\u0026nbsp;\u0026nbsp;Updating\n\u003e [!WARNING]\n\u003e Before any update, be sure to make a backup of the *./lc_base* folder and the *./site* folder.\n\n#### Update on macOS / Linux / Windows\nThe easiest way to update `mycart` to the latest version is to execute the command:\n\n```bash\n./mycart update\n```\n\nIf there were changes in the database structure during the update, it is necessary to perform migration. To do this, you need to run the command from the `mycart` folder:\n```bash\n./mycart migrate\n```\n\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/docker.svg\"\u003e\u0026nbsp; Update using Docker\nOur mantra is to make updating a seamless experience. Simply download the new image and launch the container as you normally would. For example, if use [Docker Hub](https://hub.docker.com/r/shurco/mycart):\n\n```bash\ndocker stop mycart\ndocker pull shurco/mycart:latest # download new image\ndocker rename mycart mycart-backup # do image backup\ndocker run \\\n  --name mycart \\\n  --restart unless-stopped \\\n  -p '8080:8080' \\\n  -v ./lc_base:/lc_base \\\n  -v ./lc_digitals:/lc_digitals \\\n  -v ./lc_uploads:/lc_uploads \\\n  -v ./site:/site \\\n  shurco/mycart:latest\n```\n\nIf there were changes in the database structure during the update, it is necessary to perform migration. To do this, you need to run the command from the `mycart` folder:\n```bash\ndocker run \\\n-v ./lc_base:/lc_base \\\n-v ./site:/site \\\n--rm shurco/mycart migrate\n```\n\n#### \u003cimg width=\"20\" src=\"/.github/media/platforms/k8s.svg\"\u003e\u0026nbsp;Run using Kubernetes\nAn example manifest for running on Kubernetes can be found in the `/k8s/` folder (thanks \u003ca href=\"https://github.com/vuisme\" target=\"_blank\"\u003e@vuisme\u003c/a\u003e)\n\n## 🚀\u0026nbsp;\u0026nbsp;Getting started\nGetting started with `mycart` is as easy as starting up the `mycart` server\n\nDefault run for Linux/macOS:\n```bash\n./mycart serve\n```\n\nFor Windows:\n```\nmycart.exe serve\n```\n\nWhen launched for the first time, necessary folders will be created in the directory with the executable file. The default links for access are:  \n- [http://localhost:8080](http://localhost:8080) - website  \n- [http://localhost:8080/_/](http://localhost:8080/_/) - control panel  \n\nIf you need to run on a different port, use the flag `--http`:\n```\n./mycart serve --http 0.0.0.0:8088\n```\n\n\u003e [!NOTE]\n\u003e Ports \u003c= 1024 are privileged ports. You can't use them unless you're root or have the explicit permission to use them. See this answer for an explanation or wikipedia or something you trust more. Use:\n\u003e **sudo setcap 'cap_net_bind_service=+ep' /path_to/mycart**\n\n## 📚\u0026nbsp;\u0026nbsp;Commands\nUsage:\n```\n./mycart [command] [flags]\n```\n\nAvailable commands:\n```\ninit        Creating the basic structure\nmigrate     Migrate on the latest version of database schema\nserve       Starts the web server (default to 0.0.0.0:8080)\nupdate      Updating the application to the latest version\n```\n\nGlobal flags `./mycart [flags]`:\n```\n-h, --help      help for mycart\n-v, --version   version for mycart\n```\n\nServe flags `./mycart serve [flags]`:\n```\n--http string    server address (default \"0.0.0.0:8080\")\n--https string   https server address (auto TLS)\n--no-site        disable create site\n```\n\n## 🏦\u0026nbsp;\u0026nbsp;Adding payment systems\n#### Stripe\nStripe is a popular payment system that allows you to accept online payments from customers. It provides various tools and APIs for processing payments, including the ability to accept credit and debit cards, digital wallets, and bank transfers. Stripe ensures payment security, currency processing, and support for various payment methods.\n\nTo obtain the Secret key in Stripe, follow these steps:\n\n1. Log in to your \u003ca href=\"https://dashboard.stripe.com\" target=\"_blank\"\u003eStripe account\u003c/a\u003e on the official Stripe website. If you don't have an account, \u003ca href=\"https://dashboard.stripe.com/register\" target=\"_blank\"\u003eregister\u003c/a\u003e for one.\n2. In the top right corner, select the \u003ca href=\"https://dashboard.stripe.com/developers\" target=\"_blank\"\u003eDevelopers section\u003c/a\u003e.\n3. In the dropdown menu, choose \"\u003ca href=\"https://dashboard.stripe.com/apikeys\" target=\"_blank\"\u003eAPI Keys\u003c/a\u003e\".\n4. In the \"Standard keys\" section, you will find your \"Secret key\".\n\n\u003e [!WARNING]\n\u003e Please note that the \"Secret key\" is confidential information that should be kept secure.\n\n\n#### PayPal\nPayPal is an online payment system that allows individuals and businesses to send and receive money over the internet. It enables payments for goods and services, as well as transfers between users. PayPal provides a secure and convenient way to make electronic payments.\n\nTo obtain a Client ID and Secret Key for using the PayPal API, you need to follow these steps:\n\n1. To use the API, you will need a PayPal business account.\n2. Go to the \u003ca href=\"https://developer.paypal.com/\" target=\"_blank\"\u003ePayPal Developer\u003c/a\u003e website and sign in with your PayPal business account credentials.\n3. In the Dashboard, find the \"My Apps \u0026 Credentials\" section and create a new application by clicking the \"Create App\" button.\n4. On the application page, you will see your Client ID. It will be visible immediately after creating the application. To see the Secret Key, click on the \"Show\" button under the \"Secret\" label.\n\n\u003e [!WARNING]\n\u003e Please note that the \"Secret key\" is confidential information that should be kept secure.\n\n\n#### SpectroCoin\n\u003ca href=\"https://spectrocoin.com/en/invite?referralId=b2n87748\" target=\"_blank\"\u003eSpectroCoin\u003c/a\u003e is a payment system and cryptocurrency wallet that allows users to send and receive payments in various currencies, including cryptocurrencies such as Bitcoin, Ethereum, and others. It also offers currency exchange operations between different currencies and the ability to deposit and withdraw funds to bank accounts. \u003ca href=\"https://spectrocoin.com/en/invite?referralId=b2n87748\" target=\"_blank\"\u003eSpectroCoin\u003c/a\u003e ensures the security of payments and cryptocurrency storage, as well as offering additional features such as debit cards.\n\nTo obtain a \"Merchant ID\", \"Project (API) ID\" and \"Private key\" in \u003ca href=\"https://spectrocoin.com/en/invite?referralId=b2n87748\" target=\"_blank\"\u003eSpectroCoin\u003c/a\u003e, follow these steps:\n\n1. Register on \u003ca href=\"https://spectrocoin.com/en/invite?referralId=b2n87748\" target=\"_blank\"\u003eSpectroCoin\u003c/a\u003e if you don't have an account yet.\n2. Log in to your \u003ca href=\"https://spectrocoin.com/en/invite?referralId=b2n87748\" target=\"_blank\"\u003eSpectroCoin\u003c/a\u003e account.\n3. Go to the \"Business\" section in the navigation menu.\n4. Navigate to the \"New project\" section in the navigation menu.\n5. Fill in the project name and make sure to enable the \"Public key\" section. A window with a \"Private key\" will appear, copy and save it. You can activate other options if needed.\n6. After filling in the details, you will be redirected to the projects page. Go to the created project and in the header, copy the \"Merchant ID\" and \"Project (API) ID\".\n\n\u003e [!WARNING]\n\u003e Please note that creating a project may require you to complete the verification process for your \u003ca href=\"https://spectrocoin.com/en/invite?referralId=b2n87748\" target=\"_blank\"\u003eSpectroCoin\u003c/a\u003e account.  \n\u003e Please note that the \"Private key\" is confidential information that should be kept secure.\n\n\n#### Coinbase\nCoinbase Commerce is a cryptocurrency payment platform that allows businesses to accept payments in various cryptocurrencies including Bitcoin, Ethereum, Litecoin, and many others. It provides a simple and secure way to integrate crypto payments into your store.\n\nTo obtain an API Key for using the Coinbase Commerce API, follow these steps:\n\n1. Create or log in to your \u003ca href=\"https://commerce.coinbase.com\" target=\"_blank\"\u003eCoinbase Commerce\u003c/a\u003e account.\n2. Navigate to the **Settings** section.\n3. Under the **API Keys** tab, click **Create an API Key**.\n4. Copy the generated API Key and save it securely.\n\n\u003e [!WARNING]\n\u003e Please note that the \"API Key\" is confidential information that should be kept secure.\n\n\n#### Dummy Payment\nDummy Payment is a built-in payment provider that comes pre-configured with myCart. It is designed for processing free products (products with a price of $0) and does not require any external payment system integration or API keys.\n\n**How it works:**\n- Automatically activated when a customer's cart contains only free products (total amount = $0)\n- No payment processing occurs - orders are immediately marked as paid\n- Customers only need to provide their email address to complete the checkout\n- Perfect for free downloads, samples, promotional content, and lead generation\n\n**Key features:**\n- **No configuration required**: Works out of the box, no setup needed\n- **No API keys needed**: Unlike other payment providers, Dummy Payment doesn't require any external accounts or credentials\n- **Instant processing**: Orders are processed immediately without waiting for payment confirmation\n- **Full feature support**: All standard features work with Dummy Payment, including email delivery, digital file downloads, license keys, and webhooks\n\n**When to use:**\n- Selling free products or samples\n- Offering promotional content\n- Collecting email addresses for lead generation\n- Testing the checkout process during development\n\n\u003e [!NOTE]\n\u003e Dummy Payment is only used for carts containing exclusively free products. If a cart contains both free and paid products, customers must use a regular payment system (Stripe, PayPal, or SpectroCoin) to complete the purchase.\n\n\n## 🆓\u0026nbsp;\u0026nbsp;Free Products\n\nmyCart supports free products, allowing you to offer digital content, samples, or promotional materials at no cost to your customers.\n\n### Creating Free Products\n\nTo create a free product:\n\n1. In the admin panel, navigate to **Products** and create a new product\n2. Set the **Amount** field to `0` (zero)\n3. The product will automatically display as \"free\" in both the admin panel and on the website\n\n### How Free Products Work\n\n- **Automatic Processing**: When a customer adds only free products to their cart (total amount = 0), the checkout process automatically uses the built-in **Dummy Payment** provider (see [Dummy Payment](#dummy-payment-built-in) section for details)\n- **No Payment Required**: Free products bypass all external payment system integrations - customers can complete their purchase with just an email address\n- **Instant Access**: After checkout, customers immediately receive access to free products via email, just like paid products\n- **Mixed Carts**: If a cart contains both free and paid products, customers must use a regular payment system (Stripe, PayPal, or SpectroCoin) to complete the purchase\n\n### Use Cases\n\nFree products are perfect for:\n- Free downloads and samples\n- Promotional content and giveaways\n- Trial versions of digital products\n- Free resources and documentation\n- Lead generation (collecting email addresses)\n\n### Technical Details\n\n- Free products are identified by `amount = 0` in the database\n- The **Dummy Payment** provider is automatically selected for carts with `amountTotal = 0`\n- All standard features work with free products: email delivery, digital file downloads, license keys, and webhooks\n- Free products are included in order history and cart management just like paid products\n- No external payment processing occurs - orders are immediately marked as paid when using Dummy Payment\n\n\n## 🧩\u0026nbsp;\u0026nbsp;For developers\nThe backend is developed in Go language. The frontend admin panel operates on SvelteKit and TailwindCSS.  \n\nThere are a number of scripts (in the ./scripts folder) that simplify development:  \n`./scripts/golang` - Installs or updates a previously installed version of go (if needed).  \n`./scripts/migration` - Helps to work with migrations. For instance, the `./scripts/migration dev up` command will apply new migrations from folder ./migrations, then implement the migrations from folder ./fixtures.  \n`./scripts/sqlite` - Optimizes the existing database.  \n`./scripts/tools` - Sets up the necessary environment for development (if needed).  \n`./scripts/webscripts` - Updates frontend (admin + site) dependencies (SvelteKit, Tailwind) to the latest versions.  \n`./scripts/clear` - Removing hung golang or vite processes.  \n\n\u003e [!NOTE]\n\u003e I recommend running the `./scripts/migration dev up` command. It will add test data to the database, which makes it easier to work with. For example, it will create products, transfer test images and create a test user for access to the admin panel:  \n\u003e login - user@mail.com  \n\u003e password - Pass123\n\n#### Admin panel (frontend)\nTo develop the web interface of the admin panel, you need to start the myCart server (for example, execute the command from the project root `go run ./cmd/main.go serve`).\nAll the code is located in the folder ./web/admin. The command `cd ./web/admin \u0026\u0026 bun run dev` will start the development server for the admin panel web interface. By default, it will be available at http://localhost:5173/_/.\n\n#### Base site (frontend)\nTo develop the web interface of the base site, you need to start the myCart server (for example, execute the command from the project root `go run ./cmd/main.go serve`).  \nAll the code is located in the folder `./web/site`. The command `cd ./web/site \u0026\u0026 bun run dev` will start the Vite dev server. Run `cd ./web/site \u0026\u0026 bun run build` to produce the production bundle that the Go binary embeds via `//go:embed`.\n\n#### Customization and Deployment\nFor detailed information on how to customize the site design and deploy it on a separate server with Nginx, see [Customization and Deployment Guide](./docs/customization.md).\n\n## 🗺️\u0026nbsp;\u0026nbsp;ToDo\n`mycart` has a [roadmap](https://github.com/users/shurco/projects/2) and I try to work on issues in specific order and such PRs often come in out of nowhere and skew all initial planning with tedious back-and-forth communication.\n\n- [x] Product in the form of files\n- [x] Product in the form of license keys\n- [ ] Product returned via API to another site (example license keys)\n- [x] \u003ca href=\"#stripe\"\u003ePayment Stripe\u003c/a\u003e\n- [x] \u003ca href=\"#paypal\"\u003ePayment PayPal\u003c/a\u003e\n- [ ] Payment Square\n- [ ] Payment Adyen\n- [ ] Payment Checkout\n- [ ] Payment via Webhook\n- [x] \u003ca href=\"#spectrocoin\"\u003eSupport for payment using crypto (SpectroCoin)\u003c/a\u003e\n- [x] \u003ca href=\"#coinbase\"\u003eCoinbase Commerce crypto payments\u003c/a\u003e\n- [x] Support WebHook (\u003ca href=\"https://github.com/msalbrain\" target=\"_blank\"\u003e@nicksnyder\u003c/a\u003e in \u003ca href=\"https://github.com/shurco/mycart/pull/61\" target=\"_blank\"\u003e#61\u003c/a\u003e)\n- [x] \u003ca href=\"#dummy-payment\"\u003eDummy Payment\u003c/a\u003e (\u003ca href=\"https://github.com/majiayu000\" target=\"_blank\"\u003e@majiayu000\u003c/a\u003e in \u003ca href=\"https://github.com/shurco/mycart/pull/261\" target=\"_blank\"\u003e#261\u003c/a\u003e)\n\n\n## 👍\u0026nbsp;\u0026nbsp;Contribute\n\nIf you want to say **thank you** and/or support the active development of `mycart`:\n\n1. Add a [GitHub Star](https://github.com/shurco/mycart/stargazers) to the project.\n2. Tweet about the project [on your Twitter](https://twitter.com/intent/tweet?text=%F0%9F%9B%92%20myCart%20-%20shopping-cart%20in%201%20file%20on%20%23Go%20https%3A%2F%2Fgithub.com%2Fshurco%2Fmycart).\n3. Write a review or tutorial on [Medium](https://medium.com/), [Dev.to](https://dev.to/) or personal blog.\n4. Support the project by donating a [cup of coffee](https://github.com/sponsors/shurco).\n\nYou can learn more about how you can contribute to this project in the [contribution guide](https://github.com/shurco/mycart/blob/master/.github/CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshurco%2Fmycart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshurco%2Fmycart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshurco%2Fmycart/lists"}