I want to make a web app, where do I start?

I’ve come up with an idea for a web app that I’m interested in putting the time and effort into, but I don’t know how to get from the idea to actually having people being able to access it through the web.

What I want to do is a web site that helps people id flowers, and I want to do this in a sort of 20 questions meets IMDB format. So I will need the ability to create a database and have other people add information to the database and access the database through an extended search.

I’ve programmed in C, some in java and some in javascript. I’d like to either get more experience in java, or get some experience in C++.

Next you need to pick a language/framework to use. I’d recommend ruby on rails, but you can do it with php, java, python, perl…and a whole host of others.

You also need to come up with a more complete feature set, and design a database that’ll support those features. For example, who can submit new flowers? How will the extended search work?

And probably last thing (assuming you’re following ‘best practices’) is doing the final design…picking the color scheme, adding pretty pictures and things like that.

You can do cgi programming (a cgi is a plugin that handles http requests and returns the HTML for a web page) in C++, but it’s not a popular language for web programming, nor a particularly good way to learn C++ (C++ shines on larger programs, generally).

You can write Java Server Pages (JSP) in Java if you like. I’m not sure how popular that is these days.

Microsoft’s ASP.NET allows you to write server-side applications in any .NET language (C#, Visual Basic, C++.NET, probably a few others).

Perl, PHP, and Ruby are common for these things, too. Ruby supports a framework called “Rails” that basically does the basics for you, and you just “customize” to your liking. Rails is trendy today, but I suspect that PHP is far more common, so if you’re looking for something specifically as a learning experience, PHP/Perl is probably a better choice. Python is also fairly common. All the “P” languages are both relatively simple and somewhat similar – you may want to just take a couple weeks and learn them all.

The other trendy method these days is AJAX, which basically tries to push most of the work from the server side (which under AJAX generally returns XML documents) to the web browser (using JavaScript). This allows for a more dynamic experiences (most Google stuff is done with AJAX, supposedly), at the cost of requiring that the user have Javascript turned on. Most will, but there are folks who are paranoid about it. Since your application seems like just a simple if/then expert system, AJAX might be a good fit for it.

All that having been said, the place to start is your ISP. They’ll determine what you can host and what you can’t, so not all the above options will likely apply to you.

If you’re doing this primarily for efficiency of having the final app, I’m guesing that AJAX or PHP + MySQL (there are books specifically on these combinations) will be your best bet.

If you’re doing it primarily to learn skills that are commercially valuable, I’d start with ASP.NET, AJAX, and Perl, then add Rails and PHP. Databases (if you need one) are simpler: MySQL, Microsoft SQL Server, Oracle (not in the price range of a small developer, although I think they have a free one), and PostgresSQL are some of the options, and they’re all very, very similar (SQL is not as standardized a language as most others, so solutions are often not portable, but they will be very similar from one system to the next).