I suppose it’s time I wrote a bit about my latest project, Rhino SchoolTracker, which I finally put up on the web a few days ago. I’ve been working on this application for the last 6 months, and it’s definitely the largest ‘side’ project I’ve done (at least in Ruby on Rails).
The concept is fairly simple. Last year, my wife was homeschooling two of our children and was using a collection of spreadsheets, word documents, and good ‘ol pencil and paper to keep track of everything, to include attendance, lesson plans, grades, etc. Being a software engineer and thus a problem-solver by nature, I figured there had to be a decent software solution out there to handle the needs of homeschool educators. Well, there are a few solutions out there, but we found them to be quite sub-par — a motley collection of windows 95-era desktop applications (we don’t use windows at the Adam house, aside from IE testing, of course) and a couple of uninspired web based offerings that looked overly complicated with dated, dreary UIs.
I thought I could do better, so I did (I hope). I created a new Rails project, opened a fresh repository on GitHub, and got to work. Most of my early UI concepts were sketched out on graph paper with #2 stubby pencil, which seemed to suit me better than any of the software-based UI layout tools I tried (the strength of which is most likely the team collaboration features… useless to a team of one).
After I had decided on the frameworks and toolkits I’d be using on the project, I settled in for many a late night and weekend in front of my computer coding. The result, Rhino SchoolTracker, is a complete record keeping system for homeschool parents. Lesson Plans, Attendance, Grades, etc. I also needed to give my application the ability to generate printable reports, espcecially attendance sheets and transcripts. The PDF format was a natural choice, and I chose a ruby library called Prawn for the task of report generation. It’s pretty nice, and I highly recommend it for any ruby project involving PDF creation.
In a lot of ways, this project was a great learning experience. I delved much deeper into the Ruby language and the Rails framework than I had in the past, and I also picked up a little CoffeeScript and SCSS skills along the way. As much fun as learning new things is, I must admit there was/is always a financial motivation to many of my projects. I intended to make a great product, yes, but I also wanted to make a bit of money doing so. Thus, as I was nearing the end of development on Rhino SchoolTracker, I had to think about how I was going to process the innumerable monthly subscription payments that were sure to come pouring in (maybe). My only experience with processing payments online has been with PayPal (ick), so I was looking for something better this time around. I wanted a simple way to manage monthly subscriptions to Rhino SchoolTracker, but without the hassles of PCI compliance or the cheesiness of tossing my users out to a third party site to input their credit card information. Enter Stripe. It’s absolutely perfect for small software shops that want quick, (relatively) painless payment processing. Using their API, I can create payment forms on my site, but all of the sensitive credit card information and such is sent to stripe for processing and never touches my server, alleviating the need for PCI compliance.
Stripe does require your site to use SSL. However, if your web application has users entering private information (such as a school record keeping system), you’ll be using SSL anyway (I would hope).
After much testing and bug fixing (always get another person to test your app, ideally a non-programmer if you have one around — my wife was happy to assist me with this), I took Rhino SchoolTracker live a few days ago. I’ve registered an LLC with my state (Caffeinated Rhino, LLC), and I’m actually envisioning a small side business focusing on educational software, so I’m hoping to come up with other products in the future.
P.S. Navigating the byzantine laws and regulations required to start a business in Virginia is not nearly as straightforward as building a quality web application from scratch. It’s something I’ll write about in the future, after I feel I have a decent handle on it (possibly never).