{"id":15132870,"url":"https://github.com/wisepythagoras/pos-system","last_synced_at":"2025-10-23T09:31:16.891Z","repository":{"id":65163511,"uuid":"376629260","full_name":"wisepythagoras/pos-system","owner":"wisepythagoras","description":"A free, open source, and simple to use and set-up POS app.","archived":false,"fork":false,"pushed_at":"2024-06-19T02:18:36.000Z","size":871,"stargazers_count":22,"open_issues_count":0,"forks_count":12,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-30T17:38:23.542Z","etag":null,"topics":["festival","festival-foods","festival-mangement","festivals","point-of-sale","point-of-sale-app","point-of-sale-web","point-of-sales","pos","raspberry-pi","raspberrypi","restaurant","restaurant-app","restaurants","thermal-printer"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wisepythagoras.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-13T19:56:16.000Z","updated_at":"2025-01-22T11:15:48.000Z","dependencies_parsed_at":"2023-02-15T09:31:15.236Z","dependency_job_id":"4604cc2e-25c0-4aa8-a9f1-1319160dd4ad","html_url":"https://github.com/wisepythagoras/pos-system","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisepythagoras%2Fpos-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisepythagoras%2Fpos-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisepythagoras%2Fpos-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisepythagoras%2Fpos-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wisepythagoras","download_url":"https://codeload.github.com/wisepythagoras/pos-system/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237807437,"owners_count":19369595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["festival","festival-foods","festival-mangement","festivals","point-of-sale","point-of-sale-app","point-of-sale-web","point-of-sales","pos","raspberry-pi","raspberrypi","restaurant","restaurant-app","restaurants","thermal-printer"],"created_at":"2024-09-26T04:40:57.683Z","updated_at":"2025-10-23T09:31:16.886Z","avatar_url":"https://github.com/wisepythagoras.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Point-of-Sale App\n\n![Point of sale app screenshot](docs/screenshot.png)\n\nThis point-of-sale (POS) app, with its administrative panel, was meant to be a simple to use alternative to all the restrictive paid apps for small shops, street fairs, and neighborhood festivals. My goal is to slowly build this into a WordPress for point of sales apps.\n\n## Building\n\nThis app was built with Go 1.18, so make sure you have that installed.\n\n``` sh\ngit clone https://github.com/wisepythagoras/pos-system \u0026\u0026 cd pos-system\nmake current_arch\n```\n\nIf the build completes without any issues, you should have an executable file in `./bin`. Also, create a config based on `config.example.yaml` and then run:\n\n```\n./bin/pos-system\n```\n\nThen build the front end apps:\n\n``` sh\nyarn build \u0026\u0026 yarn build-admin\n```\n\nNow you can access the POS app via `http://localhost:8088`.\n\n## Runtime Dependencies\n\nThe only dependency that this application has is `wkhtmltopdf` (you can find information about it [here](https://wkhtmltopdf.org/)), if you want to be able to print receipts (which you should). The website provides [downloadable](https://wkhtmltopdf.org/downloads.html) packages for many systems. However, if you are using Ubuntu or Debian, you can install it by running the following command:\n\n``` sh\nsudo apt install wkhtmltopdf\n```\n\n## Deploying\n\nIf you wish to deploy the app, you can use a $35 [Raspberry Pi](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) running [Raspberry Pi OS Lite](https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit) or [Ubuntu Server](https://ubuntu.com/download/raspberry-pi), if you wish to have a 64-bit version.\n\nYou can create a dedicated Wi-Fi network and connect the Raspberry Pi directly to the router. After that, you'll have to drop this source directory somewhere (see the [Building] section) and create a `config.yaml` file following the example in `config.example.yaml`. Then direct your tablet(s) to `http://localhost:8088`. That's it!\n\n### Printing\n\nThis app was built to use a CUPS server. You can connect your thermal printer to the Raspberry Pi you have this server running on, or to some other machine, and tell the POS app where to find it via the [config file](https://github.com/wisepythagoras/pos-system/blob/main/config.example.yaml#L27-L33).\n\nMake sure that your printer settings are valid. You can check the settings by navifating to to http://your-server-ip:631 and under the \"Printers\" tab select your printer. From there, click on the second dropdown menu and click on \"Set Default Options\", as shown in the screenshot below.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"docs/cups-1.png\" alt=\"CUPS screenshot\" height=\"320\"/\u003e\n\u003c/p\u003e\n\n### User Management\n\nThere is an admin panel for creating and deleting users, but updating them is not supported at the moment. You can either delete the previous user and re-create one, or update the user record in the database. Simply open `pos.db` with [SQLite Database Browser](https://sqlitebrowser.org/), or any other app that can open sqlite databases, and then click on the \"Execute SQL\" tab or go to the \"Browse\" tab and update the record you wish.\n\n### Product Management\n\nYou can fully manage your products from the \"Products\" tab in the admin page, as well as create new ones. However, you also have the flexibility of doing this through the API. The following curl is an example of how to create a new product.\n\n``` sh\ncurl -X POST http://localhost:8088/api/product -d 'name=Product Name\u0026price=$9.99\u0026type=\u003cID_OF_PRODUCT_TYPE\u003e' -H 'x-auth-token: YOUR_ADMIN_AUTH_TOKEN'\n```\n\nYou can create any number of product types/categories via the `PUT` endpoint `/api/product/type`. An admin form for creating and managing these is being built.\n\n### Startup Service\n\nRead [this](/startup/README.md) guide.\n\n## What's missing\n\n1. [x] Receipt printer support.\n2. [x] Manage products from the admin panel.\n3. [x] Manage users through the admin panel.\n4. [x] Allow cashiers to select between multiple printers.\n5. [x] Separate app/page for stations to fulfill orders.\n6. [ ] Extension/module engine.\n\n## License\n\nAlthough the license for the source code is GNU GPL v3, I prohibit the use of the code herein for the training of any kind of AI model.\n\nThe GNU GPL v3 license excludes the files in `src/components/`, which retain whatever license they come with.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisepythagoras%2Fpos-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwisepythagoras%2Fpos-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisepythagoras%2Fpos-system/lists"}