Wufoo as CMS

Ian Landsman • September 2, 2014

I made a CMS out of Wufoo.

It’s pretty cool actually. I wanted to put together a quick little site for Laravel consultants that would be my go to place to send people when they ask me where they can find Laravel consultants (genius!). 

I wanted to spend as little time as possible on this. In reality we’re talking about building a list here. This would only take 1 table in a database, but I don’t want to run another database. We have databases everywhere.

I could have manually built the list, but then I’d have to type all the info in. Plus, I still need a way to get the info in the first place. This is where Wufoo comes in.

You probably already know that Wufoo is a form building tool. It’s pretty good at collecting basic info, but for my purposes what’s even better is it has a decent API. It can handle the things you’d expect like getting a list of your data, but it can also do more advanced stuff such as send you back a filtered list.

So what I did was build my Wufoo form and via Twitter got people submitting their entries. Next, I built out a simple site in Laravel that has exactly 2 application routes. One that queries the Wufoo api, caches the results and lists the entries and a second for me to manually clear the cache when we get new accepted submissions. 5 minutes of work!

They have a pretty good editing interface, so nothing to build there. To mange the listings I made a few hidden fields. One of which shows if I’ve accepted a company for listing and another where I can store any special tags/notes that need to be show. These are used for highlighting companies that have sponsored Laracon’s or use LaraJobs to hire developers.

I manually edit these fields as needed, hit the route to clear the cached version of the homepage and whamo, the listing is live.

Of course, I could have built all this, but it was fun to do it a different way and it still took less time than building out my own forms with validation, file uploading for the images and all that mess.