My Media App — Native App Development Final Project

Native App Development Class

A media recommendation app designed to help users discover and track the music, movies, and books they consume.

Project Overview

For this project, I wanted to create an app where I could track the media I consume and discover more recommendations. I was inspired when I discovered the Taste Dive API, which allowed me to generate recommendations for music, movies, and books.

The Problem

It can be hard to keep track of all media recommendations you get. I often feel overwhelmed by all the books I want to read, music I want to listen to, and movies I want to watch. I also love looking back every year on everything I consumed; however, there is no streamlined app that combines the various media types and generates recommendations. I imagined this app as a Goodreads, Letterboxd, and Last.FM in one, where the user can update the movies on their watch list, the books on their TBR, and the albums they want to listen to when they finally get to consuming them.

The Solution

Part 1 — Creating the Framework

The Taste Dive API allowed me to standardize recommendations, only having to call one function for the different media types. This means that for any give movie, book or music artist, it would generate recommendations for all media types regardless of the request.

On my first iteration, I focused on connecting the API and creating the framework for my project. I designed the homepage to display the current media and created a search view that generated recommendations based on the hardcoded media I added. Unfortunately, the Taste Dive API only provided the names of the media recommendations, which limited what I could display on my app. During part 1, I added to the branding by selecting the font, colors, and styling.

Part 2 — Adding More API’s and Integrating the Results (with the help of AI)

For part 2, I wanted to connect more APIs to the recommendations to get more information on the recommendations than just the title. The visual element of media is very important and makes the recommendation list more digestible for the user. To do this, I had to connect a separate API for each media type to get the image and creator information to display. For the music API, I wanted the user to save albums instead of artists since I prefer logging the albums I listened to. I used AI to help streamline these ideas into my project.

Additionally, in part 2, I wanted to generalize what I hardcoded to create media objects that will display in the views I made in part 1. I used AI to help create a Saved Media struct and then 3 separate environment object libraries to categorize the different media. Each struct has a status variable that updates when the user selects the status of the media they consume. This status defaults to “want to read/watch/listen” when the user first adds the recommendation.

Results

I learned a lot doing this project, and getting to see my idea come to life was very rewarding. I learned a lot about Environment Objects, got more practice integrating APIs and learned how to collect input from the user. In future iterations I would like the user to add their own recommendations and media they consume because at the moment the only way to access the media is through saving them as recommendations. I’d also like to add a rating system and log the dates consumed to sort the recommendations. I would also like to further develop the UI to make the interface more engaging. This project was a massive technical challenge and I’m very proud of how it turned it out.