Meetup Organizer
Background
I organize the largest iOS meetup in NYC, iOSoho, and it was hard for me to upload photos to events with the Meetup app because you can only upload one photo at a time. Meetup Organizer app solves my personal pain point, and it makes me very happy.
If you want to upload photos to the Meetup events you attend, download the source code and run it on your iPhone. See How to run instructions below.
- Login with your Meetup account to authenticate.
- The app will request you to authorize the Meetup Organizer app and grant access to your Meetup account in order to upload photos on your behalf.
- The app will display the list of upcoming and past events that you RSVP'ed "Yes" to.
- Select an event, and upload multiple photos with a click of one button!
Demo
How to run
- Download the source file
- Open
MeetupOrganizer.xcworkspace
project - You will see an error message and the missing
Constants.swift
file in the Project Navigator in the Constants folder.
MeetupOrganizer app uses OAuth protocol to let their users login and authenticate with their Meetup account. You will need to add Constants.swift
file to the project with your API key and OAuth Consumer key and secret credentials.
- Create new file (cmd + N), name it
Constants
, and add to the project. - Copy-paste the code from here, and insert your own API and OAuth keys.
Build and run.
You should be able to build and run the project now, but you may encounter a few other possible errors.
Missing module error:
- Build (cmd + B) the project. The compiler should stop complaining.
đ đ - If building the project didn't help, run
pod install
in your terminal.
It shouldn't be a problem, but just in case, if you're missing the image assets in the project, you can download and add them manually from here.
Acknowledgements
- CocoaPods NYC Meetup - peer lab
- Alamofire - HTTP networking library
- BSImagePicker - replacement for UIImagePickerController for multiple image selection
- NVActivityIndicatorView - collection of awesome loading animations
- OAuthSwift - Swift based OAuth library for iOS and OSX
- Meetup Logo image
Resources
- iOS Programming: The Big Nerd Ranch Guide by Keur & Hillegass
- Building URLs with NSURLComponents and NSURLQueryItems
- Meetup API Documentation
- PHImageManager
- How to hide your API keys
- Best Practices for Opening a Web Page Within an App
- Meetup oAuth2 Documentation
- OAuth 2
- Integrating LinkedIn Sign In Using OAuth 2.0 - AppCoda tutorial
- OAuth 2.0 with Swift (Google Drive example) - raywenderlich.com tutorial
- SFSafariViewController and OAuth â the Instagram example
- OAuth2 iOS Example (Reddit)
- Implicit Flow Example
- OAuth2 - OAuth2 frameworks for macOS, iOS and tvOS written in Swift 3.0
- Anatomy of an http URL
- DateFormatter all formats
- Flawless UICollectionViews
- Namespaces in Swift
TO-DO
-
refactor image upload
-
on navigation to AddPhotosVC, display photos that are already on the server (fetch photos, display in the collection view)
-
when uploading new photos, add new photos to the col view (different section? )
-
improve response time on fetching upcoming and past events: cache response, add pull to refresh
-
add log out/switch account button
-
add tests
-
handle errors, create user facing alerts
-
add empty states: no upcoming events, no past events
-
nit: request access to photos on add photos button tapped, not on vc navigation
-
add an app icon
-
? add caption to uploaded photos: Uploaded by
member name
via Meetup Organizer iOS app by Ayuna Vogel (include link?) -
upload activity indicator per cell
- the col view will display selected photos
- change cells' alpha to opaque
- add spinning activity indicators indicating upload progress per photo/per cell
- if there's a problem with upload, display a user facing error message
- when upload is complete & successful (json response came back), stop & hide activity indicators, change cells' aipha to clear
-
? search events
Resources to explore:
- http://swiftiostutorials.com/tutorial-creating-custom-layouts-uicollectionview/
- https://www.raywenderlich.com/147162/iglistkit-tutorial-better-uicollectionviews
- https://www.raywenderlich.com/136161/uicollectionview-tutorial-reusable-views-selection-reordering
- http://strawberrycode.com/blog/how-to-create-a-section-background-in-a-uicollectionview-in-ios-swift/
- http://swiftdeveloperblog.com/display-large-collection-of-images-in-uitableview-with-sdwebimage/
- testing https://github.com/meetup/testing-on-board/blob/master/CLASS.md
- https://www.raywenderlich.com/130197/magical-error-handling-swift
- https://www.raywenderlich.com/92667/securing-ios-data-keychain-touch-id-1password