iOS Projects

Evincel Mobile

Website Review App for Evincel

Home/Splash Screen

Text-Based Search on Titles and URLs

Browse By Categories Screen

Single Category Screen Listing Websites

Single Website Screen Listing Reviews

Page to Add Your Own Review

Sign In or Create New Account with Forms on Mobile

The Idea

My in-progress rails project, Evincel, is a website-review platform where you can rate and review websites. More features are to come, such as statistical data for websites and user pages. The Evincel Mobile app is designed to make it easy to find websites on your mobile app and read or submit reviews from wherever you are. It was an exercise, for me, in learning the proper use of RestKit, TableViews and local data storage.

The Code + Features

The main feature of this application is full CoreData integration. All data is retrieved from Evincel, the rails backend and website I built,which has an extremely clearly implemented, full REST API for reviews, websites, and users. So whenever a user of the mobile app has internet connection, the latest data is automatically fetched from the server, but when the mobile user is not online, they can still access all data already fetched by means of a CoreData mirror of the database. See here for my interpretation of the data-flow. The construction of the app also relied heavily on customizing UITables, authenticating and creating users for an AuthLogic backend, and setting up and sending forms.

RestKit API calls are made using object-mapping and, where appropriate, block-bound multi-threading to keep fetching in the background while the main User Interface thread is uninterrupted. This was slightly tricky in cases like the Category view, which implements reuseable table cells, so that pictures must be fetched and cached in order to maintain smooth scrolling, and the review submission, where I wanted the user to see their review added to the list on submission.

The Flow

To use this app, you are first greeted by the splash page with options to browse by category, search, or sign in. If you tap Search, you enter the search view, where you can input a term to search our database. If you tap Browse, you see a list of categories, each accompanied by an illustration. Tapping on one category leads you to a list of sites under that topic, including the site's favicon and page_title, and when you tap on one, you are shown a list of reviews for that site, and if you're signed in, a "+" button to add your own. If you are not signed in, you see a button that says "sign in to add." Touching the "+" button shows a review form, where you rate and comment on the site and then submit. On submit, you will be brought back to the list of reviews and you will be able to see your new review on the list instantly. Clicking on 'Sign in' will take you to a sign-in screen with a form and an option to sign up.
Github/Source

Motic

Find Happiness. Track Mood by Location.

Sign-In/Sign-Up Screen

Face View Where You Submit Your "Motic"

A List View of Your Motics + Location

Map View Plotting Your Submissions

Map View Plotting All Users' Submissions

Create Reminder Screen

You Pick the Time of Day, Motic Sends You a Reminder

The Idea

Motic is meant to give you a way to see where you are happiest and where you are less happy, so that you can see patterns in the correlation of your mood to your location. It is at the same time a window into larger patterns like what locations tend to have the happiest people during what times.
Planned features include filtering of mapviews, so that you can see, for instance, only evening records for a place, only morning, only happy, et cetera. Its strength is in its simplicity: it is not the full spectrum of emotion, just how positive or negative. If you'd like to be reminded to send in a little Motic, or mood snapshot, it can be set to show an alert daily at your specified times. I used this project to learn mapping, notifications, Parse and more.

The Code + Features

The backend for this app is entirely built on Parse. The app implements CoreLocation Manager to get users' current locations, CoreGraphics drawing and QuartzCore animation to set the movable face, custom nav and tab-bars, UILocalNotifications to show alert/reminders to submit new Motics, and the UIDatePicker to allow user input. It also implements MapKit and MKAnnotation, wherein certain challenges in the customization of the annotations were faced, and overcome.

The Flow

When you open Motic, you see a stylized login page, where you can log in or sign up. On login, you're asked to allow Motic to use your current location; you'll want to say yes. The next view is a neutral simple face with the heading "How are you?" You may drag the mouth to change its shape to reflect your mood and hit Submit, which will send your 'Motic', a snapshot of your mood, to the database. Submitting a Motic or tapping on the Visualize button will bring you to a list view of all the motics you have sent in so far, along with the address you sent them from. Tap on 'Map Me' to see all your motics plotted on a map, tap on 'Map Everyone' to see motics from all users on a map. These are intended to give you an idea of where you are happiest and unhappiest, and what areas in general tend to have other people in better or worse moods. The last tab-bar button, Settings, leads to a screen with two time-pickers and the heading "When should we ask how you are?". User may select 2 times and click Set Reminder. At the bottom, there is a note explaining that you will receive an alert/notification at these times daily, and an option to turn them off. At the top of all these views is a "+" button which takes you back to the Face screen to send a new Motic, and a power button to sign out.
Github/Source