Low Level Design
Introduction
About NMIS App
National Management Information System (NMIS) Mobile, a groundbreaking application developed by Tech Consultancy Team using JavaScript and React Native. This state-of-the-art app offers a robust solution for data collection across various services.
The NMIS app is built upon JavaScript and harnesses the versatility of React Native, enabling seamless cross-platform development. By utilising the feature flag parameter, the app can be easily transformed into an Android APK, offering users a wide array of customisation options and features.
The feature flag parameter plays a pivotal role in configuring the app's behaviour. It empowers administrators to selectively enable or disable specific features based on their requirements, define various authentication methods to enhance security, customise themes to align with organisational branding, set server URLs for seamless integration, and even specify different types of questions within forms to capture precise information.
This exceptional level of configurability ensures that the NMIS app can be adapted as a generic module for diverse services. Regardless of the sector, whether it's healthcare, education, public services, or any other domain, the NMIS app offers a flexible and scalable solution for efficient and standardised data collection.
With its user-friendly interface, intuitive design, and advanced integration capabilities, the Mobile App for National Management Information System (NMIS) sets a new standard in data collection and management. By prioritising data accuracy, efficiency, and accessibility, this app empowers organisations to streamline their information-gathering processes and make informed decisions.
The Purpose of NMIS App
The purpose of the NMIS mobile app is to provide enumerators in the field with a user-friendly and efficient tool for data collection, complementing the existing web form in the web application. The app is specifically designed to streamline data collection processes, enhance accessibility, and overcome limitations associated with web forms.
The key purposes of the NMIS mobile app include:
-
Simplified Data Collection: The app aims to simplify the data collection process for enumerators by providing an intuitive and mobile-optimised user interface. It allows enumerators to collect data in a straightforward and efficient manner, reducing the complexities associated with web forms.
-
Offline Data Collection: A crucial purpose of the app is to enable offline data collection. Enumerators can capture data even in areas with limited or no internet connectivity. The app securely stores the collected data locally on the device, ensuring data integrity and allowing for seamless synchronisation when an internet connection is available.
-
Improved Efficiency: The NMIS mobile app enhances the efficiency of data collection in the field. It eliminates the need for enumerators to rely solely on web forms accessed through browsers, which may involve additional login procedures or restricted access. The app provides a dedicated platform for enumerators, ensuring a smoother and faster data collection experience.
-
Streamlined Field Operations: By leveraging mobile-specific features, such as GPS integration for location tracking, the app streamlines field operations. Enumerators can efficiently capture geographical data alongside other relevant information, improving the accuracy and context of collected data.
-
Enhanced User Experience: The NMIS mobile app focuses on delivering an optimal user experience for enumerators. It leverages mobile devices' capabilities, such as touch gestures and responsive layouts, to provide a seamless and intuitive interface. This purposeful design promotes ease of use and reduces the learning curve for enumerators in the field.
In summary, the NMIS mobile app's purpose is to facilitate efficient and user-friendly data collection for enumerators in the field. It enhances accessibility, enables offline capabilities, and improves overall efficiency in capturing accurate and timely data.
Functional Overview
The NMIS mobile app offers a comprehensive range of functionalities tailored to support enumerators in their data collection tasks. This section provides a functional overview of the key features and capabilities of the app. With support for various question types, optional dependency logic, validation rules, offline data collection, seamless synchronisation, JSON form format, and a user-friendly interface, the app empowers enumerators to collect data accurately, efficiently, and conveniently in the field.
Data Collection Forms
- Enumerators can access and complete customised data collection forms using the app. These forms are designed to capture various types of information, including geolocation, text, number, options, multiple options, cascade, photo/video, and date.
- The app provides an intuitive interface for enumerators to input data based on the question type. Enumerators can provide accurate and precise information during the data collection process.
Optional Dependency Logic
- The app supports optional dependency logic, enabling dynamic display and requirement of questions based on responses to previous questions. This functionality enhances the data collection experience by adapting the form based on specific conditions or dependencies.
- Enumerators can seamlessly navigate through the form, with the app intelligently adjusting the display of questions based on the predefined dependencies. This ensures a smooth and efficient data collection process.
Validation Rules
- The app incorporates validation rules to ensure data accuracy and integrity. Real-time validation feedback is provided to enumerators, such as error messages or prompts for missing or invalid data.
- Enumerators receive immediate feedback, ensuring that data entered meets the specified criteria and reducing the likelihood of errors. This promotes data quality and reliability.
Offline Data Collection
- Enumerators can collect data even in offline environments, leveraging the app's offline functionality.
- The app securely stores the collected data on the device, allowing enumerators to continue their work without an internet connection.
- Once an internet connection is available, the app automatically synchronises the collected data with the central server.
Seamless Synchronisation
- The app seamlessly synchronises collected data with the central server once an internet connection is available. This ensures that no data is lost during the process.
- Enumerators can trust that their data is securely transmitted and integrated into the NMIS system. Synchronisation happens in the background, allowing enumerators to focus on their data collection tasks without worrying about manual data transfer.
JSON Form Format
- The app receives the data collection forms in JSON format.
- The JSON structure follows the format used in the Akvo React Form, which used by the Burkina Faso PDHA, WAI-SDG, ISCO or Kenya RTMIS Web Page.
- Enumerators can easily navigate and interact with the forms within the app, as the JSON structure provides a familiar format. This simplifies the transition from the web form to the mobile app and ensures a consistent data collection experience.
User-Friendly Interface
- The app offers a user-friendly interface designed specifically for mobile devices. It prioritises ease of use and intuitive navigation, optimised for the smaller screens and touch gestures of smartphones and tablets.
- Enumerators can efficiently navigate through the forms, input data, and access various features. The intuitive interface reduces training requirements and contributes to a seamless and pleasant data collection experience.
The functional overview of the NMIS mobile app highlights its robust capabilities in supporting enumerators during data collection activities. With support for various question types, optional dependency logic, validation rules, and the ability to handle JSON forms, the app provides a powerful tool that enhances the efficiency, accuracy, and convenience of field data collection processes.
Design Considerations
When designing the NMIS mobile app, several key considerations were taken into account to ensure a seamless and user-friendly experience for enumerators in the field. The following design principles guided the development process:
Mobile-Optimised Interface
The app's interface is specifically designed for mobile devices, prioritising ease of use and intuitive navigation. It takes into account the limited screen space and touch interactions of smartphones and tablets, ensuring a seamless user experience for enumerators.
Offline Functionality
Recognising the potential lack of internet connectivity in remote areas, the app includes robust offline capabilities. Enumerators can collect data without an active internet connection, and the app securely stores the data locally on the device. Once a connection is available, the app automatically synchronises the collected data with the central server.
Responsive and Adaptive Design
The app features a responsive and adaptive design, adjusting its layout and functionality based on the screen size and orientation of different devices. This ensures optimal presentation and usability, regardless of the device used by enumerators.
Clear and Intuitive Form Design
The design of data collection forms prioritises clarity and simplicity. Questions are presented in a logical and easy-to-understand manner, reducing cognitive load for enumerators and enabling efficient data entry.
Visual Feedback and Validation
The app provides visual feedback and validation to guide enumerators during data collection. Real-time validation checks highlight errors or missing information, ensuring the accuracy and completeness of collected data. Clear visual cues and informative prompts assist enumerators in providing accurate and valid responses.
Streamlined Navigation
The app features streamlined navigation, allowing enumerators to move through the data collection process effortlessly. Intuitive icons, buttons, and gestures provide smooth transitions between questions and sections, reducing friction and improving efficiency.
Accessibility Considerations
The app adheres to accessibility guidelines to ensure inclusivity for all users. It incorporates features such as adjustable text size, colour contrast for readability, and support for assistive technologies. By prioritising accessibility, the app promotes equal access and usability for individuals with diverse needs.
Security and Data Privacy
Data security and privacy are paramount considerations in the app's design. The app incorporates robust security measures to protect collected data, including encryption during transmission and adherence to industry best practices. Enumerators can trust that the data they collect is handled securely and confidentially.
Software Architecture
Build Configuration Parameters
Server URL
During the development and build phase of the NMIS mobile app, the server URL parameter is used to specify the default endpoint or API URL of the NMIS server. This URL is typically determined by the development team based on the specific deployment environment (e.g., development, staging, production). By providing the server URL as a build parameter, the app is pre-configured with the appropriate endpoint to communicate with the NMIS server. This ensures that the built app connects to the correct server once it is installed and launched on users' devices.
The server URL parameter in the build process ensures that the app is ready to establish a connection with the designated NMIS server by default. This allows enumerators or users to seamlessly interact with the server without having to manually input or configure the server URL during the initial setup of the app. By incorporating the server URL parameter as a build parameter, the NMIS mobile app simplifies the setup process and reduces the configuration overhead for users, ensuring that they can quickly access and communicate with the designated NMIS server after installing the app.
Debug Mode
During the build process of the NMIS mobile app, developers can include a "Debug Mode" build parameter to control the activation of a dedicated mode designed to assist in debugging and troubleshooting issues during app development.
- Debugging Capabilities: When the app is in Debug Mode, developers gain access to additional tools and capabilities for troubleshooting and identifying potential issues. This includes features such as enhanced logging, detailed error messages, runtime inspection, and the ability to set breakpoints for stepping through the code.
- Enhanced Logging: Debug Mode often includes more extensive logging capabilities, providing developers with a detailed view of the app's internal workings. This helps in tracking the execution flow, identifying errors, and understanding the sequence of events leading up to specific issues.
- Diagnostic Information: Debug Mode allows developers to collect and analyze diagnostic information, such as variable values, stack traces, and system-level details. This information is instrumental in identifying the root causes of errors or unexpected behavior, facilitating efficient bug fixing.
- Real-time Feedback: Debug Mode enables real-time feedback during app development. Developers can observe the app's behavior, identify potential issues, and make immediate adjustments or corrections, improving the efficiency of the debugging process.
- Controlled Environment: Debug Mode provides a controlled environment for developers to test and troubleshoot app features and functionality. It allows them to isolate and focus on specific parts of the app, enabling effective debugging and minimizing interference from external factors.
- Development Workflow: Debug Mode supports an iterative development workflow. Developers can make changes, test them, debug issues, and refine their code until the desired functionality is achieved. This iterative approach helps in improving the overall quality and reliability of the app.
More about debugging: https://reactnative.dev/docs/debugging
App Version Control
This parameter ensures that the app is running on the correct version by specifying the version number or code. It helps in maintaining compatibility and consistency between the app and the server, ensuring seamless functionality and data syncing.
App Version Control is essential for maintaining a structured and organized approach to app development, deployment, and updates. It involves assigning unique version numbers or codes to each release of the app, allowing users to identify, track, and manage different versions effectively.
Key aspects of App Version Control include:
-
Version Numbering: App developers assign version numbers to each release of the app. Version numbers typically follow a structured format, such as X.Y.Z, where X represents a major version, Y denotes a minor version, and Z signifies a patch version. This numbering scheme provides a systematic way to indicate the significance of changes and updates.
-
Release Management: App Version Control helps manage the release process by distinguishing between major updates, minor feature enhancements, and bug fixes. Each version represents a distinct set of changes and serves as a reference point for development, testing, and deployment.
-
Compatibility and Upgrades: Version control allows users to determine whether their installed app version is compatible with the server or requires an update. It helps ensure that users are running the correct version that aligns with the server's capabilities and data structures.
-
Bug Tracking and Issue Resolution: Version control plays a crucial role in bug tracking and issue resolution. By referring to specific app versions, developers can identify when bugs were introduced, track fixes, and provide relevant updates to users. It facilitates efficient communication and collaboration among development teams, testers, and users.
-
User Support and Communication: Version control helps streamline user support by enabling precise identification of the app version in use. Users can easily communicate their installed version when reporting issues, allowing support teams to provide targeted assistance and troubleshoot problems effectively.
-
Feature Rollouts and A/B Testing: App Version Control facilitates controlled feature rollouts and A/B testing. Developers can release new features gradually, targeting specific app versions, user groups, or geographic regions. This approach allows for better evaluation of feature performance and user feedback before widespread deployment.
Example of Build Parameters in JSON Format
{
"authenticationType": ["code_assignment", "username", "password"],
"serverURL": "https://api.example.com/nmis",
"debugMode": false,
"dataSyncInterval": 300,
"errorHandling": true,
"loggingLevel": "verbose",
"appVersion": "1.2.0"
}
- authenticationType: an array that includes multiple options: code_assignment, username, and password. This configuration allows users to choose one or more authentication methods based on their requirements.This reflects the optional nature of the authentication types and allows for flexibility in selecting authentication methods, including the use of a code assignment before entering a username (with or without a password). It also considers the scenario where multiple enumerators can utilize a single app, accommodating projects with limited budgets for purchasing individual devices.
- serverURL: Specifies the endpoint or API URL of the NMIS server as https://nmis.akvotest.org/api.
- debugMode: Indicates that debug mode is disabled with a value of false.
- dataSyncInterval: Defines the default data sync interval as 300 seconds (5 minutes).
- errorHandling: Specifies that error handling is enabled with a value of true.
- loggingLevel: Sets the logging level to verbose.
- appVersion: Represents the version number of the app as 1.2.0.
App Configuration Settings
The app configuration settings parameter provides a range of customizable options, such as default language preferences, notification settings, and display preferences. It allows users to tailor the app's behavior and appearance according to their specific preferences.
Data Sync Options
Data syncing options allow users to configure how and when the app synchronizes data with the server. Users can choose to enable or disable automatic syncing, specify Wi-Fi-only syncing, or define the sync interval, giving them control over the data transfer process.
Data Sync Interval
The Data Sync Interval configuration setting allows users or enumerators to define the frequency at which the NMIS mobile app automatically syncs data with the server. This setting can be adjusted within the app's user interface or settings menu, providing flexibility for users to tailor the sync interval according to their specific needs and preferences.
Language Selection
Language selection settings enable users to choose their preferred language for the app's interface. This feature ensures that the app is accessible to users who are more comfortable with languages other than the default language.
Feature Toggles
Feature toggles allow users to enable or disable specific features or functionalities within the app. This empowers users to customize their app experience by activating or deactivating certain capabilities based on their needs or preferences.