I am taking up a small-scale freelance project and need some help from experienced developers.
My background: I have decent experience with Core Java in the past but have been working in C++ for the last 2 years. I have received training in some Java EE concepts/frameworks like struts, servlets etc. My knowledge of available technologies is severely limited, but fundamental programming ability is high.
The project: I am building an ERP system from the ground up for a 30 person organization in the trading sector. The system will be built module (like CRM, inventory management etc) by module, and will be quite simple in terms of functionality. The true challenge is in building a product for very novice users and understanding their requirements correctly.
Approach so far: Since most of the use-cases can be solved by using the MVC approach, given my past familiarity Java (plus how easy it was to use), and the familiarity most people have with browsers, I want to build a web application that will be hosted within the company's intranet. This is the only design decision so far.
1) This is the first time I'm embarking on an individual project like this, any advice is greatly appreciated.
2) What set of technologies (Java frameworks?) are a good fit for this project? My front-end skills are very low, and I want to minimize the efforts there.
3) The product will be incrementally delivered. How can I achieve this? How to design to support upgrades?
4) My knowledge of packaging an application for release and installation is almost null. Any resources for learning this? Specifically, a DB like MySQL will be required on the host machine, how to package this?
5) One of the biggest challenges is that the users are not at all tech-savvy and will not be able to deal with failures. How can I guarantee a very robust end-product, with minimal number of outages that require them to contact me (and lose access to their ERP in the time being) ?
6) How do I select a server (tomcat? JBoss?) to be well-suited for this project?
7) I remember ORM being powerful but difficult to implement. Is it really important? Or should I just use JDBC method calls to execute queries?
8) Any thoughts on creating back-ups (to prevent loss of business data) and logging?
9) I am working with the assumption that Java is a reasonable choice for this project, is this valid?
I took up this project to learn and because I am passionate about this giving customized solutions (want to turn this project into a reusable product and build a career out of it). Please share your expertise on the above questions and any concerns that my inexperience could have caused me to overlook. Also, any relevant resources that would be really useful.