Author

Topic: Designer wanted: Help me build an open source point of sale system! (Read 1288 times)

full member
Activity: 182
Merit: 100
If I were you, I would look at the raspberry pi computer for this application. It would lower the price of the unit.
jav
sr. member
Activity: 249
Merit: 251
Hey! I released a first version now, with a simple design I put together myself. See this thread: https://bitcointalksearch.org/topic/ann-release-of-open-source-point-of-sale-system-w-video-38893 . Of course the design can be improved/replaced etc., if one of you are still interested in working on that.
jav
sr. member
Activity: 249
Merit: 251
Alrighty, I just put something up on GitHub: https://github.com/javgh/greenaddress-pos-tools .

As mentioned in the README, here is how to get started:

- install dependencies: python-qrencode, python-qt4
- add "server=1" (but not daemon=1) to bitcoin.conf and configure rpcuser & rpcpassword
- edit RPC_URL in controller.py
- run: python pos-tool.py

I'm developing on Linux, so this is only tested on Linux. But I would hope this to be fairly portable. Patches to make it work (better) on Windows and/or Mac OS are welcome.

You should see two windows popping up: The merchant backend and the customer display. If you enter a BTC amount and click "show", a new Bitcoin address and associated QR code will be generated and displayed to the customer. The tool then listens for transactions to the Bitcoin address and as soon as it receives something, it changes the display to read "Payment received". If the payment was done via Instawallets green address, it will add the phrase "Verified by Instawallet". The merchant is expected to use their Bitcoin client to see if the correct amount was sent.

What is missing:

- some hardcoded stuff should be moved into a configuration file
- a button to bring the customer display to fullscreen and some logic to go back to idle mode after a while
- interfacing with Mt.Gox and/or Tradehill to do currency conversion
- slick design for the customer display

If you look at the code, you will see that it contains a simple Bitcoin node implementation. This is used to listen for transactions and get notified as soon as one arrives. This could be done much easier with a patch to bitcoind (for example a version of Gavin's monitor patch: https://github.com/bitcoin/bitcoin/pull/198 ), but an important goal of this project is to have as few dependencies as possible and especially be able to run with a vanilla Bitcoin daemon. This is why I went the route of using ArtForz' "half-a-node" implementation to listen for transactions manually. (Hopefully this can be dropped at some point in the future, when the official client allows some form of push-notification directly.)

As to the customer display: As mentioned before, I now went the route of putting it all into a single HTML file (data/customer_display.html) and using Javascript functions to toggle between the different states ("show_idle()", "show_payment_info()", "show_payment_received()"). The Javascript functions will show and hide DIVs. In designing a new look, you can pretty much just work with that HTML file directly, as it also contains some debug links to trigger those Javascript functions. This should also make it fairly easy to bundle a number of different "skins" for the system.

Looking forward to your input!
member
Activity: 62
Merit: 10
Will also take a look at this...
jav
sr. member
Activity: 249
Merit: 251
Would be interested in helping.  Is a git repo setup?  Would you allow the whole project to be under a BSD license or the Unlicense(http://unlicense.org/)?

Cool to hear that! I was planning to use the MIT license, but as I understand it, that pretty much boils down to the same thing.

I will be putting something up on Github shortly, but want to get it a little bit into shape before I do that.

For a bit more context, here is a quote from a PM I messaged to someone else:

Quote
For the first iteration I want to build something fairly simply to get it out there quickly. To that end I'm aiming for the following:

- have a very simple backend, which doesn't have to look nice for now (only the merchant sees this)
- have HTML pages that display the current status to the customer (this should look nice and I especially welcome input on this part)
- run in combination with the standard Bitcoin client and let the Bitcoin client display number of confirmations and stuff like that

I'm currently using a browser to display the HTML pages to the customer, but just realized that it might be possible to use Qt's QWebView for this instead. I'm already using Qt for the backend, so that would probably be easier. I'm going to look into that.

Here is a screenshot of the current state: http://imgur.com/pWxln . In a few days I should have something ready that I can put on github, so you can get a better sense of the context.

As I mentioned, the part where looks matter the most, is the HTML status pages displayed to the customer. These can be three separate HTML pages (as mentioned in the Reddit post), which will displayed by the backend code accordingly. Alternatively, I was thinking it might be more flexible to use a single page for the frontend and have some Javascript functions that switch between the different states. This might give more design freedom in the sense that at some later point we could add animations for the transitions between states (e.g. from "please pay" to "payment received"). The backend can then initiate those Javascript functions to perform the transition.

I'll keep you updated!
sr. member
Activity: 339
Merit: 250
Would be interested in helping.  Is a git repo setup?  Would you allow the whole project to be under a BSD license or the Unlicense(http://unlicense.org/)?
jav
sr. member
Activity: 249
Merit: 251
I already posted this on Reddit a little while ago ( http://www.reddit.com/r/Bitcoin/comments/j0bva/help_me_build_a_point_of_sale_application_design/ ), but not much came out of it. So I want to give it a shot here again:

I'm working on a Point of Sale system written in Python and targeting standard PC hardware. Think laptop + external monitor. The laptop is used by the merchant to set up a new transaction and the external monitor shows the necessary details to the customer (amount, QR code, etc.).

I have most of it written and I will be releasing this as open source soon. Among other things, it will be a demonstration of the green address approach I described here: https://bitcointalksearch.org/topic/instawallet-introduces-new-approach-to-instant-payment-green-address-technique-32818 . I wanted to ask the community if someone would be interested in designing the payment screens. They are just HTML pages.

Three screens are needed (the plan is to show them in a browser set to fullscreen mode):

  • Payment info: Shows amount, Bitcoin address, in some cases conversion details (if the merchant entered a USD price which was converted to BTC, the course that was used will be displayed) and finally a QR code. Here is a simple page that has these components: http://pastebin.com/8Xby7nNs . You are free to modify and style the page as you see fit (also adding phrases like "Please pay to this address..." and whatever you find necessary.)
  • Payment received: A page that states that a payment has been received.
  • Idle: A page that will be shown when the system is idle. Maybe just a big Bitcoin logo or some kind of welcome screen. It's up to you.

If you decide to contribute, you should be willing to license your design under an open license, since this project will be open source. You can also check out the comments on the Reddit thread I linked, which has a few more details.

I hope there are a few people out there who would enjoy contributing to something like this. Looking forward to working with you!
Jump to: