clone the code from the github repo
$ git clone https://github.com/chuwa-fullstack-training/deals-on-demand.git
- install Java 17
- install maven, or if you are using IntelliJ, it has maven built in
- run
cd server && mvn clean install -u
to install all the dependencies - run
mvn spring-boot:run
to start the server
- run
cd client && npm install
to install all the dependencies. If you encounter some errors during the installation, you can try to removenode_modules
andpackage-lock.json
and then runnpm install --force
- run
npm start
to start the client
Right now the client side is developed with Angular and the server side is developed with Java Spring Boot. What you need to do is to refactor the client side to use React and Redux. You can use any other libraries you want, i.e AntD, MUI, etc.
- copy the layout of the current client
- make sure the layout is responsive
back service is under construction (not required so far, will be added later)
- show the list of all the deals
- show the list of all the categories
- show the advertisement on the right side
- show the search input on the top
- show the menu and account setting button on the top right
- show the navigation bar between top header and the list of deals
- navigation bar includes
Top Deals
and product categories - clicking
Top Deals
will redirect to the home page - clicking one category will redirect to the category page
- navigation bar includes
- clicking
View deals
will redirect to the product page
- show the product details, including the title, description, price, images etc.
- clicking
Buy Now
button will redirect to the product page on the original website
- show the list of all the deals that match the search query (debounced)
- searching
- if clicking one option from the search result, it will redirect to the product page
- if not selecting any option, instead clicking the
Search
button, it will redirect to the search page with all products that match the search query
After you start the server, you can visit http://localhost:5000/swagger-ui.html to see the API documentation.