Android Apps Projects

YourSeoul App:

Why I started: Without a doubt, this app has been my favorite app to build so far because it combines both my passion in listening to K-Pop music, and developing native Android apps! I was inspired to build this app around summer of 2017 when my friends who own a physical K-Pop store were thinking of increasing their online presence through e-commerce. Their problem was like a voice in my head that convinced me to build an app version of their store together with them in my spare time to improve customers’ shopping experiences through an app instead of visiting the physical store all the time. We wanted to empower K-Pop lovers like us by bringing them a step closer to getting their favorite albums and introduce to them a community of K-Pop lovers all through their phone.

Functionalities: Another reason why I love building this app because new ideas just kept popping up! Since the main idea of this app is about selling albums and other merchandise, I decided to try out “Shopify Mobile Buy SDK” for Android developers. First as a proof of concept before making my friends actually pay and register a Shopify store, I registered my own Shopify store as a developer and included various albums and posters. Then I integrated this SDK into my app which would connect to my Shopify store using GraphQL queries and responses. When user opens this app, it will land on the home-page that shows the Newest Arrival of albums and posters. Users can swipe left to see the “Catalogue” section where they can browse through all available merchandises. As well, this page has a bottom navigation bar where it allows user to browse all items, filter items, and sort by prices or by alphabet. All these UI-components are done through Fragment for each activities. For each item, user has the option to add the item to the shopping cart by clicking the cart icon of each item and this is done through an integration of SQL Database. All the items that are currently in the cart can be seen by clicking the top-right cart symbol. A new functionality that I just finished developing is a tab that shows upcoming “Events” of searched artists through the Ticketmaster API where user can browse and even buy upcoming concerts or events of their favorite artists.

 

This slideshow requires JavaScript.

Looking Back: The entire project process has been so rewarding because the thought that someone in the world, who is just as a huge KPop lover like me, would have big smiles on their faces when they are using my app has been my main energy source and motivation. My determination and passion has also pushed me to learn new and difficult UI-components and integrating companies’ APIs so that the app looks and functions the way that we envisioned.

Next Step: Although there has been some hiccups in developing this project, I’m going to continue developing this with the next steps being adding functionality where users can have their “wishlist” of products they may want to buy later. This might even require a login system which I might develop as well using Firebase Authentication to keep track of users’ purchases and store it in a cloud environment rather than locally on SQL database.

FriendZone Social App:

Why I started: This app was created with my teammates in Hack the Valley Hackathon on Jan. 2017. We decided to make this app to achieve the purpose of promoting face-to-face social interaction focusing on completing one’s bucket-list goals. After a long time of idea discussion, we felt that university has been compressing our free time to achieve our bucket-list goals, and it is often very hard to find someone who has and wants to achieve these goals with you.

That’s why we decided to build an app that lets users sign-in into our app or sign-in thru their Facebook account, and start to connect with other users who are also using this app. Once the user login-in, the user can create their own bucket-list, and the app will find nearby events suitable for these goals. The user can add each event onto their Google Calendar. Users can also add friends and the app will populate a list of shared bucket-list goals. Finally, the app lets you message each other to meet-up and execute the event in real-life.

Functionalities: For this app, I integrated Firebase’s Real-Time Database to save the user’s information when they sign up for an account on this app. I also used Firebase’s Authentication to ensure that the user is providing the correct email and password upon sign-in. On top of that, we believe it’s important to integrate a popular social media platform, hence I’ve used Facebook’s API and integrated Facebook Login for users to login and see their mutual friends with other users of this app.

 

 

This slideshow requires JavaScript.

Food Decision App:

Why I started: I was inspired to make this app when my and my friends always struggle to decide what food and which restaurant we should eat. I decided to make an app that would choose a food style randomly and uses Yelp’s RESTful API to suggest the best rated restaurants for the chosen food style to the user. I also integrated Google Location API to track the user’s current location to provide the closest restaurant.

Functionalities: The main screen of this app shows the available food categories, and once the user presses the button, it will randomly choose a food category and lists 3 best rated and closest restaurants.User can also save a restaurant for future references by clicking on the image of the restaurant, and that restaurant’s name will be saved in the SQL Database. If the user click the bottom button, it will take the user to the next screen where the database can be viewed.

 

 

This slideshow requires JavaScript.

GPA Success: 

Why I started: A student-friendly app that lets students calculate and save their calculated GPA into a database whenever and wherever they are. I was inspired to make this app when I was commuting to home on the subway during the exam season, and I wished there would be an app that I can use without Wifi to calculate my GPA. This app is very meaningful as it was my first self-taught Android App and my first step into the mobile app development field.

 

 

This slideshow requires JavaScript.

*For more information on any of the projects listed above, feel free to visit my Github page or contact me!

 

Awards & Leadership Experience

Here is a slide showing the list of awards I received over the last 4 years.

 

This slideshow requires JavaScript.

Leadership Experiences:

  1. You’re Next Career Network in university, event organizer for 2 flagship events that hosted more than 200 students and 100 mentors
  2. Air Cadets (See more in my post in “Life Events”)
  3. Free the Children in my school (Secretary position)
  4. Ontario Student Against Impaired Driving (OSAID) (Secretary position)
  5. Peer Mentorship guiding Grade 9 students

Places I have Volunteered at:

  1. Pan Am Games 2015
  2. Markham Museum
  3. Markham Stouffville Hospital
  4. Markham Rib-Fest
  5. Main Street Unionville

 

 

This slideshow requires JavaScript.

Mapping Software Project 2018

Background about Our Project:

ECE297 map 1
Overview of Toronto from our mapping software

From January till April 2018, I had to pleasure to work with 2 other very talented friends on a large scale mapping software coded in C++ for a course. We hoped one day our software can efficiently find the optimized route for delivering medical supplies for outbreaks in rural areas such as Ebola. However given the time and the learning curve, we were only able to develop a city-map prototype that helps the package delivery-person find routes, intersections, and points of interests in the city as efficiently as possible. Though this project was assigned to us, I learned so many transferable skills in terms of data structures & complex algorithms (Dijkstra, A*), team collaboration, overall good coding practices, and pitching our solution.

Goals:

Besides hoping for a 4.0 in this course, we also wanted to set standard goals for ourselves to grow as software engineers and ultimately achieve our hope to contribute towards helping Ebola patients. In turn, we split our project and energy into aiming for 2 areas, usability and responsiveness because we believe those are the key qualities in all the scale-able and customer-obsessed  software that we use everyday.

Usability: Since our target user is a delivery person, usability means satisfying his/her goal of delivering all the packages to the correct corresponding location within his assigned time. 

Responsiveness: Aimed at the fastest performance possible for all actions in our software

Functionalities & Demo:

Auto-completing Searching of Intersections:

We implemented this feature hoping to save user’s time when typing out street names and make our map more user-friendly. This is a functionality where when user clicks on an item in the menu, we prompt the user to enter street names of an intersection. While they are entering the name, if user doesn’t remember what type of road this street is (avenue, road, blvd, e.g.), then we can autocomplete this part of the street name. This was implemented using a trie-tree data structure to piece out the word together.

Video Demo

Dynamic appearance of Points of Interests when Zooming:

To improve further of the usability of our map, we wanted the amount of Points of Interests (POI), such as restaurants, attractions, and banks, to change dynamically based on the zoom-level. We specifically designed our map this way so that when user zooms-out on a spot, not all POIs will show-up at once and crowd the view. Instead, we designed an algorithm to determine exactly how many POIs we should display for the appropriate zoom level. Though it seems like an obvious feature to implement, we were surprised when we found out that we were the few groups that did this which made us unique and more attractive to users!

Video Demo

Algorithms to find the optimized route from A to B:

Dijsktra’s algorithm is a famous algorithm to find the quickest legal path between point A to point B. Even though it was a requirement for all the students to implement Dijsktra’s algorithm, my team went beyond the expectation and implemented an efficient version of this algorithm and passed all the performance tests as given by the course. We were able to achieve this through extensive use of data structures that provide O(1) speed in common operations, and we also integrated the A* algorithm  to focus on a specific direction and then exploring the optimized route from there. Looking back, these 2 algorithms were very hard to implement in 2 weeks alongside with 35 hours of demands from other classes. However I’m so proud of my team who struggled through together at the toughest times with barely any sleep and food, and yet we were still able to overcome this challenge!

Looking Back…

ECE297 Team photo 2

These silly photos of us really made me reflect back on how much we have all grown and how much I appreciate these friends for being there with me through this ride. Though we look happy in the pictures after we finished our final presentation, we all fought, argued, and celebrated prior to these photos because we care about the project so much. However our willingness to do well in this sometimes stressed us out and unintended words were thrown at each other. It is through this project that we all learned better about each other and confronted our feelings when one of us were hurt. Personally there were times when I lacked confidence in my ability to be a future software engineer, but it was them who supported and helped me get out of the depressing thoughts. Most importantly, I’m thankful that the 3 of us experienced and survived this journey together!