The purpose of this document is to present how we plan to approach and achieve MVP of the mobile version. The component that we want to prepare in the mobile version is Physical Inventory.

1.The goal

Overall we’ll need to answer the question: with this technology, can we deliver within a release cycle (~ 3 months / 6 sprints)?

2. Requirements and assumptions

Yes, PWA implementation is possible.

Rewrite some components in React without removing the Angular code and use router to display the correct components - React on mobile and Angular on desktop.

This is a task the team will have to do if they start working on an MVP for mobile.

There should be no issue with accessing the camera, also all Bluetooth devices that support BLE (Bluetooth Low Energy) standard should work fine.

3. What have we done?

We have made research that allows us to answer whether we are able to achieve the goal - deliver MVP.

4. Results of a research

Steps to migrate Grunt to Webpack

Changes in every module:

-create a js file and import there all of the files that should be included in the build (js, css and external dependencies, without tests)

Changes in dev-ui:

-add grunt-webpack, webpack and its modules to package.json devDependencies

-create webpack config

-add webpack config and grunt-webpack task to Grunt config (it's described in https://www.npmjs.com/package/grunt-webpack )

-add a task to create a single entry point for webpack, a js file that imports entry points (the js file with imports created in each module) form all of the modules

-remove custom tasks created to bundle css, js and html files (this will be handled by webpack loaders)

-rewrite build tasks to use webpack instead of the custom tasks

We propose to add Bootstrap because it supports interactions that work well both on mobile and desktops. It will help a lot in creating a responsive mobile application.

5. Recommendations / Risks

6. Estimates

The table below shows the initial rough estimates of tasks

TASK

ESTIMATION

1.Migrate Grunt to Webpack

96

2. Implement the PWA

29

3. Add Bootstrap to project

48

4. Adapt existing necessary pages to be responsive

a. Design existing pages for mobile

19

b. Hide unnecessary modules on mobile

29

c. Prepare the login screen to be responsive

10

d. Prepare the navigation bar screen to be responsive

29

e. Prepare the home page to be responsive

7

6. Create the stock management module in React - Physical Inventory

a. Add React to project - create main component

22

b. Make Physical Inventory list page responsive

19

c. Design Physical Inventory draft page to be useful and user-friendly

29

d. Implement the form on the Physical Inventory page

48

e. Cache the Physical Inventory

96

f. Implement the product dropdown on the Physical Inventory page

48

g. Implement the Reasons modal on the Physical Inventory page

38

Time needed for full implementation (1 developer): around 80 mandays.