{"id":13549948,"url":"https://github.com/bailabs/tailpos","last_synced_at":"2025-04-02T23:31:38.223Z","repository":{"id":38361942,"uuid":"166769053","full_name":"bailabs/tailpos","owner":"bailabs","description":"TailPOS  an Offline First Open Source POS for ERPNext","archived":false,"fork":false,"pushed_at":"2022-10-12T03:00:22.000Z","size":17012,"stargazers_count":455,"open_issues_count":25,"forks_count":202,"subscribers_count":35,"default_branch":"master","last_synced_at":"2024-11-03T19:37:30.098Z","etag":null,"topics":["android","erpnext","mobile-app","mobx-react","offline-first","point-of-sale","pos","react","react-native"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/bailabs.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"patreon":"baiph","custom":"https://www.paypal.me/baiph"}},"created_at":"2019-01-21T07:37:33.000Z","updated_at":"2024-10-31T02:31:39.000Z","dependencies_parsed_at":"2023-01-19T16:03:36.723Z","dependency_job_id":null,"html_url":"https://github.com/bailabs/tailpos","commit_stats":null,"previous_names":[],"tags_count":94,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailabs%2Ftailpos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailabs%2Ftailpos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailabs%2Ftailpos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bailabs%2Ftailpos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bailabs","download_url":"https://codeload.github.com/bailabs/tailpos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246911022,"owners_count":20853652,"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":["android","erpnext","mobile-app","mobx-react","offline-first","point-of-sale","pos","react","react-native"],"created_at":"2024-08-01T12:01:27.356Z","updated_at":"2025-04-02T23:31:33.214Z","avatar_url":"https://github.com/bailabs.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n \u003ch2\u003eTailPOS\u003c/h2\u003e\n \u003cp align=\"center\"\u003e\n  \u003cp\u003eTailPOS  an Offline First Open Source POS for ERPNext\u003c/p\u003e\n  \u003ca href='https://play.google.com/store/apps/details?id=com.tailpos\u0026hl=en\u0026pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'\u003e\u003cimg alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' width='25%' /\u003e\u003c/a\u003e\n \u003c/p\u003e\n\u003c/div\u003e\n\n### Showcase\n\n![Showcase](showcase.gif)\n\n### Features\n\n\u003cb\u003e o Two-way Sync to ERPNext \u003c/b\u003e\n  Two-way syncing to an ERPNext instance for a full suite of back-office functionalities.\n\n\u003cb\u003e o Offline-first Approach \u003c/b\u003e\n  Continue to make sales and keep running the business even no  internet or unstable.\n\n\u003cb\u003e o Mobile POS \u003c/b\u003e\n  Uses the tablet for a lightweight setup. Built-in rear camera of the tablet can be used as a barcode scanner. Any bluetooth barcode scanner is compatible with `tailpos`\n\n\u003cb\u003e o Print receipts \u003c/b\u003e\n  Print sales receipts for customers using any ESC/POS receipt printer.\n\n\u003cb\u003e o Multiple payment modes \u003c/b\u003e\n  Can process credit card,mobile payments and cash.\n\n\u003cb\u003e o Discounts Program \u003c/b\u003e\n  Can apply discount to an invoice or on specific items.\n\n\u003cb\u003e o Inventory Management \u003c/b\u003e\n  Keep track of stock levels easily. Easy-to-use menu for item maintenance such as creating and updating item information.\n\n\u003cb\u003e o Sales Reports \u003c/b\u003e\n  Can generate X and Z readings and attendant shift sales totals.\n\n### License\nThis project is released under the GPLv3 license, for more details, take a look at the LICENSE file in the source.\n\n---\n\n### Quick Start\nA quick demo of syncing the `tailpos` to a Frappe/Erpnext server\n\nhttps://docs.tailpos.com/tailpos/syncing-to-frappe-erpnext\n\n##### Login to demo server\n```\nserver: https://demo.tailerp.com\nusername: demo@example.com\npassword: @Bailabs\n```\n\n##### **Making a new item.** \u003cbr/\u003e\n* Go To `Item` List.\n* Make a new `Item`.\n* Select your new `Item `to see its properties.\n\n![alt text](https://github.com/bailabs/tailpos/blob/master/pics/item%20created.png)\n\n* Select `Item Price` under `Pricing`.\nMake sure the `In TailPOS` checkbox is checked.\n\n![alt text](https://github.com/bailabs/tailpos/blob/master/pics/checkbox.png)\n\n* Don't forget to save your Item.\n\n##### **Setup TailPOS Sync Settings**\n* Go to `Settings` \u003e Sync\n* Fill the following\n```\nERPNext Server: demo.tailerp.com\nUsername: demo@example.com\nPassword: @Bailabs\nDevice ID: \u003c\u003e\n```\n#### **Setting up device ID**\n* Go to `Device` list.\n* Create a new `Device`\n* Input the `Device Name` and `POS Profile`\n* Fill out information need in the `POS profile`\n```\nName: \u003c\u003e\nSeries: ACC-SINV-.YYYY.-\n\nAccounting\nWrite Off Accounting: Write Off – D\nWrite Off Cost Center: Main – D\n```\n\n![alt text](https://github.com/bailabs/tailpos/blob/master/pics/pos%20profile.png)\n\n![alt text](https://github.com/bailabs/tailpos/blob/master/pics/write%20off.png)\n\n* Select your new `Device`.\n* `Device ID` is displayed at the top-right corner near the `Save` button. \u003cbr/\u003e\n\n![alt text](https://github.com/bailabs/tailpos/blob/master/pics/device%20name.png)\n\n##### **Syncing**\n* Once your done, save your `Sync Settings`. \n* Press `Force Sync`.\n* Once `Force Sync` is successful, go to your `Sales` tab and fill up a sample transaction.\n* Confirm the transaction by looking at your `Receipts` tab.\n* Now go back to your `Settings` \u003e `Sync` and `Force Sync` the receipt data to the server.\n* Verify by going to `Receipts` List in ERPNext and check the receipts if they are generated.\n\n### How To Compile TailPOS in your local machine\n\nIf you are interested contributing the `tailpos`, the following guide will give you instructions in compiling the `tailpos`.\n\n\nFirst, you'll need `nodejs` and `npm`:\n\n```terminal\nsudo apt install curl\ncurl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -\nsudo apt-get install -y nodejs\nnodejs -v\nv8.4.0\n```\n\nInstall development tools to build native addons:\n```terminal\nsudo apt-get install gcc g++ make\n```\nInstall the `yarn` package manager, run:\n```terminal\ncurl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -\necho \"deb https://dl.yarnpkg.com/debian/ stable main\" | sudo tee /etc/apt/sources.list.d/yarn.list\nsudo apt-get update \u0026\u0026 sudo apt-get install yarn\n```\n\nThen you can install `react-native-cli` using `npm`\n\n```terminal\nsudo npm install -g react-native-cli\n```\n\nNow you need to install Java and Android\n\n```terminal\nsudo apt-get install default-jre\nsudo apt-get install default-jdk\n\nsudo add-apt-repository ppa:webupd8team/java\nsudo apt-get update\nsudo apt-get install oracle-java8-installer\n```\n\n* Install Android\n* Install Android SDK requirements\n\n```terminal\ncd ~\nmkdir android-sdk\ncd android-sdk\nwget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip\nsudo apt-get install unzip\nunzip sdk-tools-linux-3859397.zip\n```\n\nWe add the path of our Android SDK tools to `.bashrc` so that we have access to the Android tools.\n```\ncd ~\nnano .bashrc\n\n# Add these lines to the top of the file\nexport ANDROID_HOME=$HOME/android-sdk\nexport PATH=$PATH:$ANDROID_HOME/tools\nexport PATH=$PATH:$ANDROID_HOME/tools/bin\nexport PATH=$PATH:$ANDROID_HOME/platform-tools\n\n# CTRL+O (uppcase o) to save\n# CTRL+X to exit\n\nsource ~/.bashrc\n```\n\n```terminal\nandroid update sdk --no-ui\n# Answer 'y' to all prompts\n\nsdkmanager \"platforms;android-23\" \"build-tools;23.0.1\" \"add-ons;addon-google_apis-google-23\"\n```\n\nInstalling TailPOS\n```terminal\ncd ~\nmkdir Projects\ncd Projects\ngit clone https://github.com/bailabs/tailpos.git\ncd tailpos\nyarn\n```\n\nUpdating `react-native-camera` modules\n  * remove `buildscript` section\n\n```terminal\n  buildscript {\n  repositories {\n    jcenter()\n    maven {\n      url 'https://maven.google.com'\n    }\n  }\n\n  dependencies {\n    classpath 'com.android.tools.build:gradle:3.0.0'\n  }\n}\n```\n\n  * `compileOnly` to `provided`\n  * `implementation` to `compile`\n\n```terminal\ncd ~\nnano Projects/tailpos/node_modules/react-native-camera/android/build.gradle\n```\n\nUpdating `react-native-maps` modules\n  * `compileOnly` to `provided`\n  * `implementation` to `compile`\n\n```terminal\ncd ~\nnano Projects/tailpos/node_modules/react-native-maps/lib/android/build.gradle\n```\n\n\nUpdating `react-native-bluetooth-serial` modules\n  * remove `@Override` in line 23 (the second `@Override`)\n\n```terminal\ncd ~\nnano Projects/tailpos/node_modules/react-native-bluetooth-serial/android/src/main/java/com/rusel/RCTBluetoothSerial/RCTBluetoothSerialPackage.java\n```\n\nUpdating `react-native-device-info` with `support-v4` fix\n```\nERROR: In \u003cdeclare-styleable\u003e FontFamilyFont, unable to find attribute android:fontVariationSettings\nERROR: In \u003cdeclare-styleable\u003e FontFamilyFont, unable to find attribute android:ttcIndex\n```\nSet the following under `build.gradle` under `react-native-device-info`\n```terminal\nandroid {\n  compileSdkVersion 26\n  buildToolsVersion \"26.0.2\"\n  ...\n}\n\ndependencies {\n  ...\n  compile \"com.google.android.gms:play-services-gcm:12.0.1\"\n  compile \"com.android.support:support-v4:27.1.0\"\n}\n```\n\nUpdate `react-native-localization`\n* `implementation` to `compile`\n\nBuilding `TailPOS`\n\n```terminal\ncd ~\ncd Projects/tailpos\nreact-native run-android\n```\n","funding_links":["https://patreon.com/baiph","https://www.paypal.me/baiph"],"categories":["JavaScript","Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbailabs%2Ftailpos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbailabs%2Ftailpos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbailabs%2Ftailpos/lists"}