ReactFoo 2017

A conference on React

Mihir Khatwani

@mihirkhatwani

12 Days of Backend

Submitted Aug 13, 2017

  • A billion people’s medical data.
  • 36 different ever changing configurations and validations.
  • Web, mobile and tablet product users.
  • 1 Day a month of Internet Connectivity.
  • Lack of time and developers.

This talk is our learnings from building a product frontend with the above constraints and requirements, and leveraging React and its ecosystem to achieve that.

Outline

Preface

In the early days, Software Projects used to flat out fail quite often, before even a single user gets to see them working. A lot of the times technical choices and decisions were to blame. It was a different time, there was a lack of availability of standardization, pre-existing ways of doing things, or such a huge open knowledge, information, experience and feedback base online. Those were exciting and scary times.

(Un) Fortunately my team and I got to re-live(live) those times while architecting a nationwide system for the Ministry of Health, Government of India.

The Constraints

  • 36 Different frontend configurations and validation requirements. 1 per state and with a high frequency of change.
  • Lack of internet connectivity at a non-insignificant number of locations. To the point where the internet would be available once in a month.
  • Lack of budget and time.

Challenges faced

  • Users may not be computer literate.
  • System should be built to scale, for a billion patient’s data, with varying meta/reference data.
  • Syncing of transactional and reference data from frontend to backend once a month and maintaining consistency at the same time.
  • Availability of relevant data to the end users.
  • Finding data conservative ways to update the frontend web and mobile code.
  • Reduce redundant declaration of domain logic across platforms
  • Handling 36 different configurations with the same codebase, where the configurations also determine validation.

This talk is about how you can leverage React and React Native’s ecosystem inclusive of the Flux architecture and offline databases like Realm (Android) and Indexed DB (Web), to build an offline first solution which can deal with a lot of data in a secure and performant manner, run reliably in offline conditions, deliver updates in small batches to the clients, and 2 way syncing of transaction and reference data whenever the client gets a sliver of Internet connectivity. The talk also highlights the importance of the definition of interfaces and contracts to extract out as much common code as possible to packages to reduce errors/bugs and increase productivity by just writing and testing your domain/business logic just once. Writing platform native view components for the best user experience, without re-writing the wiring and business logic again for each and every platform.

Speaker bio

Olympic Weightlifting Enthusiast.
Times Person of the Year 2006.
Gets annoyed when people wish me on my Birthday.

I am a software developer who was allergic to Frontend programming, used to look down upon it, and was in love with all things Server even rendering until I fell in love React 2 years ago. Last year I quit my corporate job and co-founded Samanvay R&D, a non-profit organization dedicated to using technology to bring social justice to the poor and under-privileged. We work with the government and other NGOs to deliver premium corporate quality software to make lives easier for the providers working for the poor. We believe in spending most of our time in the villages and rural areas to understand be more effective and understanding the problems better.

Comments

{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}

Hosted by

A community - for and of - front-end engineers to share experiences with ReactJS, performant apps with React, crafting better User Interfaces (UI) with React and GraphQL ecosystem. ReactFoo also discusses design patterns and user experience. more