Ask HN: Wordpress, custom PHP or Rails/Django for a simple Web app?

11 points by signal ↗ HN
I'd like to build a web app (with help) with hopes of it becoming a FB and mobile app in the long run.

The structure is basically HotorNot/FaceMash to start. That will be the minimum functionality. From there I'd like to improve it and add the features that will actually make it wicked fun but at the very least a HotorNot that people can contribute to is the immediate goal.

Is it a waste of time to build that into Wordpress to use all of the user, db and registration framework but have to build a plugin for the whole purpose of the site?

Would it be better as a dead simple app built from scratch on a more modern framework?

Should I go with PHP so I can get cheap coding help or man up and learn a big boy language so I can finish it myself in 10 years or go broke trying?

Thanks for reading =)

UPDATE: Thanks for the wicked response, it's great to be able to 'talk' this out with the HN crowd!

28 comments

[ 13.8 ms ] story [ 89.1 ms ] thread
You can do it in all of the above. In a relatively similar amount of time if your starting from zero.

What you should do is first try the base language of each and see which one is easiest to work with. Then you can go from there.

Honestly the most important thing is that you ship.

Personally, I'd go with a php framework like Zend, Symfony, or Cake. It's php, so you'll have an easy time finding low cost developers (you'll have to filter out the bad ones). These frameworks have tools built in or easy to find for things like Ajax, user management, etc.
>> Should I go with PHP so I can get cheap coding help or man up and learn a big boy language

Facebook was written in PHP...

Re: language choice, pick whichever you are comfortable with, they all kinda do the same thing and you can mix/switch to other languages if the need for them arises later. If you go with PHP, better to go with a MVC framework like Cake or CodeIgniter or whatever, rather than Wordpress, because the Wordpress codebase is famous for being a mess.

Re: ambitions: I'd suggest doing some reading on angel investing etc before assuming you can make a "FB and mobile app" with merely some "cheap coding help".

Thanks, the 'Facebook was written in PHP' is probably the best argument for PHP there is. It makes a lot of sense.

As for ambitions, I don't see an investment need any time soon but the FB and mobile apps are where the real user base (and money) is for this thing, so I'd like that to not require a full recode or a lot of pain.

If you start learning to develop today it won't take you 10 years to do it yourself. I'm teaching myself Rails to build an app and it's not taking nearly as long as I thought it would.

This is not to say the whole thing has to be done by yourself, but it's best that you try it alone first. This way you'll know what to look for when you're bringing someone else on.

I really like Ruby and the Rails framework so that's all I can recommend based off of experience.

There are a ton of free resources to check out and the premium resources are definitely worth it too.

  www.railsforzombies.org
  www.tryruby.org
  www.railscasts.com
  www.railstutorials.org
  www.css-tricks.com (CSS and HTML)
  www.pragprog.com  (premium)
If you're not looking to do something super complicated maybe you can look into Sinatra (ruby). I'm not sure if python has something similar if that's your language of choice.

http://www.sinatrarb.com/

web.py is small, nice and simple (if that's what you mean in terms of "similar" to Sinatra).
Sinatra is what I came here to suggest when I read "simple" and "rails" used together. So I'll just give your reply a point instead.

In addition to web.py (mentioned below), there is also cherrypy. There are a lot of great lightweight frameworks that still give you some of the benefits you get from something robust like rails or django.

Pardon my ignorance, but Rails and Django seem pretty lightweight as they are... How are sinatra etc lighter (and thus easier to use somehow)?
As a simple indication, Sinatra allows you to create an entire site by editing one (logically structured) file if you want.

Rails and Django make a few more assumptions about what you're going to do (eg creating a directory structure and giving you easy shortcuts to create forms to edit pages) that are pretty useful when you're building a webapp and want to create multiple reusable parts, but may be overkill for a simple HotorNot type page.

You've overlooked an option: use Drupal as a development framework. You get core security updates and huge chunks of functionality basically for free, freeing up you or your hired gun developer to crank on the guts of your application. Wheel reinvention is minimized.
Drupal is a great framework, one I have contributed to for a while and fully support, but it is structured. For a project that requires a quick (hours/day(s)) deployment, I think Wordpress works well because you get the benefit of using a framework with nothing stopping you from completely ignoring all aspects of the framework.

Drupal on the other hand forces you to follow some guidance in how you deploy custom modules or make modifications. Sure, you could use complete custom code in Drupal, but it is not as easy to interface with. Wordpress will provide me a window into my custom code and let me hack at every aspect. In its rawest form I end up getting something to manage my blogging, pages, posts, comments, users, etc. all while consuming my hack custom code without issue.

Yeah that seems like a good option for the PHP route... Anyone second that? Is it reasonably to think that a good PHP dev could work well with Drupal?
See my comment above.
"The structure is basically HotorNot/FaceMash"

The biggest advantage of Drupal is, that probably you won't have to write a single line of code for this. You would need to learn how Drupal works (on a high-level, basic stuff), then just piece together existing modules and configure your website. That's the main idea behind Drupal - to be able to build and maintain websites without the help of a developer. This doesn't mean that the resulting Drupal module code is overly complicated and difficult to maintain, quite the opposite, it has a great community with high coding standards. Drupal was also meant to be used to build community websites, so it supports structures for multiple users creating content.

Don't use Wordpress for things that are not blog-related. Use tools that are meant for the job. It doesn't matter what language you use, they're all the same. PHP 5 has good OOP support and isn't a "small boy" language.
I did something similar and was able to roll the whole thing on Wordpress in an hour or two. For something as simple as this I would say you just stick with a framework that handles mostly everything for you.
This won't be the popular answer, but Wordpress is actually pretty good for prototyping things like this. The plugin hooks system makes it easy to try things out quickly. There is already a plugin for just about everything, so adding Facebook Connect, etc. can be done in a couple minutes.

I actually gave a talk at a local WordCamp about this. I built a couple prototypes that had APIs via simple plugins and leveraged WP users and posts (with custom post types) for content. And nearly everything can be abstracted out to the point that users won't know it's running on Wordpress.

As far as what YOU should use, the correct answer will always be "whatever you're comfortable with."

Disregard the 'whichever one is best for you' answers - those aren't helpful. The only hard and fast rule is to use a framework. WordPress, Drupal, Rails, Django are all frameworks.

I personally use Django and I think it has the most power per unit of work - this is mostly because the documentation is so good.

Rails is a totally valid option also.

I don't know anybody working on a PHP framework right now who is happy about it, whereas I meet plenty of happy Rails and Django people. There are a bunch of cool looking frameworks like Lift, web2py, etc... but stick with Django or Rails if you're not sure what to do.

Also, nobody ever wants to put their neck out and say it, but MySQL is easier than Postgres to use and manage IMHO.

Thanks, I'm comfortable with LAMP and LEMP so MySQL would definitely be my choice for db. I think I'd have the most drive to work with Django, personally, I find it pretty exciting from what I hear - and the little code I've done in Python for server scripting was actually fun...
Using a framework is a hard and fast rule for a custom web app? I disagree.
Wordpress is a no. It would not be easily maintained in the long run. If you want to use a CMS type deal then check out Drupal. I'm not an expert on Drupal and have only been playing with it for a very short time, but you could create your own module to do this and then take advantage of the other features.

If you want to make sure something is more custom I would look at using symfony PHP framework, Ruby on Rails, or Django.

My personal favorite is symfony. You can also add the Zend Library to that framework. Most of my framework experience has been with symfony.

Keep in mind there will be pros/cons to any framework you use.

I wouldn't discredit wordpress right away. I will agree that it gets tough to maintain (one of my current sites is tangled in the Wordpress framework), but if you look at blogs he is trying to replicate then you can see their all Wordpress based.

Check out these: http://www.peopleofwalmart.com/ http://www.beachcreeps.com/ http://latenightmistakes.com/ http://whitetrashrepairs.com/

The list goes on. The area he is stepping into is ran by non-techies who churn and burn. I have spoke and pitched ideas with them. Their usually later 30 year olds who have latched on to a cookie cutter framework template (Wordpress) and pump out ideas with little or no care if they fail.

Investing a lot of time in this strictly from a goal of making money is not worth it. If the goal is to learn, maybe make money then I say you choose something that you are really interested in and could see yourself using later.

I disagree about the blog similarity. I'd really like it to be a one page app to start. Emphasis on app. The idea is not to compile a blog full of images but to compare and play with the idea of comparison in a quick, addictive way.

A blog I would make on Wordpress in a heartbeat, I wouldn't bother you guys about a blog =)

Agreed, I know the 'which framework?' discussion is a slippery and horrible slope, so I'd like to avoid that and focus on getting to point B. It looks like my best bet for ease/flexibility/help is Drupal, but I may see how far I get with Django just for kicks. PHP bothers me because all I hear everywhere is how terrible it is (though it's easy and most people use it). This is one project I'd like to actually see evolve into the reality of its conceptual form, so long term evolution and elegance would be a big plus.
To me Rails is terrible (hold off on the flames), but it's only because I have used php for 10+ years and all the Rails 'experts' seem to want to compare a framework to a language. I haven't played a lot of Rails so take my opinion with a grain of salt.

I have played with Django even less, but it may be worth looking into as well as checking out Google App Engine.

My area of expertise is with custom applications and planing those applications. For what you want I feel that you can either use Drupal or a number of different frameworks.

Drupal can be used with a custom module. It will be easy to find a programmer that can create one for you and it would be easy to find someone that can create a custom theme for the site. Since you will be using Drupal, you would have access to all the features of it. You may run into issues when you start working on your mobile app.

Frameworks (symfony, Django, Rails, etc) will give you more flexibility when it comes to more custom options such as your rating system and more detailed user profiles. Most of my experience is with symfony and I am going to assume that other frameworks have some of the same functionality. Frameworks might be a better fit since you want to incorporate a mobile app.

The reason I would not use Wordpress is because for all you want to make, it is just not a good fit. Wordpress is mainly used for blogs (see one of the above comments) but what you want to make is a lot more then just a blog with some pretty pictures. There will be some type of interactivity on the site such as rating images.

I hope this makes more sense then my original comment =)

Shoot me an email (in the profile) and I will just send you my Wordpress installation from one of my sites that sounds close to what you are doing.