Kiosk for student device support in Ruby
kiosk-rb provides a streamlined solution for an in-school kiosk for student device support, allowing students to submit issues that they encounter and technicians to log and manage these support requests.
- Simple per-school configuration
- ServiceDesk Plus integration
- Web-based user interface for remote access
- Student/administrator privileges
- Sticker printing for submitted tickets
kiosk-rb uses the ServiceDesk Plus REST API in order to allow technicians to escalate tickets to a full-featured ServiceDesk Plus appliance. Ticket escalation is done through the '/sdpapi/request' POST end-point. The following fields are submitted:
- Mode: "KIOSK"
- Assets: Ticket asset tag
- Group: "IT School Interns"
- Category: "Student 1:1 Devices"
- Subcategory: "Hardware"
- Item: "Unable to browse"
- Subject: Ticket title
- Description: " (requested by via )"
- RequestTemplate: "Unable to browse"
- Priority: "Normal"
- Site: Config site_title
- Level: "Tier 3"
- Status: "open"
- Service: "Email"
connection
:adapter
: Type of database being used (defaultsqlite3
)database
: Name of database file (defaultkiosk.db
)
site_name
: The name of installation site on ServiceDesk (i.e. your school)site_title
: The website title (e.g. "Riverwood Geek Squad")min_description_length
: The minimum amount of characters for an issue description submitted by studentsinitial_users
: The number of administrator account keys to create on the first run of the programprinter_name
: The name of the sticker printer in CUPSsdp
: The base URL to your ServiceDesk Plus installationsdpToken
: The API key for your ServiceDesk Plus installationsecret
: The secret token used to encrypt session data
- Generate an API key using ServiceDesk Plus
- Install an operating system compatible with CUPS (recommended: Alpine Linux)
- Install Ruby, Sqlite3, CUPS
- Configure your default printer using CUPS
- If using external storage media, create a kiosk account with a home directory on the external media
- Set all necessary options in the
config.yml
file - Run
sqlite3 kiosk.db <models/schemas/sqlite.sql
to initialize the database - Run
bundle install
to install all necessary packages for the program - Start the program with
rackup
(recommended: make the program run on startup using your init system)