WithCake.com Revamp

Sometimes you have to try something a few different ways to get it right.

When I originally launched WithCake.com, I had used it as a blog to talk about anything I ran into with CakePHP development. However, I quickly found that some posts bordered on the edge of general PHP stuff. Plus, many regular readers of Snook.ca seemed interested in following along even though they might not develop in CakePHP currently.

So, I stopped using WithCake.com as a blog and moved those posts into this site. Which left me wondering what to do with the domain. With some inspiration, I came up with...

A job site!

After seeing something similar for CodeIgniter (the address of which I can no longer seem to find), I decided to make a site where companies looking to hire CakePHP developers could post an ad. Likewise, developers looking to get hired for a little work could also post an ad.

The site is conveniently divided between companies and developers with RSS feeds for each. Companies will have their ad visible for a total of 2 weeks whereas developers will be listed for a month. To help support the community, I've also made all listings for companies and developers absolutely free. (Whether or not that'll change down the road, we'll have to see.)

Made with CakePHP

Of course, the site was built entirely in CakePHP and has a really straightforward structure. I built the basic site in about 2 hours and then spent another hour or so adding on a couple extra features (notably, the RSS feeds and the ability to contact someone through the site).

I have three tables: developers, companies and contacts. The developers and companies tables, in retrospect could have been combined into one table. I originally intended them to be different enough but as I built out the features, they ended up being nearly identical.

Contacting people

The contacts table tracks any time a developer or company is contacted. I had to sit on this feature for a bit because I wasn't sure how to prevent spam. I didn't want anybody to just fill out a form and have the information sent without any kind of filter. In the end, I came up with a confirmation step that should hopefully limit this type of thing from happening.

Here's how it works: when you want to email someone, you fill out the usual details and then an email is sent to you to confirm that address. Once you've confirmed, the email gets sent out to the developer or company.

Spam and security, in general, is a constant consideration when building a web app, no matter how simple it may seem.

Check it out

Now that things are essentially "feature complete", head on over and check out the site.

Published April 05, 2007
Categorized as CakePHP
Short URL: https://snook.ca/s/790


23 Comments · RSS feed
Lance Willett said on April 05, 2007

Great to see that WithCake.com isn't dead! Hopefully the community will take advantage of the site's services -- thanks for putting it together.

Oh, and I am one who enjoys your CakePHP and PHP development blog posts, so keep them coming. ;)

Bella said on April 05, 2007

Where's that Snook.ca beauty? Rough gradient... boring colors... odd images...

I'm sure it's a well built site and good for the community, but I hate to say that I expected something a little more pretty.

Brendon Kozlowski said on April 05, 2007

Well, to be fair, he did say it took him about 3 hours. Perhaps the design was also completed within that time frame. Maybe he could hold a contest for a design so he can free up his time to do more interesting things as well. :)

Jonathan Snook said on April 05, 2007

@Bella: Ouch! Don't worry, you're not the first to mention the design. As Brendon quipped, I did do the design within that 3 hours, as well. It's mostly a rehash of the old site design. Nothing fancy by any means. But it definitely seems like I need to put a little more effort into it. :)

Jonathan Snook said on April 05, 2007

quick update: I updated the style a little bit. I still have a bunch more to add in but I think it's better than before. (of course, let me know if it isn't. :) )

Montoya said on April 06, 2007

Wow, that looks great... how do you protect the site itself from spam? Anyone could try and submit spam in the listing section, right?

Also, could you explain more about sending e-mails with CakePHP? If I could ever figure out something like activation e-mails, that would be great.

Jonathan Snook said on April 06, 2007

@Montoya: right now, I've kept it pretty simple so spammers could certainly spam the list. In fact, I should probably just go and add the listing confirmation now before spam becomes a problem.

For email, I'm using PHPMailer as a vendor package and break it down into two steps: [1.] upon acceptance, generate a key using an MD5 of certain information and store it in the database along with a confirm field set to 0. An email gets sent with the confirmation key. Then [2.] the user clicks on the link to confirm the email and I compare the keys. If they match, I set the confirm to 1 and voila, I permit whatever action the user wants.

CakePHP 1.2 is supposed to have a built-in email component allowing email bodies to be generated from views, which will be really nice. (As it is, I just do them manually as text-only bodies.)

Chris Meller said on April 06, 2007

Jonathan: I don't suppose you'd ever be interested in releasing some of your code (this seems like a good project) to the public, would you? There seems to be a severe lack of full "learn by example"-type apps out there for Cake...

I think having a popular Cake advocate toss a real-live project's code "to the wolves" would really help a lot of people become more familiar with the best ways to handle common site features in a Cake-based system.

Jason Leveille said on April 06, 2007

Excellent choice for withcake.com. I'm sure you'll have great success with this. I'll soon be overhauling an open source project I've been working on for a while (Project Alumni) with cakephp, and perhaps one day I'll decide to add my name to the list!!

Steve Lounsbury said on April 06, 2007

This is a great idea, thanks for taking it on. I'm sure it will help out Cake developers quite a bit. The design is great, but what's with the default Cake favicon? Hehe :)

Jonathan Snook said on April 06, 2007

@Chris: I'm much too critical of my own code to release it as anything resembling something that should be used as an example! But I agree, having more app examples would be a good idea. :)

@Steve: I've gone back and forth on it, actually. :) because it's a CakePHP-oriented site, I've left it in as somewhat relevant. At least until I'm inspired to pop in my own favicon (hrm... maybe I'll do that now.)

Steve Lounsbury said on April 07, 2007

Ahh, I was wondering if that was your reasoning behind keeping the default favicon, but the new one is pretty nice -- it rounds out the branding of the site, I think.

What font did you use for the logo?

Jonathan Snook said on April 07, 2007

@Steve: the font is Candy Script available from Veer, which is inconveniently down at the moment. What's interesting is that I went through all the fonts on my machine and nothing had the right feel. Either too ornate or too plain. Then I hopped on Veer and there it was as the feature font. It had that great mix of style without being garish. I grabbed the colour scheme from a swatch on Kuler and ran with the idea from there. It's interesting where you can get inspiration from.

Steve Lounsbury said on April 08, 2007

Snook, thanks for pointing out Kuler! I hadn't heard of it before. It will help me out tons because I am quite bad with picking out colour schemes. I also haven't heard of Veer before, so I'll be checking that out once it comes back online.

Dan said on April 11, 2007

@Steve Lounsbury
If you like Kuler, take a look at www.colr.org, beta.dailycolorscheme.com or www.colorblender.com....
They are all very helpful in finding an new colorscheme...

Very nice, indeed! Like the Logo and the colors.

Doctor A said on April 13, 2007

I had not heard of CakePHP until I came to this site. I went to the CakePHP site and I still am not sure what the upside of using it over simple PHP? Could someone explain a couple reasons why I should use it. I use PHP for simple web pages up too an online accounting webware application. <brt/>

I am currently trying to advance my CSS knowledge. I just completed "CSS Mastery" which lead me to this site. I loved it and I figured I would plug it. I did notice that on my widescreen monitor your blog freaks out a bit. The comments float way to far left.

Walker Hamilton said on April 14, 2007

CakePHP is a RAD (rapid application development) framework. It is built on php and introduces features that help one easily and quickly produce web applications and sites.

The upside? Quicker development than when you have to do all the database connections and manual validation of data, etc.

Doctor A said on April 16, 2007

It seems like there are always better ways to do something. I will look at it again when I have a bit more time. Thank you for the response.

Tijs said on April 21, 2007

Have you thought about making the developer part a permanent list instead of 30 day ads? If your a freelance cake developer or agency you will probably still be looking for new work 30 days from now right? I guess you would run the risk of stale content but that could be solved by having list members re-confirm their listing say; every 30 days...

Jonathan Snook said on April 21, 2007

@Tijs: I may allow developers to list permanently for a small fee. For right now, the expiry helps manage the site and I can focus on other projects.

Wesley Mason said on May 01, 2007

Fantastic idea!

It would be good if the submission by companies looking for developers suggested the submitter included the location of the company, especially when they're looking to fill permanent positions.

Chris said on October 08, 2007

Nice, simple, and well implemented congrats...certainly not one for feature bloat are you ;-)

I may have considered, longer company and develpoer profile pages but given that you want to minimise maintenance and help manage the site i think you've made a good deciswion in KISS.

Chris said on October 08, 2007

Thanks as well for pointing me toward Kuler that really very cool. In the past I've used the Photoshop Web2.0 color palette

Sorry, comments are closed for this post. If you have any further questions or comments, feel free to send them to me directly.