views:

210

answers:

11

I'm joining a new venture, and we're selling a software product that we're going to create.

We need to create a website that will:

  • Handle customer orders
  • Take credit card payments
  • Distribute serial keys
  • Handle support queries
  • All the other misc stuff

But here's the thing, we can't really spend a lot of time on the site, and we can probably afford to make it quick and dirty, as long as it's stable...

Now, I have a lot of experience with ASP.Net C#, but the problem is, we need to use Linux hosting instead of Windows hosting - so that's out of the question. In the past I've used languages like PHP, but since becoming a C# programmer, I have grown less fond of PHP, so I'd rather not use it. I find C# a little easier to debug than PHP, and I'm also more comfortable with C# in general.

Since I have experience with C++ also, I considered various C++ development toolkits, such as Wt and CppCMS, but I'm worried about taking the massive risk of using a new technology on such a tight time scale. Plus, even trying to set it up seems to be a massive pain, so I'm worried about the bus factor. Like I said earlier, we need something up ASAP.

Are there any open source projects we can use as a base, on to which we can hack our own features? Is it worth biting the bullet and going back to my PHP roots? How far has PHP come in the last 5 years? Is it catching up? Maybe there's some sort of web version of mono?

+3  A: 

Mono will be able to run your asp.net applications on linux. It's come a long way in the past few years as far as compatability with the .NET framework, and almost all of .NET 2.0 is supported and good portions of .NET 3.5 as well (such as LINQ).

If .NET and C# is your personal preference (I'm with you on that), than I'd suggest at least diving into Mono, as you're going to end up saving yourself time as you can use your existing development environment (Mono is binary-compatabile with Visual Studio dlls) and knowledge

LorenVS
Did you mean, "Mono will be able to run your asp.net applications on LINUX" - by any chance?
nbolton
lol, yuppers... oops
LorenVS
Ah excellent! I was hoping you'd say that hehe. Is this the right page? http://mono-project.com/Guide:_Porting_ASP.NET_Applications
nbolton
That page is more suited towards translating existing asp.net applications that use .net specific features (sql client, for example) to applications that will run on Mono. If you're using Mono from the get-go for this project, just make sure you don't use those features that aren't going to be supported.Although I wouldn't recommend it, I suppose you could just build on .NET and then port to Mono, in which case that page would be the place to start
LorenVS
Hmm, maybe not... I'm going to install MonoDevelop and see what options/templates that gives me.
nbolton
A: 

... how about Grails? With php you can cobble together a decent hybrid, especially if you'd use something like CakePHP for the core and add opensource packages around for stuff as needed.

vector
A: 

Personally, I love doing web development in Java. Recently, I've started to look at Groovy on Grails, which looks like for a basic website could really speed things up.

Its basically Ruby on Rails, but instead its using a dynamic language built on top of java (so you get all of the java libraries).

I think if you know C#, it shouldn't take more than a day or 2 of playing in java/groovy to get up to speed.

Eric Anderson
+5  A: 

If you're looking for cross platform abilities and fast development time, I'd suggest a scripting/dynamic language with a framework. I agree with your thoughts on eliminating complicated options. C++ would probably make your codebase unnecessarily complicated, and Mono/C# on Linux is probably going to give you grief (I have minimal experience in either, so this is just an opinion, not based on any fact).

(On a side note... to give you zero development time (although replaced with $ cost), have you considered and/or researched 3rd party services? There are many hosted services around that will give you what you're looking for.)

Back to the question, I'd suggest looking at either:

  • Ruby on Rails. Ruby is a bit of a learning curve, but since you know a few other languages and seem smart enough, you may be OK. Rails gives you a mature web framework and community (read: lots of nice plugins to get some out of the box functionality).
  • PHP + CakePHP. Yes, PHP has come a long way in 5 years. CakePHP may address some potential PHP issues that you may be concerned about. Although you haven't mentioned what you don't like about PHP, so I can't say whether this will fit. Cake plays catch up a bit to Rails and there are some nice Rails features missing from Cake, but as you already know PHP, this may give you a nice compromise. CakePHP will also probably give you the least fuss in server configuration and setup as all you need is PHP and Apache.
  • Python + Django. I haven't used this option myself, so I won't comment too much on it, someone else may be able to give us the pros/cons.
Dan Harper - Leopard CRM
Nice answer. For some reason my gut feeling is with Python. I think this is because I know nothing about ROR, and I think I prefer Python to PHP (although Python's indentation based syntax can be a bit annoying if you're not used to it).
nbolton
+1  A: 

Django with Python is probably your best bet: http://www.djangoproject.com/

Cuga
+5  A: 

At this stage, what you really need is a quick way to take customer orders, to validate your product. You do not need a full-blown website(that comes later after your product is proven to be profitable, and the site gain traffic)

The easiest way of doing this:

* Handle customer orders (1 page HTML with form or use paypal)

* Take credit card payments ( use paypal)

* Distribute serial keys (do it manually, with a real person sending out emails)

* Handle support queries(ask them to email you..)

* All the other misc stuff(not at this stage, you don't need 'nice have' features )

so what you really need is just one HTML page, with your product information, and a paypal link.

The downside of using PHP, Rails or other web frameworks is - you give yourself a lot overhead to maintain, and build new features, which are unnecessary in this stage of the game.

ez
+1 This is a great answer, though it will never get upvoted a lot :)
Yar
thanks yar, sounds to me building a web application is not Nick's core business, so it makes sense to me to minimize the overhead as much as possible.
ez
+1 I totally agree with keeping things simple at the first stage. Nothing could be worse than over-engineering and never deliver.
Subtwo
+1  A: 
  1. if you comfortable using windows environment to develop, use it then. Get another linux machine to test your code. You have no time to learn the linux development environment.

  2. if I were u, and development time is really short, I will check if there is a product in the market available for purchase. Is e-commerce site your main product? or it's just a tool to market you product? You want to spend time on developing the tool or on developing the product?

  3. If my memory serves me right, paypals and 2checkcout.com provide shopping cart which meet your requirements. Download the API and check how to integrate into your system :)

janetsmith
+1 for (1), people always ignore that, but keep in mind that you might get into problems in the "integration/testing" phase and you will need a linux guru
elcuco
+2  A: 

I just checked out Mono and did a port of a desktop app to Mono and it's just incredible how mature the framework is. It took a week to get most aspects running. It really does work just like .Net in many cases. Note that the Desktop part of Mono probably gets way LESS attention than the Desktop (Winforms in my case) piece, so you would be getting into a nice and mature platform if you chose Mono. Don't underestimate the value of experience and being able to use the same IDE as always (that's right, just ignore MonoDevelop and charge straight ahead with your Microsoft tools).

If you want to learn something new and you have the massive number of hours it takes to do something SERIOUS on a new platform (not just a hello world, and I refer to real hours, not the kind where you don't count your Sundays cause you love technology), it's all about the framework and not at all about the language. We're using Ruby on Rails which rocks for rapid development, but you'd have to learn both ruby, rails, and all kinds of fun deployment stuff that will keep up to 5am (which would be the same as Mono, but here you would add the time on top of all other learning).

Ruby and Rails have amazing support, both what you google and what you can ask here on SO.

I would suggest checking into Python and Django instead of Rails, because I personally am annoyed by Ruby's syntactic flexibility and Python gets a lot of love, especially from the smart dudes at Google. I personally know nothing about it.

There are probably some great MVC frameworks for .Net/Mono (for instance Microsoft MVC runs on both), so again, all paths lead to Mono.

Only problem with Mono is the many many unanswered questions on the forums.

Yar
A: 

Surprised anybody mention java J2EE :)

Rebol Tutorial
A: 

Hello,

It is one thing to have a world class product and another to have a great website to support it. We used a good solution using PHP for our site. We are running our server on the RackSpace Cloud because it is pay as you use thus keeping our costs low.

Here are the tools we used:

  1. Site (custom built using PHP, but you can go for Joomla if you want a simple CMS system).
  2. Knowledge-base: Wordpress (we used the following theme $30, but worth it: http://themeforest.net/item/wordpress-wiki-theme/29479)
  3. Ticketing system: Cerberus (http://www.cerberusweb.com)
  4. Webmin (phpMyAdmin alternative, easy to install on Ubuntu)
  5. Discussion board: vBulletin $180 (http://www.vbulletin.com) but you can use phpBB free alternative)
  6. E-commerce: PayPal and 2Checkout

It requires roughly 1-2 days of work to get the whole site up with the above tools. Simple enough as long as you get yourself a good design and everything. Good luck!

Alec Smart
A: 

I would suggest try following.

  1. Mono, may be quick and dirty solution, but IMHO it is not mature enough for web development: http://art-blog.no-ip.info/cppcms/blog/post/27, at least that was the situation about a year ago. So be careful.
  2. J2EE -- You should feel yourself well in Java world because C# and Java very close... So you may learn a new web platform quite fast.
  3. Use one of new rapid development platforms like Django or RoR -- it takes some time to learn them, but Python is quite nice language to code and you should be able to start fast.
  4. Take existing CMS like Drupal (written in PHP) and suit it for your needs. This would probably be the fastest solution.
  5. C++ web frameworks... They do not designed for fast development of small web applications. They are more time consuming and more oriented to high perfomance applications (CppCMS) or embedded applications (Wt and CppCMS). In your case of medium level project I would suggest to go with something more popular in web development.

So... now what to do?

First of all I would suggest to move from Asp.Net to new cross platform tachnology as it does not locks your customers to Windows platform... Maybe its time to move on.

Artyom