Skip to content
a system to automate the ordering process in restaurants
Branch: master
Clone or download
Latest commit 75c9758 Apr 14, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
templates-en project Apr 13, 2019
templates-it project Apr 13, 2019
.gitignore project Apr 13, 2019
App.config project Apr 13, 2019
App.fs project Apr 13, 2019
Db.fs project Apr 13, 2019
DbWrappedEntities.fs project Apr 13, 2019
Form.fs project Apr 13, 2019
GlobalData.fs project Apr 13, 2019
OrdersSystem.fsproj proj file Apr 13, 2019
Path.fs added blog post reference Apr 14, 2019
UIFragments.fs project Apr 13, 2019
View.fs project Apr 13, 2019
autocompleteEditOrderItemIng.js project Apr 13, 2019
autocompleteIng.js project Apr 13, 2019
autorefresh.js project Apr 13, 2019
backbutton.js project Apr 13, 2019
copytoclipboard.js project Apr 13, 2019
jquery-3.1.1.min.js project Apr 13, 2019
log4net.config project Apr 13, 2019
printer_state_category.js project Apr 13, 2019
resources-en.xml mod Apr 13, 2019
resources-it.xml project Apr 13, 2019
role_cat_enablers_observers.js project Apr 13, 2019
script_options.js project Apr 13, 2019
script_options_add_order_item.js project Apr 13, 2019
script_options_stripped.js project Apr 13, 2019

Orders System

A tool for processing restaurant orders from the collection to the payment, emitting valid fiscal receipt.

Getting Started

Typical use is restaurants collecting orders, printing orders where needed, and deliverying the fiscal receipts.

main features:

  1. managing ingredients, and categories of ingredients
  2. managing courses, and categories
  3. managing ingredients composing the courses (receipts)
  4. collecting orders,
  5. defining users roles,
  6. managing variations of orders items (in term of add ons or drop off of ingredients)
  7. managing price variations related to order items variations
  8. printing orders by associating printer for course categories
  9. displayng order items
  10. managing payment by eventually subdividing the bill
  11. print a fiscal cash drawer (by using an external software).

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.



O.S.: Windows 7 or superior or Mac OS or Linux runtime/sdk: mono v 5.18 or .net framework 4.7

postgres 9.6 or superior


  1. clone the project:
git clone
  1. in the subdirectory ordersystmprevious run the command:
nuget restore -SolutionDirectory .
  1. install separately the Npgsql-2.2.1-net45, from In case of troubles, you may want to download the nupkg and then install from the local directory, by using the command
nuget install Npgsql -version 2.2.1 -Source %cd% -OutputDirectory packages 


nuget install Npgsql -version 2.2.1 -Source `pwd` -OutputDirectory packages 

In th Db.fs file you may want to assign the resPath variable to the full path of the net45 subfolder of Npgsql.2.2.1 containing the Npgsql.dll (i.e. somepath/Npgsql.2.2.1/lib/net45) This will help resolving the db-entity binding at compile time, and will also help editing with ionide (providing you set fsautocomplete config to "net" rather than to "netcore")

  1. change the App.config file if needed. If you specify https in App.config, then you need to provide a certificate
  2. access to sql by psql command, and create a suave user:
create user suave with encrypted password '1234'
  1. still in pgsql, create the database orderssystem
create database orderssystem
  1. in pgsql, grant all priviledges to suave user
grant all privileges on database orderssystem to suave
  1. load the orders_system.sql schema and data to orderssystem database, you may run the psql again form the command prompt:
psql -d ordersystem -f orders_system.sql
  1. build the project by msbuild

  2. connect locally using http://localhost:8083 using administrator/administror as login/password

Connecting devices

You can use any printer to print order. A configuration tool in the program allow to associate a category of coureses (i.e. pizza, drink, etc...) to a specific division (pizzeria, bar, ...). The App.config contains the full path of a lpr print command. Tested on Mac os X. For fiscal receipt a special, file "ecr.txt" is generatd in a format compatible with a proprietary software WinEcrCom 1.9.20 from Ditron s.r.l. (which is distributed together with some fiscal devices). Such software will look into the dir and print to a P.O.S. fiscal cash drawer when finding the ecr.txt file. I succesfully tested it with a Sico Athom cash drawer.

I'll try to estend it by adopting a standard non proprietary P.O.S. drivers/library.

Built With

  • Suave.IO - The web framework used
  • VSCode - source code editor
  • Ionide - Visual Studio Code extension for F#



The code style is inspired by the musicstore example given with the Suave.IO. Basic functionalities like authentication is taken from their example. The autocomplete feature in javascript is taken from


This project is licensed under the GPL License (


To print, a plain text file is sent to the printer. Special formatting (different sizes and stiles) will be one of the next features.

Blog: (part 1)


Donations are welcome. I am also available for professional support services. Just drop me a message, in case.


You can’t perform that action at this time.