Building a social site using Scala, Lift & MongoDB

So, it has been quite a while since the last update on this blog. Time to do something about it and build a real-time social application using lots of new and shiny technology!

Motivation

I have a 12-year old daughter. Like many others she spend a lot of time online, Skype & Facebook of course, but mostly a horse site called net-hesten.dk (warning: in danish!) I think she has probably written thousands of messages on their forum 🙂 One of the main things you can do there is to create your own farm where you can buy/sell horses etc. As part of making your farm, you create a profile for your farm. And here all kinds of creativity starts.

Over the summer she has taught herself HTML, CSS, some Javascript, Gimp etc. just to be able to create a “cool” profile page. Nothing beats motivation for learning new stuff! Now the time has come where she wants to create her own site (the precise mammal is not known yet and probably not important). She is inspired by other girls that have learned PHP, MySQL etc. in order to build things. And while the results are not always impressive when viewed with the eyes of a professional, the dedication is.

So I decided to help her getting some of the basic components up and running and figured I could kill two birds with one stone:

  1. Try out some new technology & services that I’ve been wanting to play with for a while
  2. Get some quality time with my daughter (How often do you hear “I’ve got a cool dad”, when you proclaim you can build a web application  🙂

Ground rules

This is a side project, so low cost & high return on time invested is important. So I’ll try to see how little code I can get away with writing. It’ll also function as a test-bed for the highly (too?) popular MVP concept from the lean startup camp: Only focus on the minimal amount of functionality needed.

I’ll not be doing the layout & design, but will leave that to my daughter (which probably has better abilities for this anyway)

The idea is to blog about some of the code components that (hopefully!) will be created during this project and put some, if not all, the code on github.

The components

  • The Scala language
  • Scala IDE for Eclipse
  • LIft web framework
  • MongoDB
  • Akka
  • …and probably more
At my company we’ve been using Scala & Lift for more than two years to build a B2B SaaS platform. I’ve come across quite a few use cases where Akka & MongoDB might be useful, but haven’t had time to explore this fully. This should give me an opportunity to try it out.

The Services

Low cost is important and I don’t expect a lot of traffic here, so many of the online service providers have free plans that can be useful:

  • CloudBees for hosting JVM applications. As opposed to e.g. Google AppEngine you can actually use the full JVM functionality (e.g. create threads for Lift’s comet support)
  • MongoHQ for hosted mongodb
  • SendGrid for sending out emails
I haven’t used any of the above services so don’t know how this will turn out (though at my company we do use CloudBees’ Jenkins infrastructure for automated builds), this is part of the experiment.

In the world of LAMP there seems to be an abundance of free hosting services, but the few I’ve tried left a lot to be desired. The above services all seem fairly complete and do provide solutions for scaling up if needed  (and an idea of how they are going to make money)

2 responses to this post.

  1. Posted by Diego Medina on September 28, 2011 at 20:18

    Best luck on this new project and it is great that you will get to spend time with your daughter while working on it.

    Reply

Leave a reply to Diego Medina Cancel reply