Jump to content

Help in deciding on approach for Web App


kbs_01

Recommended Posts

Hi

 

I have a personal project - a web application I wanted to develop - but I'm confused on which route to take.

 

I know a little programming, and have dabbled in Pascal, C, HTML, CSS and Actionscript (for Flash). And I don't mind learning a new language (PHP, Python, mySQL, etc). I am not under any time constraint.

 

About the App:

 

The best I can describe it is as a kind of expert system (but not AI) that needs to find the best workflow for a process, given a set of initial and final parameters. E.g. a 'capsule' of data must pass through many 'tools' or 'environments' to reach a desired output - something like a very complicated car wash.

 

Let's say there are many tools that can be used at various stages in the process. I have estimated there are at least 500 tools as of now, and it is bound to grow in the future as newer tools are introduced. Existing tools will also have version updates.

 

Each tool, on average, has at least 100 properties that define the tool. Some of them have as high as 1000 unique properties. Some of these tools are linked to each other - e.g if one tool is selected, there are only n tools that can correspond to it for the next step in the process. I also have the problem of 'matching' the tools for analysis. E.g. Tool A might have only three fixed rpms - 100, 200 and 500, but Tool B might have rpms from 20 to 2000. I'm not sure how I can construct a database without spelling out each number, as in the example above.

 

The total number of tools needed for the process can be defined at the beginning, however, it will change as the application becomes more complex in the future. I plan to address every contingency in the process. The idea is - if the user inputs the initial parameters and the desired outcome (another set of parameters), the app must find the 'best' path - sort of like a decision tree. The best path can be the fastest, cheapest, etc. I would like the user to choose what is best for him/her.

 

Unfortunately, parameters might change, relationships might change (but not regularly) - the 'rules' I will be using might be revised for better accuracy in prediction.

 

I also need to track each user's path and solutions' for future reference (but no personal details except username and email address for logging in). Maybe when the app is up and running, I'd like to make it more democratic, with users contributing to refining the logic/rules involved.

 

If possible, I would also like the app to output a graphical flowchart at the end showing the workflow with all tools grouped in an easy to understand layout.

 

My questions:

 

1. Will the app be better served with a relational DB like mySQL or an Object database?

2. Can I make this work with PHP+AJAX+CSS+mySQL? Is there a better alternative? I would prefer free programs - I intend this app to be free, but I might want to make it commercial later on. I need this program to run on any device that can connect to the internet, including tablets and mobiles, etc.

3. Do I need a framework?

4. Which is the best way for me to begin, considering I might have to scale it up in the future - with more data, more users simultaneously logged in, and more algorithms? I don't want to change solutions later on - if I have to invest time and effort I'd rather do it the right way from the beginning.

 

I would appreciate any help in getting started. Thank you in advance.

Link to comment
Share on other sites

This is a huge question, but I'll take a quick stab at a few items:

 

1. Will the app be better served with a relational DB like mySQL or an Object database?

If the design of the application is such that the base datatypes of the rdbms are not sufficient to support what you want, then an object database might be the solution for you.  The problem is that compared with the FOSS offerings for relational databases or nosql databases, there are very few offerings with any sort of substantial support.  The other issue with OODB's is that they are by definition non-standard although the same could be argued of nosql databases. 

 

2. Can I make this work with PHP+AJAX+CSS+mySQL? Is there a better alternative? I would prefer free programs - I intend this app to be free, but I might want to make it commercial later on. I need this program to run on any device that can connect to the internet, including tablets and mobiles, etc.

 

There is no one-size fits all. With that said, you can certainly do wonderful things with PHP+Ajax+CSS+MySQL+HTML5+etc. 

 

3. Do I need a framework?

 

There's not much advantage to writing our own MVC when so many already exist.  Ditto for an ORM if you choose to use one.  If you're going to use PHP there are a number of excellent framework choices out there, some that have extensive libraries that can also be of substantial help.  I currently recommend Symfony and the Zend Framework both of which have state of the php-art rewrites this past year.  If you don't know php you're going to have a learning curve, but each has a great community and documentation.

 

4. Which is the best way for me to begin, considering I might have to scale it up in the future - with more data, more users simultaneously logged in, and more algorithms? I don't want to change solutions later on - if I have to invest time and effort I'd rather do it the right way from the beginning.

 

This the subject of entire books  (for example, search: scalable website architecture, see books like: http://www.amazon.com/Scalable-Internet-Architectures-Theo-Schlossnagle/dp/067232699X).

 

One final and practical suggestion in terms of generating visual aids from your application is to look at http://graphviz.org/

Link to comment
Share on other sites

I currently recommend Symfony and the Zend Framework both of which have state of the php-art rewrites this past year.  If you don't know php you're going to have a learning curve, but each has a great community and documentation.

 

Thanks for your help. I have read good things about Symfony. Probably a dumb question, but do I need to learn PHP before I tackle Symphony or can I jump right in and do both at the same time?

 

One final and practical suggestion in terms of generating visual aids from your application is to look at http://graphviz.org/

 

Thanks! This is exactly what I'm looking for. Appreciate it.

Link to comment
Share on other sites

The philosophy of symfony's creator was to build an efficient development environment for use at his own consulting firm.  He went out looking for things to integrate, or built pieces modelled after other libraries that he thought were perfect.  Symfony 2.0 for example, is a Dependency Injection framework based on Spring.  Twig was based on a python template language called jinja.  Rather than create a new template language from scratch he picked up twig (which was at the time basically a defunct project) and freshened it up.  More about that here:  http://fabien.potencier.org/article/34/templating-engines-in-php

 

I certainly encourage you to start using one of their cookbooks to learn the framework and in the process delve into the php language elements you don't understand using php.net and google, and of course you're welcome to post specific questions here.

Link to comment
Share on other sites

I certainly encourage you to start using one of their cookbooks to learn the framework and in the process delve into the php language elements you don't understand using php.net and google, and of course you're welcome to post specific questions here.

 

Thank you, Gizmola. I'll do as you suggest.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.