Open-source Printing Sales System
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea Ktor 1.0.1 Dec 10, 2018
art Core module as basis for Android and Desktop Nov 28, 2018
buildSrc RouteWrapper for even more Ktor DSL Dec 11, 2018
client-android Disabling Android Client until Gradle 5.0 is supported Dec 10, 2018
client-javafx Spek-style Ktor routing Dec 12, 2018
client RouteWrapper for even more Ktor DSL Dec 11, 2018
common-jvm Common JVM artifact Dec 10, 2018
common RouteWrapper for even more Ktor DSL Dec 11, 2018
gradle/wrapper Testing Gradle 5.0 Dec 10, 2018
server Spek-style Ktor routing Dec 12, 2018
website Website module Nov 24, 2018
LICENSE checkbox indicator Oct 13, 2017
build.gradle.kts Testing Gradle 5.0 Dec 10, 2018 Core module as basis for Android and Desktop Nov 28, 2018
gradlew.bat 0.1 Sep 25, 2017
settings.gradle.kts Common JVM artifact Dec 10, 2018


release build license


Point of Sale software specifically designed for offset and digital printing business. Powered by JavaFX and Kotlin frameworks. Heavily under development.


  • Multi-platform, client available in Android, Windows, and macOS.
  • Multi-language, currently supports English and Bahasa.

How to use


Head to releases to download this app in 3 variants:

  • apk: Android app installer.
  • dmg: macOS images, mount and obtain the app file.
  • exe: Windows executables wrapped in 7-zip SFX installer.
  • jar: Single Java executable file that requires JRE 1.8.


MongoDB is required to run the app, install it on server system and grant privileges to the main user in admin database:

	"user": "my_name",
	"pwd": "my_password",
	"roles": [
			"role": "userAdminAnyDatabase",
			"db": "admin"
			"role": "dbAdminAnyDatabase",
			"db": "admin"
			"role": "readWriteAnyDatabase",
			"db": "admin"
			"role": "executeFunctions",
			"db": "admin"

Where executeFunctions is a custom role:

	"role": "executeFunctions",
	"privileges": [
			"resource": {
				"anyResource": true
			"actions": [
	"roles": [ ]

Developer note

Tech stacks

Built with Kotlin in mind, this app is fully written in Kotlin and using some Kotlin-based frameworks:

  • Kotlin for JVM
  • Preview version of Kotlin NoSQL Framework
  • Kotlin Coroutines
  • Gradle Kotlin DSL

Others include:

  • MongoDB server.
  • Google's Guava, used mainly for its powerful multimap.
  • Joda-Time and SLF4J, brought by Kotlin NoSQL.
  • Apache POI and some of its commons libraries.
  • Personal libraries.

How to build

To open the project, you're going to need Oracle JDK 1.8, IntelliJ IDEA and optional SceneBuilder. Testing the app requires authenticated MongoDB server over IP address (or localhost).

Then, simply follow steps below to build [releases]:

  • Apply ktlint IDE settings (preferably in default-level, not project), if not already.
  • Run ./gradlew clean build, it will automatically perform additional tasks in the process.
    • Generate sources in app/build/generated.
    • Check Kotlin code style.
    • Ensure all test specs are successful.
  • Use packr to build native packages from jar.


Copyright 2017 Hendra Anggrian

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.