At our company, we have an application called POS (Point of Sale), which is responsible for performing customer transactions. To visualize it, think of the billing system at a supermarket or convenience store, where items are scanned, discounts are applied, and payments are processed. Our current POS is built using a legacy programming language, and management is now looking to rewrite it using modern technologies.
As part of this initiative, we’re evaluating various programming languages, and Go (Golang) is one of the options under consideration.
The existing POS is a monolithic Windows-based application, and we aim to modularize it into individual services, potentially following a microservices architecture. Based on my research, Go appears to be well-suited for:
Backend development
Building microservices
Writing device drivers and performing hardware integrations
However, Go is not widely recommended for UI development, primarily due to limited mature libraries and ecosystem support for creating rich desktop interfaces.
I’d like to gather your input on the following:
Is Go a viable choice for building a POS application end-to-end, including the UI?
If not, what language or tech stack would you recommend for developing a modern, maintainable POS system?
Since we are starting from scratch, feel free to suggest cross-platform or web-based solutions as well, beyond just Windows-based development.
Hi, I have an old .NET app installed as kiosk app. So I am think to migrate them to go and have the same questions that you have now. I googles and there is a many UI libraries can be used with Go. The most used are Fyne Wails and Gio and other (just google “UI golang libraries”). I think you would need to evaluate them to select the most appropiate for you
For a client/server application I can suggest to use Go for the backed and a Web Application (Angular, React, Vue, …) for the UI.
To make the deployment simple you can also embed the UI app in the backend executable
I’ve done some research, and based on everything I’ve found so far, Go is generally not recommended for UI development. The UI ecosystem for Go is still immature and lacks the level of community support and tooling typically expected for building production-grade interfaces.
Given that this isn’t a traditional client-server setup and our intention is to run both the UI and backend on the same machine, would you still recommend using frontend frameworks like Angular or React?
Additionally, there has been a counter-suggestion to use C# instead of Go for developing the POS application. I’d appreciate your thoughts on that as well—especially in the context of building a full-featured POS system.
Interesting and good because there is a lot of options available. I think a web UI could be easier to build because there is a lot of tools, frameworks and can be tested outside the kiosk device. In this case Wails fits best to use go for development your UI.
Said this, it seems Javascript could do the trick too using for example Electron. C# also offers a good option if you are .NET oriented developer.
In my case the application was written in .NET and C# and connects with a Web API. My problem is we need to install the runtime for .NET and the kiosk offers a limited hardware but until now it is working fine.
So if you want to use Go as base tool, there is a lot of UI libraries, web based and native components (QT for example). Go is a excellent choice to develop your backend code
@madhusudan.brm This is a real opportunity for your company to select the right technologies for the right part of your stack. One way to look at Go is by going back to the problems its designers set out to solve.
High scale, efficiency handed via the runtime. Developers can leverage concurrency and parallelism without having to micro-manage their implementation.
Cross-platform and really efficient - The cross platform compiles just work and in a space where POS underpinnings are and will continue to change, making moves from Intel to ARM to whatever is next is one more headache the dev doesn’t have to worry about. Also, concurrency, map types, and other advanced concepts are REALLY use insanely low amounts of memory.
POS are B2C which means customer facing use cases and flexibility are critical. With Go, you can write your backend, fully API enable it, and have wicked fast processing of data. You can do so across a number of platforms. Draw your line there and then come over the top of it with React or the UI tools and frameworks of your choice.
I built this service/site in Go and React. It’s live on the Internet and gets hammered by a number of sites and honey pots I run. Total memory consumption? 20MB. Yes, 20MB. Now Go’s runtime puts a fence around 1.5GB but this thing takes constant API hits, has a embedded NoSQL type store, and is constantly updating. No Nginx in front of it. . it is its own webserver too. I haven’t rebooted it in over a year.
Is the UI good? No, I’m a backend, server side, and CLI guy but the React front end has a map, updates on the boards jump up in the air, and live attacks flash.
Use Go’s efficiency to really re-imagine your architecture into a proper breakout of services and use the best tech available to accomplish what each layer is designed to do.