12 Days of Backend
Submitted by Mihir Khatwani (@mihirkhatwani) on Saturday, 12 August 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.
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.
- 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.
- 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.
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.