Keeba: Homework, simplified.
What is this?
This is a homework management web app for students that can sync 1-directionally with an existing homework portal, such as a school's official one.
Therefore, it can easily integrate into an existing school system because it does not require the replacement of existing homework management software. All you one need do is build a custom adapter module for their school website (see
jbha.coffee), add water, and voilà -- your school's crappy custom/PowerSchool/whatever enterprise homework portal is souped up with the latest web goodness.
It is built with node.js/express on the backend, and Backbone/Bootstrap on the frontend. It uses MongoDB (via Mongoose) for persistence.
Most likely, there is no official API to pull courses and assignments from your school's homework portal. (There wasn't for my school's). So go and build one (I did). Node.js is exceptionally suited for the task of building a little HTML parsing-based HTTP session proxying interface.
If you've got the module built and plugged-in, Keeba takes care of the rest. And, thanks in no small part to Matthew Mueller's fantastic cheerio library, I could build such an adapter in a mere 300 lines of CoffeeScript! See for yourself in
Because most of the software schools have for letting kids check their homework at school is absolutely crap. It's like 1990's day whenever I have to log on and see what my teachers have posted for a given night.
The problem is building an end-to-end replacement for such software can be a nightmare. You've got to re-train teachers, support it, and convince the school to get on board. So I just side stepped the whole issue and built Keeba to run on top of my school's existing infrastructure.
Who's using it?
Well, I am :) Oh, and the majority of my school's student body. In fact the student body loves it so much that the school administration has actually agreed to cover the hosting costs and give it "official" sanction... not that I needed it ;)
And you/your school can too! Just fork it and make the changes neccessary to integrate it into your school's environment. It runs quite happily on a free Heroku instance.
Get up and running
- Grab the source:
git clone firstname.lastname@example.org:aroman/keeba.git && cd keeba
- Install dependencies:
- Edit config.coffee file to your liking.
- Make sure tests pass (optional):
- Set GIT_REV (optional, used to show the git rev in the app):
export GIT_REV=`git rev-parse --short HEAD`
- Start the server
Note that just running
coffee server is probably not what you want,
as it skips
make build which compiles the CoffeeScript and Handlebars
Keeba is configured through environment variables (it is designed to run on Heroku) and config.coffee.
See config.coffee for rules about the precedence of env vs config files.
You can view documentation via Jeremy Askenas's excellent docco by
make docs and viewing the created
docs folder with your favorite web browser.
- 2-space soft tab indents
- cuddled conditionals
- leave out parens where possible and practical in CoffeeScript
- multi-line comments are a no-no
- explicit > implicit
- obvious > magic
- Picard > Kirk
Project stats (as of 1/19/13)
Keeba is licensed under the terms of the GNU GPL Version 3. You can find the full text of the license in the file "COPYING" at the root of this project.