million-views/praas

Show some love to classic `conduits web.app`

Closed this issue · 0 comments

m5nv commented

Context
Conduits are managed using a web app. Currently there are two versions: praas-app and praas-app-ionic. Development of the classic praas-app fell to the wayside as focus shifted to getting the backend functional and discover capabilities of Ionic.

Problem
The praas-app-ionic app represents a steep learning curve for new comers to modern frontend development. In order to be able to contribute to the project, newcomers not only need to know about React and Redux, they are forced to deal with Ionic as well. This introduces friction and increases the cycle time to deliver new features and functionality.

The classic web app uses home grown CSS and mostly semantic HTML that makes the code relatively easier to grok than the Ionic version.

While Ionic version of the app looks clean and pretty, the code introduces a lot of syntactic noise which is a distraction for newcomers. In retrospect the JSX of Ionic is largely similar to dozens of Material Design libraries which we rejected in the early stages of the project, favoring simplicity.

For where we are in the product life cycle, our efforts should be directed towards achieving functionality and usability. And push Look & Feel concerns, especially mobile, to further down the road.

Resolution

  • The initial release of the app will be for web only.
  • There are no plans to create a mobile version of the app in the near term.
  • Deliver a progressive web app that is also usable on a mobile device (without expending a lot of effort).
  • Okay to hide features that cannot be rendered on mobile meaningfully than render something that is not usable.

Solution

  • Bring the classic app to the same functional and usable state as the Ionic version.
  • Continue developing features in the Ionic app version until the classic app catches up and achieves parity.
  • Shift development efforts to classic app when fully tested and passes the acceptance criteria.

Acceptance Criteria

  • Signup/Login/Logout features functional and usable
  • List/Edit/Delete features functional and usable
  • Functional tests written using Jest, RTL, and MSW
  • Replace Formik with React-Hook-Forms
  • Use React-Hooks where appropriate
  • Show some CSS 💖 love but not too much
    - [ ] Update documentation
    - [ ] Rename praas-app to conduits.app
    - [ ] Move praas-app-ionic to experimental

Notes
Working on this issue may feel like we are regressing from a cool UI delivered by Ionic. In fact we are doing that. We need to acknowledge however that with a small team we don't have the luxury of taking on increased cognitive load that L&F concerns introduces. Let's get functional and usable first, and then worry about L&F.