It seems there are two basic types of applications every programming tutorial introduces as an exercise: to-do checklists and basic user authentication systems. In 2016, I decided to make a concerted effort to learn more about Ruby on Rails. Being more of a hands-on learner, building an actual application seemed to be the right course.

Ruby is used heavily at my current job, where I’m employed as a front-end engineer. So walking into this, I felt comfortable with my back-end programming skills. Still, going chapter-by-chapter through a tutorial was helpful in grounding concepts I only understood from a bystander’s point of view.

Naturally, the tutorial I choose had me building a user authentication system. While the concepts I learned through this tutorial were helpful, I knew I needed to take it a notch further and turn the application into something I could use for my own needs.

That’s how TaskSpy was born. I’ve used a number of task managers for organizing my work flow and to-do items—Google Calendar, Wunderlist, pen and paper, and many more. In analyzing my own behavior, I discovered that I operate best from email, where I can flag email requests. This led to my desire to create a task management application I could email tasks to and receive daily email digests as reminders of my outstanding tickets.

I’m also a big fan of ticketing systems. When I was running a web development business, we employed ZenDesk to help us manage incoming client requests. Being able to forward emails to the ticketing system, mark tickets as pending, and closing out tickets make me an efficient worker.

Tying all of this together was my goal for TaskSpy. In the end, my setup looked like this:

  • Ubuntu server running Apache and Postgres
  • Rails for the application
  • Capistrano for deployment
  • God, redis, and resque for background tasks
  • GitHub for versioning
  • SendGrid for email dispatching

And currently, TaskSpy is capable of the following functions:

  • Use the web-based interface to create and manage rich text format tickets.
  • Send emails to an account-specific TaskSpy email address for automatic ticket creation.
  • Receive a digest of all outstanding tickets every morning.

The application took me a couple of weeks to finish, and through the process, I learned a ton. I plan to keep building features into TaskSpy as a continuing education project.

See more projects