We couldn't decide on an idea but we heard about Watson and thought it would a cool project to gain experience from!
What it does
songgen provides a service for generating Spotify playlists with various forms of content. Currently, we only plan to implement the ability to generate playlists based off of a list of keywords, or a list of images. We also built an ios application in Objective-C that makes requests to this service using the user's iPhone as the source of input.
How we built it
The "service" is our shot at a REST api, but we're still not totally sure if that's what's happening. We utilize a bundle of HTTP verbs on a node.js server handled by express.js routing. These routes integrate with the Spotify Web API in order to create the routes. Because we were using an express boilerplate generator, front end files were also created so we decided to provide a web front-end that utilizes our service as well.
In addition to the web front-end, we built an iOS application using Objective-C. This application integrates with the (currently Beta) Spotify iOS SDK in order to have the user log in with their Spotify information. Once logged in, the user navigates through a simple UI to generate a Spotify playlist using either keywords or photos selected from their photo library.
Challenges we ran into
No one on the team had any experience with Objective-C before the hackathon. We thought we would be able to get away with Swift's easier-to-learn syntax, but we unfortunately ran into problems when trying to bridge Spotify's Objective-C SDK with a Swift application.
We are currently facing the issue of sending and receiving the photos to and from our server.
Another issue we've just ran into is the problem that iOS does not natively support choosing multiple files in it's built in photo picker. We will need to look into a library that does support this.
Accomplishments that we're proud of
There is a lot of accomplishments the team is proud of. Those include:
- Learning Objective-C and feeling a lot more comfortable with a new programming language.
- Having a UI/UX expert on the team helped create a polished product that we're all proud of.
- Creating a well-designed service that we can easily access from an application.
What we learned
- More about node/express applications
- Importance of design and planning
- How well good graphics can benefit your final result
What's next for songgen
Depending on feedback at demos, we may continue to add integrations with our service. One thing we have discussed is a Atom Editor package that can dynamically generate playlists for you based on the type of code you're working on. Of course this would require a lot of added functionality, but we think it's a really cool concept!
Apart from that, we may revisit our repos during our free-time for refactoring and improving songgen.