WDI week 12: final project week19 Dec 2013
It finally arrived, the last week of WDI! By this point, the task of getting a project done in a week seemed MUCH less terrifying than it did 7 weeks ago.
I actually decided to go back and revisit my first project, this time knowing I would be able to add the functionality it was supposed to have back then.
To recap, my idea was a vocabulary builder tool to let you look up new words and store them until you knew them. I'd already figured out how to get the right data from the Wordnik API, but still needed to let users save the words.
I called the app WordNursery, so I wanted there to be three states under which you could save a word depending on your understanding of it: kindergarten, school and graduated.
To achieve this, each user has many lists (3 actually), and a list has and belongs to many words. In database terms, lists and words are connected by the join table
lists_words which holds the foreign key for each list and word.
When a user is created, their 3 empty lists get created too. When they add a word, it initially goes into their kindergarten list, and they're free to move it around from there.
Once I had the structural stuff set up, I worked on the UI, adding some pretty jQuery animations and implementing AJAX so that moving words between lists would happen without refreshing the page.
I also made the app fully responsive, so it works just as well on a mobile, tablet or desktop. This was important as quite often you come across new words that you might want to add to your Nursery when you're out and about, so being able to whip out your phone and add them quickly was something the app needed to let people do.
By the day we had to present, I was pretty pleased with how it was working. There are still some more features it'd be nice to add, such as the ability to share words you've saved/learned on Facebook and Twitter, and some stuff to do with optimizing for mobile to make it feel more like a native app, but for now it feels really good to have something finished to the MVP standard I outlined for this project.