# Product Planning ### 1️⃣ Fundamental Features ### Frontend - [x] Create a React App, clean it up - [x] Install related dependencies and create new `src` folder - [ ] Create `routes` such as Homepage, Not Found page, Protected Page - [ ] Create `main layouts` like Main Header, Main Footer, Main Layout, Blank Layout - [ ] Create components folder containing common-used components - [ ] Create login authentication for a specific time - [ ] Set up `store` and fetching functions for login & register - [ ] Add up `Context.Provider` for all routes - [ ] Create `login` form component for Login Page - [ ] Create `signup` form component for SignUp Page - [ ] Create `Homepage` with component Main Navigation, Main Content, EmployeeList ### Backend - [x] Create Express-Generator and clean it up - [x] Install supported dependencies & libraries - [x] Update `scripts dev` in `package.json` and add `node_modules`, `.env` in `gitignore` - [x] Launch MongoDB database and connect with Express server - [x] Create models, routes, controllers, helpers, middlewares folder - [x] Set up methods sendResponse, AppError, catchAsync - [x] Create `404` and `Error-handling` middleware - [x] Shape `userSchema` and `User` model with required info - [x] Generate register and login APIs for `/users` - [ ] Create APIs for get user list ### Testing - [ ] Fetch data from back-end on localhost:8000 server - [ ] Test the font-end response of - [ ] Register new account - [ ] Login to existed account - [ ] The accessibility to protected pages ### 2️⃣ Core Features ### Frontend - [ ] Generate the `Create new employee` form and function - [ ] Develop `Search` (by name) and `Filter` (by status, department, employment types) function - [ ] Create `Employee details` page with navigation through 3 tabs (Information, Paperwork, Review) - [ ] Generate `Information` tab layout - [ ] Make up of functions `edit info` and `save` new info - [ ] Create layout showing all paperwork when navigating to `Paperwork` tab - [ ] Build up function `Generate paperwork` - [ ] Create the Preview Paperwork Form with `Dialog` component - [ ] Develop function `Download` completed paperwork - [ ] Create Review form component for `Review` tab - [ ] Set up the `Submit` review form function ### Backend - [ ] Form the `reviewSchema` and `Review` model - [ ] Set up APIs and defind controllers for `/users/:id/review` - [ ] Create the `paperworkSchema` and `Paperwork` model - [ ] Set up APIs and defind controllers for `/users/:id/paperwork` - [ ] Deploy backend to Heroku ### Testing - [ ] Test interactions among the `/users` subtabs - [ ] Test functions relating to server APIs ### 3️⃣ Cool Stuff - [ ] Send reminder email at least 1 week before paperwork ends - [ ] Save reminder by Google Calendar APIs - [ ] Show the Dashboard with info of active/ resigned employees, current workload