Skip to content

maitreebain/InTune

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

InTune: Connect with Artist

Winning 6-week Capstone Project: Won the 'Best In Class App' award, awarded by staff from the Capital One team.

About

InTune is an app where artists can show off their skills and make a living. InTune connects artists and enthusiasts, creating a virtual community and a networking system.

Artists and enthusiasts need to create an account and give us some basic information about themselves and their interests. Artists can post videos, like other artists as well as collaborate with other artists. All users can like their favorite artists. Artists can chat with other artists. Enthusiasts can chat with artists. Everyone can post gigs, to find artists for their private events.

Features

Liked Artist Tab

Gigs Tab

Demo

Find artists using tags

gif

Starting a chat with an artist

gif

Posting Videos

intune-videogif-p1 intune-videogif-p2 intune-videogif-p3 intune-videogif-p4

Code Snippet

Creating a thread

public func createThread(artist: Artist, completion: @escaping (Result<Bool, Error>)->()) {
    guard let artistId = Auth.auth().currentUser?.uid else {return}
    db.collection(DatabaseService.artistsCollection).document(artistId).collection(DatabaseService.threadCollection).document(artist.artistId).setData(["name" : artist.name, "artistId": artist.artistId, "photoURL": artist.photoURL ?? "no photo url", "city": artist.city]) { (error) in
        if let error = error {
            completion(.failure(error))
        } else {
            completion(.success(true))
        }
    }
}    

Used a delegate to pass in tags from the cells and filtered the artists array based on tags

    func didUpdatePreferences(_ tags: [String], _ exploreVC: ExploreOptionsController) {
        getCurrentUserPref()
        tagsCollectionView.reloadData()
        artistTableView.reloadData()
        
        db.getArtists { (result) in
            switch result {
            case .failure(let error):
                print(error)
                
            case .success(let filteredArtist):
                for pref in self.currentUser?.preferences ?? ["none"] {
                    
                    self.artists = filteredArtist.filter{ $0.tags.contains(pref) }
                }
            }
        }
        
    }

Technologies

This project includes cocoapods such as MessageKit and Kingfisher to facilitate the production of the app. MessageKit was used to create conversations between our users for the chat features. Kingfisher was used to access images faster on the product. Firebase was used to organize and store user data.

Contributors

Maitree Bain Tiffany Obi Christian Hurtado Oscar Gonzales
Maitree LinkedIn Tiffany LinkedIn Christian LinkedIn Oscar LinkedIn

Support

About

Capstone2020

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 99.8%
  • Ruby 0.2%