Shop Smart


After a lot of queries from friends and followers I am planning to start a tutorial where we will learn to build today’s e-commerce web application from scratch.

I do not expect any one to know anything other than the basics of Java programming language. It is alright if you do not know any UI programming (CSS, Javascript, JQuery etc). We will learn everything slowly and steadily.

By the end of this tutorial the readers will completely understand various aspects of enterprise applications and will be able to build any sort of enterprise application with confidence and without much supervision and help.

Who should follow this series?

  • One who feels that he/she does not understand all aspects of a web application.
  • One who wants to learn Spring & Hibernate from scratch.
  • One who wants to learn application development from scratch.
  • One who feels that it is impossible for him/her to create a complete J2EE application by themselves.
  • One who wants to learn how to make a choice between different available options while designing.
  • One who is a beginner or a pro, because I believe that there is always scope of improvement.
  • One who wants to learn the best practices in the software industry.
  • Ideally everyone who comes across this post, must follow this series. 🙂

Shop Smart – Our Shopping Website

Shop Smart is a imaginary web application that I plan to develop and host, we will be developing this website in phases. Its huge so it will take sometime. A glimpse of the functionality which we will have is as follows. I will keep updating this page as and when we add or modify any functionality.

There are two parts to an applications, let us talk about them one by one.

Functional Requirement

These are the essential business requirements of an application. An application is not at all usable if the functional requirements are not met. So here is our functional requirement. Broadly we will have the following modules in our application:

  • Customer Module
    • Login/Signup*
    • Shopping Cart
    • Customer Profile
  • Admin Module
    • Login
    • Access Management
  • Operations Module
    • Inventory Management
    • Order Life Cycle Management
    • Customer Service
  • Reporting Module
    • Inventory Reporting
    • Customer Reporting
    • Order Reporting
    • Traffic Reporting
    • Financial Reporting
  • Analytics
    • Location Based
    • Item based
  • Messaging
    • Alerts to Customer, Admin & Management
  • Recommendations
    • Based on Trends from different users
    • Based on popularity of products
    • Based on previous searches
Non functional Requirement

These are not the business requirement but are still essential. It is really important to have these requirements fulfilled for having a good life for the application. Sometimes, if these requirements are not properly addressed then we start facing challenges once the application is deployed. Here is a set of non functional requirement which we will try to address during our course of development.

  • Authentication & Authorization
  • Responsive Design
  • Performance
  • Security
    • Secure Transactions
    • OWASP & SOC 2 compliance
    • Session Management
  • Scalability
  • Extensibility
  • Maintenance
  • Hot Swapping
  • Support for White labeling
  • Themes Support
  • Testing
  • Documentation

Technologies we will explore

Let us say that we already have made a choice of technologies which we want to use, because the purpose of this tutorial is to make our readers familiar with Spring and Hibernate and few UI technologies. We will be using the following:

  • Spring Framework 3.x – Basic Application Framework
  • Hibernate 4.x- Object Relational Mapping Framework
  • JQuery – Javascript framework
  • Bootstrap – Responsive UI Framework
  • Angular JS – UI application framework
  • MySQL DB – Relational Database
  • Mongo DB – NoSQL Database
  • Apache Lucene – Search and Indexing
  • Apache Mahout – Recommendation Engine
  • Hazelcast – Distributed Caching
  • SLFJ + Commons Logging – Logging
  • Apache Tomcat – Application Server
  • JUnit – Unit Testing
  • Eclipse – Development IDE
  • Ant – Build Tool
Important Note about the versions of libraries used

I am not using Spring 4.x or higher version of Hibernate mainly because of two reasons. Frankly speaking most of the time the industry is using one version lesser than the current release version due to issues of backward complexity or the application development started when the older version was just launched.

Second, it is easy to learn a version which is there in the space for quite some time, you find many help and QA all over the internet. Once the concepts are clear, you can always find the difference in the newer versions.

Conclusion – Shop Smart Application

This is just a brief description of what we will create in the tutorial. This is not complete, so I encourage you to provide your precious helpful comments to add or remove features till the time our design is ready.

I will try to explain everything to an extent where you find it comfortable. In case you feel that I missed something, let me know by comments so that I can add some helping posts as well.

Don’t forget to subscribe to TechieMe to get updates on latest posts.