# Project Planning ### **Fundamental feature** **Frontend** - Nghia starts up a React App and clean it up. - Nghia creates routes like Homepage, Not Found page, Protected Page, Login Page, Register Page, Shoppage - Nghia creates general layouts and content for all 5 pages. - Nghia creates a form component in Login Page and Register Page - Nghia creates many layouts for the Homepage with carousel and some speacial service - Nghia creates many layouts for the Shoppage with Product List, Search App Bar, and Pagination. **Backend:** - Nghia creates an Express - Mongo server. - Nghia creates a User model with the required information (name, email, role). - Nghia creates register/ login API routes for /users. - Nghia creates routes to CRUD users. - Nghia tests authentication with Front-end. - Nghia consults his mentor for guidelines, to design a Schema design. - Nghia creates routes to CRUD products. (without any authentication for now) **Testing** - To test the app: Nghia fetches data from the backend via the localhost server and renders the UI of all products. At this stage, Nghia only expects to GET all items, he doesn't need other functions like Update, Create or Delete. ### **Core feature** **Frontend** - Nghia creates a categorized product list and filter function for the ShopPage. - Nghia creates layouts, content, and components for the User Profile & Account Setting Page - UI without testing. - Nghia creates layouts, content, and components for Upload Product Page - UI without testing. - Nghia creates layouts, content, and components for Detail Product Page - UI without testing. - Nghia creates layouts, content, and components for Cart Page - UI without testing. - Nghia creates layouts, content, and components for Order Page - UI without testing. - Nghia continues to connect users' interaction throughout frontend and backend with API service and Redux, for each page **Backend** - Nghia modifies all the /products CRUD with Authentication. Testing via Thunder Client. - Nghia creates routes to CRUD cart. - Nghia creates routes to CRUD order. - Nghia deploys Backend on Heroku. **Testing** - Finally, Nghia tests the interaction between the frontend and backend with the Heroku link. ### **Cool stuff** - Nghia wants to build the Admin Page with admin permission - Nghia wants to show the status of a weekly daily meal of single day, user can track this - Nghia consults his mentor for guidelines, as well as research, and read through the docs by himself.