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.
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.
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. ;)
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.
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. :)
@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. :)
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. :) )
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.
@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.)
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.
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!!
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 :)
@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.)
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?
@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.
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.
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.
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.
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.
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.
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...
@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.
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.
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.
Thanks as well for pointing me toward Kuler that really very cool. In the past I've used the Photoshop Web2.0 color palette