I handled all programming for the project, including the database system and its connection to the Unity app. I built the festival schedule, event details, QR booking, maps, directory, and promotional screens. I implemented the UI with a designer and continued refining the application through architecture changes, performance work, and bug fixes.
Technology
Unity · C# · SQL Database
Platform
Touchscreen kiosk
01 / Festival information
Schedule & Booking
Browse by day, explore an event, and take its booking link to your phone.
A schedule driven by festival data
I built the database system and connected it to the Unity app. The app retrieves festival events, directory listings, and media links through web requests and displays them in the touchscreen interface.
I grouped events by date and time and built selectable day buttons with scroll snapping.
Implemented separate event displays for films, concerts, and activities, including cancelled and postponed states.
Built event detail pages with posters, descriptions, film metadata, and video, then generated QR codes from each event’s booking link.
The schedule periodically checks for changed data. I reused event data and existing media where possible, and delayed the screen refresh until updated content had finished loading.
02 / Finding places
Maps & Directory
Connect festival information with the places around it.
Interactive festival map
I built the map page, touch scrolling, and a legend that moves the map to a selected location. I later added a startup map selector that loads the chosen map, its legend, and its starting position from web data.
Distillery District directory
I added a directory populated from web data, with alphabetically sorted businesses, category filters, logos, hours, and QR links for directions.
03 / Page architecture & touch interaction
Kiosk Navigation
Coordinate page changes, loading, and the return to idle.
I built and later refactored the state machine, the logic that decides which screen is active. A shared festival screen contains the schedule, map, and directory, while loading and idle screens sit outside that browsing flow.
Waiting for a visitor
Idle screen
Promotional video plays.
User interactionInactivity
Visitor browsing
Festival screen
Schedule
Map
Directory
04 / Responsive & dependable systems
Performance & Reliability
Designed for responsive browsing and dependable content updates.
Reusable UI: I used object pooling to reuse schedule time slots, event entries, and directory listings, limiting repeated object creation as content changes.
Image loading: Web images were causing garbage collection stutters. I used Unity’s texture download handler to reduce temporary memory allocations and move image decoding off the main thread.
Ordered updates: I designed the loader to start queued work in sequence and keep the loading screen active until all pending work and its minimum display time are complete. Unchanged media is reused, and promotional video is stored locally for playback.
Reliable browsing: I designed page and overlay lifecycles around consistent starting states and valid booking links, with layouts that accommodate missing information and long titles.