Code Monkey home page Code Monkey logo

nipun-lakshya-app's Introduction

Nipun Lakshya Android application

The Nipun Lakshya Android Application is used by parents, teachers, examiners and mentors. With the app parents & teachers can help students prepare for assessments. Mentors can perform assessments using the app.

The application is predominantly written in Java with newer elements in Kotlin. The app extensively uses a modified version of ODK to collect data. The app uses APIs for easier access and storage of some of our data elements. The app talks to our backend service for authentication and access control.

Installation

1. Clone the repo and submodules

Clone the repo and also update the submodules git submodule update --recursive --remote

2. Setup a NL backend instance

Follow instructions in the sandbox-deployment repo to setup the BE system to run the app.

Note: You can skip this and go to step 3.a directly

3. Create a local.properties file

Refer sample.local.properties and create a local.properties.

You can replace the creds with the endpoints you have created in step 2.

3.a. Use the sandbox endpoints instead

We have created a sandbox with the entire BE system deployed. You can copy the contents of sandbox.properties to local.properties for using the sandbox environment & easier setup of the app.

4. Create a Firebase project

Create a new project on Firebase.

Remember to check "Enable Google Analytics for this project" in the Step 2.

4.a. Create & place a project google-services.json file

  1. Open the Firebase project created in the above step.
  2. Register an Android app with package name org.samagra.missionPrerna
  3. Download & Place the google-services.json in app folder.

4.b. Create & place an odk google-services.json file

  1. Add another Android app to the same Firebase project
  2. Add package name as org.odk.collect.android
  3. Download & place the google-services.json in collect_app folder

5. Run the app & contribute back!

Run the app, enjoy and contribute!

Note:

Credentials to be used

Teacher profile - 9999999999
Examiner profile - 9999999998
Mentor profile - 9999999997

Default OTP for the above profile - 9876

nipun-lakshya-app's People

Contributors

charanpreet-s avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

nipun-lakshya-app's Issues

[NL App Enhancements] Implement GitHub Actions for Automated Testing

Ticket Contents

Description

As part of our ongoing effort to enhance the robustness of our application, we are in the process of creating test cases for the data layer. We have already written test cases for the DAO classes responsible for interacting with our Room database. These test classes are located in the directory ./data/src/androidTest/java/com/data/db/dao.

The task at hand is to set up GitHub Actions to automate the execution of these test cases. The GitHub Actions workflow should execute all the tests and provide test results. Additionally, it should be configured to run automatically upon the submission of a new commit. The ultimate goal is to ensure that the GitHub Actions workflow runs seamlessly on GitHub without encountering any errors, and provides comprehensive test results for the DAO-related tests.

Goals

  • GitHub Actions Setup: Configure GitHub Actions to automate the execution of test cases for DAO classes.
  • Test Execution: Ensure that the GitHub Actions workflow executes all test cases successfully.
  • Comprehensive Test Results: Provide detailed test results through GitHub Actions for the DAO-related tests.
  • Automated Execution: Set up GitHub Actions to run automatically upon the submission of a new commit.

Expected Outcome

  1. GitHub Actions workflow configured to automatically run all test cases for DAO classes.
  2. Successful execution of test cases with comprehensive test results provided through GitHub Actions.
  3. Automated execution of GitHub Actions workflow upon submission of a new commit, ensuring continuous testing.

Acceptance Criteria

  1. GitHub Actions workflow set up and configured to execute all test cases in the specified directory.
  2. Test results are displayed clearly and comprehensively in the GitHub Actions output.
  3. GitHub Actions workflow runs automatically upon the submission of a new commit, without manual intervention.

Implementation Details

None

Mockups/Wireframes

None

Product Name

Nipun Lakshya App

Organisation Name

SamagraX

Domain

Education

Tech Skills Needed

  1. Language proficiency in Kotlin
  2. Proficiency in setting up GitHub Actions workflows.
  3. Understanding of test automation frameworks and tools.
  4. Knowledge of Android testing and Room database testing.

Mentor(s)

@charanpreet-s

Complexity

Low/Medium

Category

Beginner Friendly

Branch to use

android-testing

[NL App Enhancements] Remove Unused Realm Dependencies and code from the project

Ticket Contents

Description

Our app has evolved significantly, transitioning from reliance on the Realm library for offline data storage to adopting the Room DB solution. While most data handling flows have seamlessly migrated to Room, remnants of Realm dependencies persist within the codebase. However, this represents an opportunity to further optimize our project by fully removing all traces of Realm dependencies.

Goals

  • Eliminate Realm Dependencies: Completely remove all lingering dependencies on the Realm library from the codebase
  • Remove Unused Code: Identify and remove any code that was previously dependent on Realm but is no longer in use
  • Ensure Uninterrupted Flows: Validate that all existing flows continue to operate smoothly and without disruption after the removal of Realm dependencies

Expected Outcome

  1. The codebase will be streamlined and liberated from any residual dependencies on the Realm library, enhancing its robustness and maintainability.
  2. All existing flows will maintain their functionality, ensuring a seamless user experience even after the removal of Realm dependencies.

Acceptance Criteria

  1. Complete removal of all references and dependencies on the Realm library from the codebase.
  2. Identification and removal of any unused code that was previously dependent on Realm.
  3. Thorough testing of all existing flows to verify uninterrupted functionality post-removal of Realm dependencies.

Implementation Details

None

Mockups/Wireframes

None

Product Name

Nipun Lakshya App

Organisation Name

SamagraX

Domain

Education

Tech Skills Needed

  1. Proficiency in Android development with Kotlin.
  2. Understanding of data handling libraries such as Realm and Room.
  3. Ability to refactor code and manage dependencies.

Mentor(s)

@charanpreet-s

Complexity

Low

Category

Beginner Friendly

[NL App Enhancements] Implement Multilingual Support

Ticket Contents

Description

Our app currently lacks multilingual support, hindering user accessibility for non-English speakers. We aim to enhance the user experience by localizing the entire project and integrating a language selection feature accessible through the navigation drawer on the home page.

Goals

  • Implement Multilingual Support: Develop functionality within the application to support multiple languages seamlessly.
  • Integrate Language Selection Feature: Incorporate a language selection feature accessible through the navigation drawer on the home page, allowing users to choose their preferred language.
  • Localize User-Facing Elements: Ensure all user-facing elements, including text strings and visual assets, are appropriately localized based on the selected language, providing a consistent and culturally relevant experience for users.

Expected Outcome

  1. The application should seamlessly support multiple languages, fostering inclusivity and accessibility.
  2. Users should be able to switch between languages via a language selection option within the navigation drawer.
  3. All user-facing elements, including text strings and visual assets, should be appropriately localized in accordance with the selected language.

Acceptance Criteria

Same as the expected outcome

Implementation Details

None

Mockups/Wireframes

None

Product Name

Nipun Lakshya App

Organisation Name

SamagraX

Domain

Education

Tech Skills Needed

  1. Proficiency in Android localization techniques, including resource management and string translations.
  2. Fluency in at least one additional language to aid in the localization process.
  3. Language proficiency in Kotlin

Mentor(s)

@charanpreet-s

Complexity

Low

Category

Beginner Friendly

[NL App Enhancements] Integrate External App Invocation for Assessments

Ticket Contents

Description

Our current assessment flow within the app necessitates user authentication and metadata retrieval, resulting in a cumbersome user experience. To streamline this process, we seek to enable external applications to invoke our assessment flow via intent, passing relevant parameters. Subsequently, assessment results should be returned to the invoking app through the intent's result mechanism.

Goals

  • To be added

Expected Outcome

  1. The application should be capable of receiving and processing intents from external sources, facilitating seamless integration with third-party applications.
  2. Upon receipt of an intent with appropriate parameters, the app should initiate the assessment flow automatically, minimizing user effort.
  3. Assessment results should be diligently packaged and transmitted back to the invoking app using the intent's result mechanism.

Acceptance Criteria

Same as expected outcome

Implementation Details

None

Mockups/Wireframes

None

Product Name

Nipun Lakshya App

Organisation Name

SamagraX

Domain

Education

Tech Skills Needed

  1. Proficiency in Android intent handling and inter-app communication mechanisms.
  2. Familiarity with data serialization techniques for transmitting assessment results.

Mentor(s)

@charanpreet-s

Complexity

Low

Category

Beginner Friendly

[NL App Enhancement] Develop SDK for Assessment Functionality

Ticket Contents

Description

Building upon the foundation laid in Ticket 2, we endeavor to craft a robust Software Development Kit (SDK) encapsulating our assessment functionality. This SDK will empower external developers to seamlessly integrate our assessment capabilities into their applications, fostering collaboration and extending the reach of our platform.

Goals

  • To be added

Expected Outcome

  1. Delivery of a standalone SDK module encompassing comprehensive assessment functionality, designed for ease of integration and extensibility.
  2. The SDK should offer intuitive interfaces for accepting input parameters and initiating assessment procedures.
  3. Assessment results should be encapsulated within well-defined data structures and returned to the invoking application in a standardized format.

Acceptance Criteria

Same as expected outcome

Implementation Details

None

Mockups/Wireframes

None

Product Name

Nipun Lakshya App

Organisation Name

SamagraX

Domain

Education

Tech Skills Needed

  1. Proficiency in Kotlin or Java for Android SDK development, adhering to established coding standards and best practices.
  2. Understanding of software design principles, ensuring the SDK's modularity and maintainability.

Mentor(s)

@charanpreet-s

Complexity

Low

Category

Beginner Friendly

[C4GT Community] Nipun Lakshya App Enhancements

Ticket Contents

Description

The Nipun Lakshya Android Application stands as a monumental endeavor in the realm of education, serving as a cornerstone for the assessment of over 1 crore students and approximately 4+ lakh teachers in the state of Uttar Pradesh alone. With its extensive reach and usage, the application plays a pivotal role in evaluating student proficiency in foundational literacy and numeracy.

Developed primarily in Java with newer components integrated using Kotlin, the app harnesses the power of technology to streamline assessment processes on a massive scale. Its utilization of a modified version of ODK for data collection and APIs for efficient data access and storage underscores its commitment to efficiency and effectiveness.

Goals

In its ongoing journey of enhancement, the project introduces three key advancements:

  • SDK Integration: By incorporating an SDK, the app empowers developers to seamlessly integrate assessment functionalities into their applications. This not only extends the app's reach but also fosters innovation and collaboration within the educational ecosystem. #2
  • Localization Features: The implementation of localization features breaks down geographical barriers, enabling users from diverse regions to engage with the app in their native language. This enhancement promotes inclusivity and accessibility, amplifying the app's impact and utility. #3
  • Integration with External Intents: Enabling integration with external intents enhances the app's versatility and functionality, facilitating smoother workflows and collaborations among stakeholders. #4
  • Add missing Unit tests, fix typing errors by adding missing types and set up GitHub Actions to run a prettier linter on every PRs.PR Ticket

Expected Outcome

Overall, these enhancements represent a significant leap forward for our project, unlocking a plethora of new possibilities and use cases. From empowering developers to integrating assessment functionality into their applications to breaking down language barriers and enabling seamless integration with other workflows, these new features will elevate our project to new heights of usability, accessibility, and adaptability.

Acceptance Criteria

Mentioned on each of the individual tickets linked above.

Implementation Details

Mentioned on each of the individual tickets linked above.

Mockups/Wireframes

None

Product Name

Nipun Lakshya App

Organisation Name

SamagraX

Domain

Education

Tech Skills Needed

Mentioned on each of the individual tickets linked above.

Mentor(s)

@charanpreet-s

Complexity

Low

Category

Beginner Friendly

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.