This is going to be a series of posts in which I will try to demonstrate how to build a complex modular Spring web application. We will use progressive enhancement to slowly improve and build this application. So what are we going to build? OK here is a small set of requirement we will try to cater :
- Sign in user
- Sign out user
- Create a lead
- Edit lead
- List lead
- Copy lead
- View History of lead changes
- Send mails to these leads as part of some camapign
- Delete lead
Some non functional requirements I will look into are:
- Modular application module - so that it should seamlessly include a new module. Lets say tomorrow we want to include an opportunity module it should work by dropping in a jar with views, navigation, menu items, context menu etc - just with server restart.
- Must be able to support NoSQL stores with minimal changes.
I have generally selected the following as my tool and technologies:
- Spring Framework 3.1.2 - core framework
- Spring DATA - For data access
- Thymeleaf for templates - sorry I will not use JSF 2 and rich UI frameworks like Primefaces, Richfaces etc. They are awesome, but I would love to have more control and flexibility with my UI. Also JSF 2 even with nicities and improvements has lot to learn.
- Spring Web flow 2.3.x ---- will try to implement if does not hamper my modular requirements
- Spring Security
- Spring Integration
- Spring Social
- Tomcat 7 - Server
- Spring Source Toolsuite --- IDE
- Maven - Build tool
So far so good, we will add or update things as per feedback and if required.
The project will be available on some Google code repository soon. I will tag it as I go along.