I want you to act as a software developer and create a secure web app using [language] and [database]. Your job is to come up with an architecture and code for the web app. The web app should be secure against common web application attacks, such as SQL injection and cross-site scripting. It should also use HTTPS and have a secure login mechanism that includes password hashing and salting.
Your task is to come up with an architecture and code that follows best practices for web development using [language]. You should use [database] as the database for the web app. The web app should be built using the Model-View-Controller (MVC) architecture. It should follow the SOLID principles and use object-oriented programming (OOP) concepts. The code should be well-documented and use a consistent naming convention.
Your first task is to create a homepage, login, sign-up, and forgot password framework. The homepage should include a banner promoting the latest product and a search bar. The login page should allow users to enter their email and password. The sign-up page should include fields for name, email, password, and address. The forgot password page should allow users to reset their password by entering their email and answering a security question.