My friend Andy and I were in a Mexican bar one night after a long day of work. It was in downtown South San Francisco, but although we expected the bars to be more swanky because it was San Francisco, we only saw ones that were kinda old and not that good looking. Guess South San Francisco and San Francisco are different. The bar we went to had a bar tender who spoke only Spanish, so it was a Spanish refresher trying to order drinks, although, I was never taught how to order drinks in high school Spanish... Later that night, the bar tender threw ice cubes at this guy who was totally trashed. Interesting experience.
Anyway, I was talking to my friend about this idea I had to make a website. The one I already had was going to expire, both the domain and the hosting. My website was previously a WordPress powered one hosted by Bluehost. Bluehost was costing me $3.95 a month. I wanted to create one from Rails because 1) it would be free to host on Heroku and 2) it would be cool to build a website from scratch. Having a content management system would be the way to go because having to bust out a text editor and terminal every time I wanted to change something on the website would be pain. Since making a content management system wasn't a simple task, I asked if my friend wanted to do it with me. Since he wanted a website too, he agreed, and over the course of the next 4 months, we spent time after work making it happen. The resulting content management system is a foundation for which hackers with just a tiny, tiny bit of Ruby on Rails experience can quickly create personal websites.
We first started by defining features of the CMS. I had an idea of what a CMS should do because I worked with WordPress before, and I thought it was fine. There needed to be users (only one because the goal was to be able to administer personal website, which only needs one user), projects, blogs and blog entries that belong to the user. (to be continued)
We started first by reading the Rails tutorial by Michael Hartl. Most of what we wanted to could be achieved by what the tutorial taught. We needed to adapt and change just slightly to achieve what we wanted. (to be continued)
The final product is here: http://scratch-cms.herokuapp.com/ Well, not quite. This is the advertising page, but you can click around to get to the actual demo of the CMS ;) Ok fine, go to http://scratch-cms-demo.herokuapp.com/login and login with user: scratch, password: yourbutt. I'm actually quite happy with the way the UI turned out. Of course, there are some bugs and other small things I'd like to fix, but the important parts are all implemented.
In retrospect, the project works for small projects, but it's not very easy to plug in. If I were to do this again using Ruby on Rails, I'd probably turn this into an engine and document it super well so that people can just drop this into their app. If I were to do this again not on the Rails framework, I'd give Firebase.js a go. It looks like it's super quick to create something with that because the backend's taken care of. There's less setup as well, and that's quite a relief because setting up the development environment for Rails is a major pain.