It has been a few weeks that I am thinking about writing a blog on the IS Reader project. In this post, I will try to answer:
- Why did I start the project?
- What will the product be functioning like?
- How did I or will I deal with it?
- What are the design rules that I am following?
Why did I start the project?
There are a lot of reasons that finally lead me to build this reader. First and most importantly, When I reading some long documents, like a book, I found myself need a sample tool that can store a pdf document online, and everytime you open it on different devices, it will restore the previous page you read. I went throught a series of search but didn’t find a sample solution. Kindle App may work but not allow pdf uploads. Dropbox and Google Drive show pdf cross device but cannot restore the progress, no need to say annoating or sharing. Foxit reader can restore but only work locally.
The secend reason is that, I was happened to take an independent study with Peter’s, our program head, phd student Julio, who took me to the ReadingCycle project. It is also a reader project, but only work for picture format books. So it is a good change to do it along with the IS Reader. (Actually IS Reader the name came with the inital of School of Information Science, but not limit to that.)
Thirdly, I am on my way finding a job, this project will be a great enhancement of my experience and CV. I will try a lot of new technologies that could be written on my CV.
Finally, there is no such a product on the web and it is not that hard to build, so why don’t I create one. Maybe it will grow into a real deal.
What will the product be functioning and look like?
On the first thought, the product is pretty sample. I can upload pdf documents on it, read it, restore the page on other devices and continue reading. By further thinking, it should support multi-user, not just me alone. Then it should provide a certain management page that can CRUD those documents. Next, it should allow user to annotate on the document. Finally, social stuff. User can share documents, notes with each other. They can track their progross. Product can even provide some kind of stratagy that my drive user to reader more, like comparing, gamification.
At this moment of my typing, I am thinking the goal of the product should be to make people more like to read, or to learn, since I read for learn.
How did I or will I deal with it?
As I mentioned, the article should be typed several weeks ago, which means I have started working on it for several weeks (19 days since its github inital commit). I choosed all those new technology from the begining. At the begining scaffolding stage, I user Yeomen to genate a express project and a webapp (merged in the middle of developing, cover later).
For the server, I use Express on Node.js, Mongoose and MongoDB for the database, Jade for the template engine. In fact, I tried to build a pure RESTful for the server, so I didn’t use Jade at the first time. But met a lot of issues. First I came across some cross-domain issue on the cross ajax call from the client. I tried jsonp and cors to fix it. Then I didn’t find a way to validate user session in a rapid way except cookies (I don’t have experience with OAuth). So I gave up the RESTful option, in order for the quick shipping.
Now, basic funcitons till making note are made. Next thing should be involved with some social, with OAuth bulid in, and books management with one-page app style (AngularJS or BackboneJS).
What are the design rules that I am following?
It is too late now, let me be short. For the design, 3 rules:
- Rule 1: As easy to use as possible
- Rule 2: As less reading interuption as possible
- Rule 3: As clean and sample as possible
Use the most quoted facebook works:
Keep Focus and Keep Shipping
That is all I need to do, no need to think to far. No matter what will the product be in the future, it has a good start, namely I build it for myself use.