Designing a Ecommerce Website in 3 months will have its own challenges. First of we need to decide on the stack to be used. For current question, i am going with NoSQL/Java and NodeJS Stack.
I am assuming the following system will already be bought from off market.
Merchandising System (Pricing/Promotion)
Auditing System
Inventory Management System.
Messaging System (Integration between various system)
Content Delivery Network
Content Merchandising System
We will have a NoSQL DB at the back-end which will have the following structure:
Key/Value pair for the following:
a. Product Id to Product Info
b. Category Id to Category Info
c. Product to Category Mapping
d. UPC Number to Product Mapping
e. UPC Number to Availability Mapping
f. Promotion Id to PromotionInfo
g. Promotion Id to UPC Number Mapping
h. Category Id to Assets Mapping
i. Product Id to Assets Mapping
j. Bag Id to Customer Id Mapping
h. Customer Id to Customer Profile Mapping
k. Bag Id to Bag detail Mapping
l. Order ID to Order Detail
Creating a back end Application layer using Java API to create the front end micro services (REST base Microservices). The components will be broken down based on the functionality Product/Category/Assets/Promotion/Bag/Checkout/Profile (this will help in long run to make changes faster and have separate team for each component which will help in CI/CD process and testing/debugging issue in production.
Create a common Core Component which will have the following things:
a. Logging Framework
b. Authentication
c. REST Core
d. Contextual Validation
e. API Validation
f. Filters for REST
g. Pagination for REST.
Making sure that this common component is injected in each module component as mentioned in step 2.
Creating a Nodejs layer which will do Isomorphic UI, more like single page app(To be SEO friendly) and to improve the page performance.
My website wont be having real time availability but that can be implemented using the messaging framework while CDN can help in improving the performance of the site.
One thing that will be different than others will be the Search functionality which will be based on Googles Tensor Flow Machine Learning where based on the segment of a customer i.e. age/location/etc. We would add a feature that the search result have a Like button below each Product Thumbnail and as customer likes a product the search result can provide more products in the same attributes along with the existing customer profile.
Again there can be more improvement but this is what i was in the first 3 months.
Search a product -> Like --> Improve the Search result --> Add to Bag --> Profile Login --> Checkout --> Email or Text Confirmation.
Hopefully i can levrage Amazon fulfillment service to deliver the product to customer door.