Resonate Hero

Background

In 10-weeks of timeframe, I was tasked to develop a native mobile application using XCode and Swift. The application I developed is called, “inspirio”. It is a mobile application to manage your inspirations for your projects. You can save and organize any photos and thoughts related to your project. There are many existing applications, in which you can manage your photos and thoughts with, but not specifically for your project. Hence, I came up with the idea for “inspirio”, in which you can simply organize photos and add your thoughts for different project to help you stay inspired and productive.

Challenges

The major challenges for the project were the limited timeframe and knowledges in XCode and Swift as I was learning new tools at the same time I was building the actual application. I had to constantly research to build any parts of the application, such as custom button, dynamic text view height, etc.

Hence, there were lots of adjustments in the scope of the project throughout the development. I needed to be wise with how much time I can allocate to each feature in the application as well as which features have priorities over others.

Resonate Location and Mood

Development

Since the structure of the application was very much based on how I want to use this for myself, I had clear ideas of how it should look like and function. Hence, I began by building mockups in Sketch; I added color schemes and custom UI components. And then, I transferred these static mockups into interactive prototype using XCode getting used to the concept of its constraints and interfaces.

Once I transferred over to XCode, the process was the iteration of addition and adjustments. I gradually built upon what we learned in the class as well as what I taught myself from online resources. Because I was building the application as I was learning, my initial design went through several changes in its features. For example, there was a tag system throughout the application in the initial design that allows users to filter posts (photo and note) with specific categories; however, this was removed as I wanted to spend more time on how to import photos from user’s album on device, which requires additional plugin from XCode.

Resonate Gestural interactions

Besides removing the initially designed feature, I also added few new features as I was building in XCode. And I also needed to be wise how to fit those newly added features without pushing my current timeline. For removing existing projects and posting, I decided to implement simple long press interaction along with alert system as it will be simple enhancement from button events we learned in the class without adding complexity to current design and code. Alert system was also implemented to prevent errors from insufficient inputs when adding projects and posts.

Resonate Gestural interactions

Once I figured out how to collect all the necessary inputs, such as image and project name, from users, the next big step was to store these inputs in XCode’s CoreData. Storing string input to CoreData was easy but, storing color and image object was a bit tricky task. Since CoreData does not support attributes/fields with the specific type for color and image, I had to find a way to convert them into acceptable type of data and convert back for the use. Fortunately, for color object, which is necessary for creating new project, I found the extension that allows to convert color object to hex string and to use that hex string for color object. And for image, I was able to convert it to binary data and then, use that data for storing and retrieving to display an image.

As CoreData isn’t meant to store large data, this approach wasn’t the best approach to store images; however, it was the best approach to establish the working feature of storing images on time with some caveats in optimization.

Resonate Prototypes

Final outcome

Although the final deliverable went through lots of adjustments from its initial features and design, the application fulfills the very intention I had when ideating it, which is to provide the place to store and organize user’s inspirational media for different projects.

The main takeaway from this project is not only to learn how to build an application from XCode, but also to expand upon what you learn in the class. And through that process, I improved my skills in reading and understanding somebody else’s code and making those lines of code to work with my code.