views:

293

answers:

4

I'm about to start a fairly large project for a mid-sized business with a lot of integration with other systems (POS, accounting, website, inventory, purchasing, etc.) The purpose of the system is to try to reduce current data siloing and give employees role-based access to the specific data entry and reports they need, as well as to replace some manual and redundant business processes. The system needs to be cross-platform (Windows/Linux), open source and is primarily for LAN use.

My experience is mostly PHP/web/app development, but I have developed a few LAN apps using Java/Servoy (like Filemaker). I found Servoy to be very rapid and to easily make use of different data providers (DB products), but it's not open source, and any non-standard development is in Java/Swing (which is verbose and takes a lot of time).

I'm interested in learning Python/Django or Ruby/Rails - but I'm not sure if these are the best solutions for building a mission critical data entry/reporting LAN app. Is a web client/server really a good choice for this type of application?

Thanks in advance for any tips/ advice.

+1  A: 

If you're comfortable with a LAMP-style stack with PHP, then there's no reason you can't use either Django or Rails. Both are mature, well documented platforms with active, helpful communities.

Based on what you've described, there's no reason that you can't use either technology.

Greg
Are multiple DB connections under one view a possible limitation of these technologies?
Tony
A: 

Both of these technologies are certainly mature enough to run Mission Critical applications, you just need to look at the number of big sites already on the internet that are running these technologies, so from that point of view you shouldn't be concerned.

You only need to worry about your learning curve, if you feel confident in learning them well enough to write quality code for your client then go for it. Have a look at each of them, decide which technology you would prefer and get coding.

Hope your application goes well :)

railsninja
(I assume you know rails, based on your moniker.) I'm finding the problem with the frameworks is bringing multiple db connections/ products under one view. I've found the magic_multi_connections gem for rails, but this is still beta. There doesn't seem to be a "native" way to establish multiple connections - which is more straight forward with Servoy/ Filemaker or Java Hibernate.
Tony
I wrote something that works on a production site that allows different models to be in different databases. Look it up at http://github.com/cherring/connection_ninja
railsninja
Thanks, railsninja! I found out a multi-db feature is being actively worked on for a Django update - so I think I'm going to give that a try.
Tony
A: 

You could also take a look at ExtJS for the frontend. I've made an ExtJS frontend for a company Dashboard, and using a Django backend managing the URL dispatching, the ORM and the data retrieval (communicating with the frontend with JSON webservices) and users love it, because it's almost as interactive as a local application (use something modern like Firefox 3.5, Chrome, Safari 4 or Explorer 8 for better javascript performance) but easy to manage for programmers and administrators (no installations, no local backups, no upgrade problems, etc.)

juanjux
The problem with Django, I'm finding, is that the ORM can't deal with multiple data providers (DB products). I've got product, buy and transaction data all in separate DBs - and I can't off-line the systems that use these DBs to bring it under one warehouse. I've got to connect to them all and bring the data under one view for editing/updating. Any thoughts on how to do this with Django?
Tony
I never thought about it; all the times I've used Django has been with a single DB. It would be interesting if you asked that question on it's own page here on stackoverflow because I'm certainly interested on the answers.
juanjux
I think I've got my answer, janjux. Look up multi-db on the django-developers Google group.
Tony
Nice to know that there is a plan for it to be merge for 1.2. Also, the solution of using Django with Elixir as ORM looks interesting too.
juanjux
I believe this would be in an SVN update, not a scheduled full release. If it's not coming till 1.2, then I think we've got a while to wait since 1.1 just came out 2 weeks ago.
Tony
Django trunk is very stable. If you stick to the stable API (not using any new trunk APIs except the multi-db one) you should be fine developing with trunk until 1.2 is final.
juanjux
A: 

Thank you everyone for your helpful answers! I think they address most of the issues raised by the question. But I think the key to the "final answer" (IMO) rests on the "multiple database" aspect. Railsninja suggested a piece of software he used for a project to extend rails functionality in this manner - thank you for the link! That could have been a possible solution - but it sounds like it was used for one project, and I worry about the testing since it is not a part of the mainstream Rails build.

Then I found out that multi-db support is just around the corner for a Django core update (eta late August 2009). So I think I am going to dive in to the project with Django.

Tony
Also, someone suggested using Django with the Elixir (which uses SQLAlchemy) instead of Django own ORM. That solution looks interesting too, and can be used right now.
juanjux