# 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