SpotiFriend


SpotiFriend IOS App

Location based music discovery/playlist app. Users place custom markers on the world map, and can search for other playlist markers created by users. Playlist markers only appear if the user is in range of them, thereby creating incentive to explore areas around the globe and discover their musical tastes. Each playlist is linked to a Spotify playlist, and when tapped will take the user to that playlist and begin playback.

Master playlists are curated playlists that are location specific and are intended to be a taste of that areas musicical talent. User playlists can be placed anywhere, by any user, and can contain any music style. The master playlists stay on the map indefinitley, while user generated markers will be deleted weekly. This ensures the world map remains usable over time.

I developed this app to learn IOS App development tools: xCode, Swift, Firebase, and swiftUI.

Source Code Download App from IOS AppStore
User Profiles

Each user can create their own profile which allows them to post playlists to the world map. Users can change their profile picture, which will change the annotation that is placed on the map when they create a playlist (as seen above).

Users also have two score features that track the amount of playlists that they have created, as well as the amount of playlists that they have discovered.

Adding Playlists

A user can add a playlist to any location on the world map - they do not need to be there physically. This allows users the ability to share their music passion globally - without the need for travel.

However, users can only see playlists that are near their physical location - which maintains the main theme of location based music discovery.

Firebase Usage

The key tool behind th eentire app is Firebase - a Database provided by Google. I became quite adept at using this service as it handles: user authentication, all map data, all userInfo, and all playlist data. Firebase user authentication is wonderful and made creating profiles/log in/sign up seamless and easy. The Firestore Database is used to handle all userInfo, and playlist data - such as location, date created, author, titiel, etc. Finally, I used the Storage feature to store the user's profile pictures.

I also adopted a simple node JS script to easily upload all of the many curated master playlists. This provided a fast scalable way to import large amounts of data. Firebase also offers plans that scale with the size of the project from free -> paid. I cannot recommend this service enough, and I am extremely glad that I learned hwo to use it effectively.

Core Idea

This app is designed to implement an easy way to explore the music of any region that a user is currently in. For example, while on travel a user can look to see the playlists being shared near them, to get a preview of the local music scene. The user can also find the curated playlists which are more formal introductions to local artists.

This is also a platform that will hopefully generate a community of passionate music lovers who use the app to share music tastes gloablly. Any user can place their favorite playlist at any location, and can therefore share their best playlists to other users around the world. I hope the app will be used to share music styles across great distances and create a community from people who would otherwise just be strangers.

Source Code Download App from IOS AppStore

More about the project

I undertook this project to learn the tools and the process of creating mobile IOS apps. I chose to do this during the COVID-19 lockdown as the pandemic had sidetracked my work opportunities, and I wanted to use the time to be productive and follow this idea.

Previously, I had never owned or used a Mac, so it is fair to say that the journey began there. I started, in my typical fashon, of jumping right into development. This was a mistake. I soon realized that relying on 3yrs of CS courses (Go Big Red) and a few videos on xCode/Swift was not going to produce the product that I envisioned. Therefore, I enrolled in a Udemy course that taught me everything I needed to know to get started. The course walked me through: how to use xCode, I earned two levels of certification for Swift 5, and taught me how to post the final product on the AppStore. This foundation of basics allowed me to create a logical roadmap on Trello, and to truly begin development!

I began development in early July of 2020, and am currently (Sept 2020) in the process of deploying version 1.0 of my app to the IOS AppStore. I intend to update the app and continue to add features during the year.


Tools Used

  • Languages:
    • Swift 5
    • HTML 5
    • CSS 3
  • Technologies:
    • xCode 11
    • GitHub
    • Adobe XD
  • Tools:
    • Firestore DB
    • MapKit
    • CLLocation
    • Delegates
    • User Singleton