- A captive kiosk experience
- Checks for issues with the Kiosk and reports if there are any issues
- Allows for Kiosk "modes" which is downloaded from Fluro allowing for dynamic updates
- Allows for updating the printer settings both on the Fluro print station and locally
- Does not require a login, uses an API key instead
- Supports populating extra information to a label from Fluro
- Selects the Kiosk print station automatically when the checkin page is loaded
- Will automatically create a print station for the kiosk id with Fluro if it does not exist
- Connects to the Fluro web socket for printer updates
- Disabling the printer in certain modes
- Campus specific modes
- Auto updater
- Default startup mode for specific checkin(s)
- Campus specific form auto filling
- Setting all kiosks to the same mode
- Attempt to connect to wifi if connection issues are present
- Open the checkin page based on an event directly
- Choose what type of label printing: disabled, both, child only, parent only
- Do a test print every so often blocking print to ensure the printer is still connected to Fluro
None!
The kiosk will display a configuration page initially.
- To select a mode press the "Select kiosk mode" button and the Kiosk will set up based on the configuration from Fluro
- The troubleshooting button can be used for basic steps to troubleshoot problems.
- The advanced button is intended for extra troubleshooting steps, it allows for updating settings, restarting the kiosk, and reading logs.
- To get back into the kiosk configuration simply
tap the top-left corner than the bottom-right corner
.
- Install the relevant drivers below and configure the printers accordingly
- Ensure nodejs is installed on the system
- Download the latest installer from the releases
- Let it install
- Open the app to generate the configuration for the first time
- Edit the configuration file to include the Fluro api keys etc located in
<USER_DIRECTORY>/kardinia-kiosk/config.conf
- Add the application to startup
- Relaunch the application
- Download and install the driver from here
- Go into printer preferences and set the paper size to 99014 (Shipping Label)
- Download and install the driver from here
- Go into printer preferences and set the label size to Normal Format, 62mm (width), 100mm (length), 3mm (Feed)
- Download and install the driver from here
- Go into printer preferences and set the label size to paper size = 62mm, 62mm (width), 100mm (length), 3mm (Feed)
- Download and install the driver from here
- Go into printer preferences and set the label size to paper size = 62mm, 62mm (width), 100mm (length), 3mm (Feed)
The application configuration file can be found in <USER DIRECTORY>/kardinia-kiosk/config.conf
. The file contains the following information:
printerType
The printer type to use, see supported printer types above. (Can be set in the application)customPrinter
If desired one can set a custom printer to be used hereapiUrl
The Fluro api urlapplicationToken
The application token for access to Fluro. See Fluro -> Applications for moreapplicationDomainName
Same as abovefluroPrinterID
The Fluro printer id this checkin should use. (Auto generated using the kiosk id but can be overridden using this parameter)kioskConfigurationId
The ID of the code to read for configuration settings in Fluro. See Fluro configuration belowkioskId
The name of this kiosk (Will be used to generate a printer in Fluro named Kiosk - Name)kioskCampus
The campus of this kiosk read from the kiosk configuration file read from FlurofluroFirebaseID
The fluro firebase id used for printer events. If you don't know this ID you can find it in the fluro print station application (or ask, it's not set to keep it private for Fluro's sake)
The kiosk will request a configuration file from Fluro, this file defines the modes available to the kiosk. This can be found in Fluro -> Developers
Example
{
"modes": {
"mode1": {
"label": "Mode 1",
"posterURL": "http://google.com",
"mainURL": "http://google.com",
"enablePrinter": true
},
"mode2": {
"label": "Mode 2",
"posterURL": http://google.com",
"mainURL": "http://google.com",
"enablePrinter": false
}
},
"campusModes": {
"Campus1": ["mode1", "mode2"]
},
"kioskStartupModes": {
"KioskId": "mode2"
}
}
label
Is the friendly label shown on the buttonposterURL
Is the URL the application will direct to on the top "poster" monitormainURL
Is the URL the application will direct to on the bottom monitorenablePrinter
Will enable or disable the printer (true/false)
When a check-in occurs it sends the application a print event. This contains a HTML string that is sent which is processed here and printed. There is extra functionality within this application which allows for customized data points to be entered into a label.
To use this functionality on Fluro one can edit the HTML and add empty elements with id equal to what is wanted listed below. To edit the HTML goto developers/code in Fluro and create/edit a check-in printer template where the HTML can be edited.
<d class="nametag">
<% //These are required for the Kardinia checkin application to do api calls %>
<d id="checkinId"><%= get('_id') %></d>
<d id="contactId"><%= get('contact._id') %></d>
<d><%= get('age') %></d>
<d id="grade"></d>
</d>
Populate the school grade of the contact
<d id="grade"></d>
Populate the first most email of the contact
<d id="email"></d>
Populate the first most local phone number of the contact
<d id="localPhone"></d>
Populate the first most phone number for the family
<d id="familyPhone"></d>
Populate the first most email for the family
<d id="familyEmail"></d>
Populate the first most parent's full name
<d id="parentFullName"></d>
Populate the first most parent's first name
<d id="parentFirstName"></d>
Populate the first most parent's last name
<d id="parentLastName"></d>
Populate the first most parent's first most email
<d id="parentEmail"></d>
Populate the first most parent's first most local phone number
<d id="parentLocalPhone"></d>
Will disable the printing of the label entirely
<p id="doNotPrintLabel"></p>
Will hide the element if the event name doesn't contain "fuze"
<div id="ifFuze"><div>
Will hide the element if the event name doesn't contain "playgroups"
<div id="ifPlaygroups"><div>
Will hide the element if the event name doesn't contain "service"
<div id="ifService"><div>
Special case for if the event is a service. This will populate the label title based on what service team they are apart of
<h1 id="labelTitle"></h1>
Populate the computed age of the contact from "dob"
<d id="computedAge"></d>
- Clone the project using
git clone https://github.com/Kardinia-Church/Kardinia-Checkin-Kiosk
- Install npm dependencies using
npm install
To run the application for development use npm run start
Generate a executable in the output folder using npm run make
In deploying a new version the kiosks will automatically download and install their updates. Follow the steps:
- Ensure the app is ready for deployment
- Run
npm run build
to build the application - Goto
https://github.com/Kardinia-Church/Kardinia-Checkin-Kiosk/releases
- Click
draft a new release
and give it a tagv<VERSION>
title, and description - Upload the setup executable, the blockmap and the latest.yaml to the release (Note the file must be less than 500mb)
- Click publish release