Luketopia

Theme park guide

Web app, iOS

Project icon

After having many experiences of using a theme park companion app, I wanted to tackle making my own on a smaller scale, all while getting a better understanding of Flux architecture.

Home screenAttracion screen
Home screens.

Guests first

One thing I’ve noted while using similar apps is it’s difficult to keep track of party members’ reservations as they’re often tucked away in a submenu. I wanted to bring guests to the forefront and design the overall experience around the guest, not the attractions, shops and dining.

How it works

Since this app was more a prototype to work on implementing new technologies, many expected features have been omitted including park maps and user settings. When joining the app, users authenticate into an account, and add guests to their party. Reservations may then be set for an attraction at any available time slot. To set a reservation, the user will be prompted to select a time slot and which party members will be joining. The time slots do actually function and fill up as they would on a similar app. Tapping on a user’s badge will show their individual itinerary.

Guest pickerTime selectorConfirm reservation
Three-step reservation booking.

Planning

Luketopia originally was branded as LukeVille and most of the sketching and mockups were created in an earlier course and shelved over a year before actually being built out in code. I originally started with some basic wireframes, then translated these to high-fidelity mockups using Adobe XD.

Technologies

When it came to actually constructing the app, I had one month to create a web version and a native version along with a backend server to manage it all, all while learning how to effectively implement a Flux architecture using Redux. I did have to escape using some pure functions, however, to implement calls to my own backend API and handle stateless authentication. For the frontend web and iOS/Android versions, I implemented React and React Native, while for the backend I opted for using the Laravel framework more for the sake of time to implement.