Original Image by Charles Forerunner

There was a question raised by a collegue of mine recently, that asked "How long should it take to get a simple website up and running". That would include the project setup, writing the code, creating some simple test cases and making everything deployable. The site should have a database backend for content / access management, rather than be a flat site. My reponse was that it shouldn't take a single developer more than a few days to get it running, deployable and in a state where we could present something to the client.

My hosting recently ran out so I thought I'd put my money where my mouth is and take the opportunity to find out if I was off the mark, and to get away from WordPress while I was at it. Creating a blogging platform would be a bit more complicated than the more basic site since I would be creating the entire thing from scratch, but I figured it would be plausable and would be more realistic than making something I was just going to throw away later.

Here's a short rundown of how things played out...

Day One

The first hour was dedicated to creating a local setup. For this I used vagrant with a simple salt manifest. I managed to get up and running, with less than two hours between creating the initial git repository to manage the source to seeing a webpage running on the fully provisioned vagrant box.

I grabbed a free CSS layout (I learned long ago that I'm not patient enough to do front end development from scratch) and started to create the data structures, services and views.

By the end of the day I was able to view articles.

Day Two

Day two saw the need to create a dashboard so that the posts could be written and managed. I decided to also create draft articles so that a published article could be edited without having to publish the update straight away. That was a little bit of an annoying detour but worthwhile in the end. The site now had a way to create and publish simple articles. At this point it seemed sensible to make it deployable as there was enough to start using it in teh wild. I created an AWS EC2 instance and then created a fabric file that would git archive the code into a tarball, push it up and create templated salt states targetted for that environment.

I ran the deployment, which surprisingly worked first time! The site was up on the server, ready to use.

Day Three

Day three was all about filling in the gaps and tweaking things. The basic site was there but some functionality was missing. But more annoyingly, I didn't have a nice wysiwyg editor or a good way to show code snippets. Much of the day was spent reviewing and installing wysiwyg editors and messing around with syntax highlighting libraries (I ended up going with CKEditor and Rainbow for those interested).

Day Four

Today is day four and I think I can safely say the project is as complete as it would need to be to start showing to a client for feedback (if I had been creating this for a client).

This blog is now self-hosted on AWS and running as a live site. I'll hopefully be releasing the code as a github repository in the near future. The whole experiment took around 12 hours in total (spread over four days as this was a weekend project). All in all I think I've successfully managed to demonstrate that building projects doesn't have to be a lengthy process.


Bad implementation always trumps good ideas

19 September 2015 11:34 a.m.

Good practice in software development has always preached loose coupling and high cohesion.

While most developers understand this and try ...

Read More

New platform, new challenges

13 September 2015 19:13 p.m.

There was a question raised by a collegue of mine recently, that asked "How long should it take to get ...

Read More

SaltStack and Vagrant

14 February 2013 15:14 p.m.

Salt is an open source infrastructure management tool. While one use is to manage thousands of servers, it’s also very ...

Read More