Dots: the alternative legal aid tech. A tool to connect people in need to the organisations best equipped to help them.
The project was developed for Kona Connect. Detailed information available under https://kona-connect.org/dots-legal-aid-tech/
- Offline application - once downloaded, no internet connection is required for the users to use it. Can be accessed by everyone everywhere.
- The users are guided through a set of personal identification and needs questions that enable the app to find the right organisation for them.
- Easy to maintain by reading data
- React Native Frontend application using Expo Framework, available for Android and IOS.
- No backend, all data required by the application is stored in json format under
./Frontend/assets/jsonFiles
for both content and configuration. - Minimal running cost of the application considering no additional cost is required for storage or backend infrastructure.
-
User needs to provide personal identification information (age, gender, etc.).
-
Identifying their needs, based on a hierarchy of questions derived from the SDG definition (Dots diagram) by grouping different subsections into similar areas.
Configuration of the needs hierarchy options and the mapping to SDG Group ID is stored inside the application in .json format. This data is used in the application to dynamically generate the Needs Questionnaire with the different options and derive the underlying SDG Group ID that would be used to filter the Organisation data: - "options_map" for Individual selection - "companies_options_map" for Company/Organisation selection -
Showing the list of relevant organisations for the user based on their selections. The system will filter the organisation data based on:
- Personal identification information - for example if the user selects age: 0-12 -> filter only for organisations relevant for children
- SDG Group derived based on the needs questionnaire
-
Display detailed information about the organisations. Relevant details of the organisation selected by the user will be shown on the screen (Organisations in Senegal).
For developers/testers that want to be able to run the code locally and develop or test:
- Android simulator - Androit's phone emulator. Installation steps for both Windows and Mac can be found here
- iOS simulator - Apple's simulator.
- Expo app - developer tool to be able to run/test the app on mobile
- Clone deploy-impact-21-kona-c repo locally
- Go to Frontend folder and run:
cd deploy_impact_21_kona_c/.Frontend
npm install
npm start
- Metro Bundler should open on localhost
- You can now run your application in 3 ways
- On a local computer using a phone emulator launching the virtual device configured (Android or IOS)
- In web browser - just open from the Metro Bundler page
- Open the Expo app on the phone and scan the QR code from the Metro Bundler page
Unit tests are available under ./Frontend/test folder. They can be run via the following command.
npm run test
Results will look like this
Manual tests cases that were created and executed are available here. It contain an initial set of test cases that can be further expanded.
All data required by the application is currently stored inside the application in the ./Frontend/assets/jsonFiles
folder. This includes organisations data as well as data used for the hierarchy mapping of the needs, questionnaire options and mapping to SDG Group. The application uses this hierarchy mapping to dynamically generate the different options for the users depending on their selection.
All .json files used by the application were generated based on a original .csv files that can be found here: ./Frontend/assets/csvFiles
. Users can easily maintain the .csv files and, when ready, the files can be easily converted to .json format and the application will use the new data.
Based on the current implementation an update of the organisation or configuration data would require an update of the application as the data is self contained in the app. In the future, this can be enhanced by having the data in a central location and the application will update the data content at specific intervals when connected to the internet.
In order to update some of the organisation details, the organisations.json file needs to be modified with the new information. This can be done by:
- Update the organisation.csv file. The structure of the file should be the same as the old version, just an update of the data content.
- Generate a new json file based on the updated .csv file. This can be easily done by using the steps defined under Conversion to json file section.
There is always the option to manually update the underlying organisation.json file, but we would recommend updating the organisation.csv file first and generating the json file from it. This is so that the golden source of the data remains in a redeable format on the .csv file.
After this, the application will use the new data for the organisations. Remember to test the changes before you go ahead with the update.
The application generates dynamically the options for the needs questionnaire as well as the mapping of the different options to the SGD Group based on configuration data in the application. This mapping is stored in the application under ./assets/jsonFiles
.
- options_map.json - stores the 3 level hierarchy of the needs options together with the mapping for SDG Group ID for Individuals
- companies_options_map.json - stores the needs options for the Company/Organisation
This data can be updated in the same way as the organisation data by updating the right file depending on whether there are changes required for the needs questionnaire for Individuals, Company or both:
- Update the required .csv file(s). The structure of the file should be the same as the old version, just an update of the data content.
- Generate new json file(s) based on the updated .csv files. This can be easily done by using the steps defined under Conversion to json file section.
After this, the application will use the new configuration data to generate the needs questionnaire. Remember to test the changes before you go ahead with the update.
Required to update: organisations, options_map and companies_options_map data files.
To generate a json file from a csv file:
- Update any of the csv files in
./Fontend/assets/csvFiles
- Make sure the structure of the file is the same as the previous file
- Generate the json file
cd deploy_impact_21_kona_c/.Frontend
npm run convert-csv
./Fontend/assets/jsonFiles
should be already updated.
- Expand the language support capabilities on the app to allow support for new languages. Data structure can easily be expanded to include an additional language column for both organisation and the needs mapping configuration. This will allow the application to dynamically switch the language and read the content from the data
- Enable Data Collection by sending data from the app to a central storage where the data can be aggregated and centralised for user behaviour analysis
- Create an Administration Panel where specific users can maintain the Organisation and needs mapping to configuration, to allow for quick update for the application. This can also be achieve by having the data in some google docs file where it can be updated and the application updates the local version at specific intervals based on the google docs files
- Include some AI capability to enhance the current deterministic approach. For example we could allow for text search on top of the existing needs questionnaire. In this way we could support more use cases and better serve the users
- Allow organisations to register themselves and go through an approval process until they appear officially in the app. In this way the app can be self managed but still keep an oversight of the organisations that are included
- Integration with other social apps which will allow the users depending on their needs to also be aware of other apps that could help them. There could be some integration with Sofia for domestic violence
- Add FAQ section on the app where users can find answers to some common questions. For example things like: Do I need to pay to use an organisation service, Would there be repercussions if using a particular organisation
- Online chat with social volunteers
- Why do I have a folder named ".expo" in my project?
The ".expo" folder is created when an Expo project is started using the "expo start" command.
- What does the "packager-info.json" file contain?
The "packager-info.json" file contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator.
- What does the "settings.json" file contain?
The "settings.json" file contains the server configuration that is used to serve the application manifest.
- Should I commit the ".expo" folder?
No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine.
Upon project creation, the ".expo" folder is already added to your ".gitignore" file.
- @bebolor - Frontend, UI/UX design
- @veloqueen - Frontend
- @natayra - Frontend lead
- @ClaudiaNicolae - Project manager, Scrum master
- @Karen - Project manager
This repository is licensed under the GPL - 3 license. You can find more information in the LICENSE file.
Project developed during Women ++ 's deploy(impact)'s program between 16th October - 27th November 2021 deploy impact is a hands-on software development program for social good.