Introduction
- Hello, my name is Shaon. I have completed my graduation in Computer Science and
Engineering. Over the past three years, I have been working as a Software Engineer
focusing in iOS development
Generic Questions:
- First i would like to know the Development goals like; are we developing a MVP or
direct consumer facing; Timeline of the development- how much time do we have.
Why do I need to know this? Because when we are making an MVP then there’s no
point of developing the best architecture ever.
- Customer base - For defining the target OS version, UI elements. Young people tend to
have the most updated OS and they know about screen navigation and others so we
don't have to explicitly tell the user what to do
- What kind of user data are we dealing with? Like for healthcare we tend to have much
secure data and no way we allow man-in-the-middle attacks. So we have to put an extra
layer of security.
- How many active users we are planning to have monthly? Why? Cause based on
that like if we have to hit backend services efficiently otherwise huge server cost might
have to face
- How big is our development team? Cause recently i have worked with an application
which has multiple vendors working on it. So we divided it into multiple feature wise
package and each vendors worked on specific package
- Are we having the same app for both customers and doctors?
Feature Clarification:
- Ask questions and do your best.
Talk technical Solution: (Now i would like to present a high level design for the application)
- We will follow the MVVM or CLEAN architecture (For its separation for concern
like its data layer only deals with the data management.. ) with MVVM for scaling
- We will use multi module architecture like for Data module, Or Service module like
for each module we will use each package for scaling
- We will be having Dispatch Group and dispatchwork items, async await for
asynchronous operations.
- Combine for reactivity
- For dependency injection we will use our native environment object and
environment for pushing data to view layer
- We will be using core data / realm for offline
- We will use aes encryption for user data encryption and ssl pinning for preventing
MAN-In-The-Middle attack