Community Project: iOS App

Hey awesome-super-cute-and-beautiful WaniKani Community!

After bringing the Crabinator to Chrome and OS X, there is one last order from the big Crabinator: We need to get the Alicrab onto our iPhones and iPads.
But there is one problem: Making an iOS App with push notifications that is beautiful and works on every device is a big mission.
So I thought that this would be a great first…

Community Project: WaniKani for iOS


To create this great App we need everyone of you! Translators, UI and Icon Designers, Programmers, App Testers and Feedback Writers.

What should the App do?

The main features for the first version are:
  • Push Notifications on Reviews
  • Push Notifications on Lessons
  • User Information
  • Searchable Radical, Kanji and Vocabulary List
  • Critical Items List
Some additional Features would be:
  • English -> Japanese Vocabulary Trainer

What do we need to create?

Unlike PC and OS X Apps an iOS App can’t check for the API in the Background. Notification need to be pushed (send) to the Device. Because of that we need an online backend that checks the review and lesson counts for every single user. The best programming language to write something like that would be ruby on rails, sinatra or any other modern and powerful server side programming language (Preferably hosted on Heroku). 
  • Push Notification Backend 
Every iOS App lives from it’s user experience. The biggest part of the user experience comes from the user interface design. We need a modern, innovative UI Design and of course, a beautiful icon (http://dribbble.com/search?q=iphone+app)!
  • Beautiful UI Design for iPhone and iPad (iPhone 5: 1135x640; iPhone 4(@2x): 640x960; iPad(@2x): 2048x1566)
The iOS App needs to be coded. Maybe the most important part :stuck_out_tongue:
  • iOS App for iOS 5+
Make the App international!
  • Localization 

Let’s Start

Before we can start we need at least a small list of people who want to create this with me!
Please leave some suggestions, feedback and your thoughts about such a project.

P.S.: If you want to participate leave your name with the job you want to do: Translation to Portughese, UI Designer, App Tester, … 
I will create a mailing list and github project for this soon.

Team

Objective-C Programming - Noha
UI Design (busy)  - Kladkaka
UI Design - Kittonni
Localization Spanish - Chofas
Localization Portuguese - AdvanceWind
Localization Swedish  - Kladkaka
Localization Norwegian - arimail
Localization French - Jdduq
Localization German - Noha


Sincerely,
Your “REVIEWTIMEx10” Noha

As I lack a background in Obj-C, I would be fairly useless with the actual act of programming an app. But I’ll help in any other way that I can (tester, moral support, etc). Just let me know.

I’m not making any promises… but for version 2 of the API I am considering adding the ability to be able to do reviews (GET the current review item and a PUT for the user response), which of course paves the way for third party review apps…

Just getting your hopes up a little.

Are there any plans to develop an Android app?  All the best Japanese related apps seem to be exclusive to iOS.  

viet said... I'm not making any promises.. but for version 2 of the API I am considering adding the ability to be able to do reviews (GET the current review item and a PUT for the user response), which of course paves the way for third party review apps...

Just getting your hopes up a little.
 Do you have some more information how this will work exactly. Do we need to send the user input back to the server or just if its right or not, etc?

Are there any plans to develop an Android app?  All the best Japanese related apps seem to be exclusive to iOS.
I'm sorry but I don't have an android device and I don't like java :P

Haven’t thought too much about it, but I imagine it’ll work like this.

  1. Use API URL to GET the current item for review
  2. Use API URL to pass on user input to server. JSON response will be if they got it right or wrong, item information, relevant stats, etc.
  3. Repeat (1)
Maybe have 2 and 3 merged into one JSON call… Will have to play around with it. But the answer processing will be done serverside.

sirmoja said... Are there any plans to develop an Android app?  All the best Japanese related apps seem to be exclusive to iOS.  
Seconded!
Unlike PC and OS X Apps an iOS App can't check for the API in the Background. Notification need to be pushed (send) to the Device. Because of that we need an online backend that checks the review and lesson counts for every single user. The best programming language to write something like that would be ruby on rails, sinatra or any other modern and powerful server side programming language (Preferably hosted on Heroku). 
    • Push Notification Backend

How about using Urban Airship for the Push Notification backend. Could probably save at lot of work compared to building the backend from scratch. Also, the documentation looks great (haven't actually tried it myself, I haven't developed anything for IOS): http://urbanairship.com/resources/developer-resources

The free Developer edition comes with one million free push messages/month which is probably more than enough given the current size of the WK community.

When you guys will reach that point, I will be more than happy to translate everything to French. It’s not much but that’s probably all I can do without “getting in the way”. 
がんばってね!

If we tried to do push notifications, wouldn’t we run into API rate limits pretty quick? Wouldn’t a server have to hit the API over and over for each person that’s subscribed to notifications?

Hey! This sounds so good. I just started to learn how to program and would really like to get involved with this project. Is there anything a newbie could do to help you out? If not, I’ll just be an App Tester.

Rob

t0asterb0t said... If we tried to do push notifications, wouldn't we run into API rate limits pretty quick? Wouldn't a server have to hit the API over and over for each person that's subscribed to notifications?
The number of API requests is limited to 100 per hour, but for each user individually.  So long as we put out requests for lessons and review information at a reasonable interval then there should be no problem (and if we were to do this smartly, we'd avoid sending requests before next_review_date or when reviews_available_next_hour = 0).

The backend would look something like this :
IOS Client sends out API Key & user settings regarding notifications (e.g. only notify when reviews ≥ 10) ----> Backend stores information in database ----> Backend sends out API request for each user every 5 minutes  ----> Backend pushes notifications to Client ----> Client displays notifications
bk-210 said...
t0asterb0t said... If we tried to do push notifications, wouldn't we run into API rate limits pretty quick? Wouldn't a server have to hit the API over and over for each person that's subscribed to notifications?
The number of API requests is limited to 100 per hour, but for each user individually.  So long as we put out requests for lessons and review information at a reasonable interval then there should be no problem (and if we were to do this smartly, we'd avoid sending requests before next_review_date or when reviews_available_next_hour = 0).

The backend would look something like this :
IOS Client sends out API Key & user settings regarding notifications (e.g. only notify when reviews ≥ 10) ----> Backend stores information in database ----> Backend sends out API request for each user every 5 minutes  ----> Backend pushes notifications to Client ----> Client displays notifications
 Exactly! That's how we roll.


How about using Urban Airship for the Push Notification backend. Could probably save at lot of work compared to building the backend from scratch. Also, the documentation looks great (haven't actually tried it myself, I haven't developed anything for IOS): http://urbanairship.com/resources/developer-resources

The free Developer edition comes with one million free push messages/month which is probably more than enough given the current size of the WK community.
I just skimmed the urban airship docs. Urban airship just makes the notification sending easier, not the api checking. I think the notification sending is the easiest part. (https://github.com/justintv/APNS). I don't have the time atm to get into the whole ruby thing but I will try to build a prototype next week.
I just skimmed the urban airship docs. Urban airship just makes the notification sending easier, not the api checking. I think the notification sending is the easiest part. (https://github.com/justintv/APNS). I don't have the time atm to get into the whole ruby thing but I will try to build a prototype next week.
That's right, it just makes push easier (and some other stuff we don't need). I guess I'm just overly influenced by pretty websites (>_<)>. An open source library is definitively better. I'm no ruby coder, but I'll help with testing/debugging. I'm also willing to contribute to UX design (though I'm unfortunately quite busy too at this time).

What do you plan on doing about hosting though? I'm guessing you're not going to want to bear cost of it yourself. Do you think we can get by on the heroku free tier? Or maybe, the great crabbygator himself would like to host it… 

I’d be happy to translate it into Norwegian.

I also second an Android app. It could be the follow up community project when this is ready perhaps?

arimail said... I'd be happy to translate it into Norwegian.

I also second an Android app. It could be the follow up community project when this is ready perhaps?
 If we can find someone who can write java android apps, sure! I can provide all data from the iOS project.


Noha said…

 If we can find someone who can write java android apps, sure! I can provide all data from the iOS project.
 I might get in touch with you on this… I have been playing around a bit but time is not on my side at the moment… hopefully can get something started over the holidays… 

s0kud0 said...
Noha said...
 If we can find someone who can write java android apps, sure! I can provide all data from the iOS project.
 I might get in touch with you on this.. I have been playing around a bit but time is not on my side at the moment.. hopefully can get something started over the holidays.. 
As my first Android development project, I created a launcher application for WaniKani, to try to deal with the problem that the default font does not properly support some Japanese-style kanji glyphs (令). Before the holidays, I managed to add an on-demand review count checker, but didn't have enough time to make it automatic.

I plan to finish that feature after the holidays, and add the source to GitHub and get Viet to add it to the WaniKani Organization.

I would be more than happy to do Swedish translation!

And contribute to testing in some way. I really enjoy iOS apps, but I can’t do any programming.

Oh well, I like translating things.

(Brazillian) Portuguese translation here.