Reading is wonderful. It can transport us into wonderful faraway lands, and even keep us grounded in reality. Unfortunately, with the hustle and bustle of modern city life, not many people can find the time to just sit down and enjoy a great book. Even school-aged children seem to be reading less than their predecessors, and the consequences of this situation are being seen with decreasing literacy rates around the world.
In North America, there is still access to books via libraries, ebooks, and audiobooks. But people in other places around the world aren't as fortunate. Direly slow internet speeds (or even no internet) and a lack of resources results in ever decreasing literacy in developing nations. That needs to change.
Regardless of age, location, or occupation, everybody can spend a couple of minutes every day reading small excerpts from books that they're interested in but never seem to get the time to enjoy. Additionally, most developing nations, while without reliable internet and/or libraries, have cellular network connections. This can change things.
Nobody should have to live without beautiful literature, and reading more is the best starting stone to a more informed and educated society. It was through that line of thinking that Alexandria was born.
What it does
Alexandria allows users to text a phone number, select a book, and receive small snippets at a time. If one so desires, one can request for the next snippet ahead of time, or wait for one day (the time period over which the next snippets are sent out on a daily basis).
With a diverse collection of literature, every person with a cellular phone - including those in developing nations - has access to amazing public domain resources at their fingertips. No internet and no contractual time commitment required.
How we built it
Alexandria is built on top of Node.js with Express.js, connected to a Firebase database, and deployed on the Google Cloud Platform. The Twilio API ties together the core SMS functionality. This modern and diverse technology stack ensures for modularity and maintainability of the core code and application architecture.
Challenges we ran into
Initially, we attempted to use a MySQL database with Python to handle storing books and user information. This proved to be a challenge due to certain limitations and deprecations that MySQL has compared with more modern database management systems. As such, we ended up re-architecting the design a few times, but it all worked out in the end with Node.js and Firebase.
Accomplishments that we're proud of
- Not getting flustered when nothing worked in our first design (Python + MySQL)
- Tying together the application with proper deployments on Google Cloud Platform and Firebase
- Creating an accessible service that does legitimate social good
What we learned
- The ins and outs of SQL
- Writing good code in a short period of time
- How to make educated tradeoffs between things like code readability and maximum algorithm efficiency
- Node.js is beautiful
What's next for Alexandria
- A bigger library! Alexandria needs to scale. The groundwork is there, and more content is the next step.
- A content parser that can scrape through ebooks and text files to automatically extract information like title, author, and when to start/end snippets.