All Projects → WildAid → o-fish-realm

WildAid / o-fish-realm

Licence: Apache-2.0 license
Realm application code and sample data for the Officer's Fishery Information Sharing Hub (O-FISH). The mobile app allows fisheries officers to document and share critical information gathered during a routine vessel inspection. The web app allows agencies to gain insights from the aggregated information.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to o-fish-realm

o-fish-ios
iOS app for the Officer's Fishery Information Sharing Hub (O-FISH). The mobile app allows fisheries officers to document and share critical information gathered during a routine vessel inspection.
Stars: ✭ 28 (+21.74%)
Mutual labels:  nonprofit, non-profit, mongodb-database, realm-mobile-database, mongodb-atlas, mongodb-realm, hacktoberfest2020, wildaid
o-fish-web
Web application for the Officer's Fishery Information Sharing Hub (O-FISH). The web app allows agencies to gain insights from the aggregated information gathered during a routine vessel inspection (submitted via the web app).
Stars: ✭ 29 (+26.09%)
Mutual labels:  nonprofit, non-profit, mongodb-database, mongodb-atlas, mongodb-realm, hacktoberfest2020, wildaid, hacktoberfest2021
o-fish-android
Android app for the Officer's Fishery Information Sharing Hub (O-FISH). The mobile app allows fisheries officers to document and share critical information gathered during a routine vessel inspection.
Stars: ✭ 19 (-17.39%)
Mutual labels:  nonprofit, non-profit, mongodb-database, realm-mobile-database, mongodb-atlas, hacktoberfest2020, hacktoberfest2021
cordova-plugin-realm
Unofficial Cordova plugin for Realm Mobile Database.
Stars: ✭ 29 (+26.09%)
Mutual labels:  realm, realm-mobile-database
Realm Js
Realm is a mobile database: an alternative to SQLite & key-value stores
Stars: ✭ 4,648 (+20108.7%)
Mutual labels:  realm, realm-mobile-database
helpafamily
Impactful ways to help families in need through donated meals, hygiene kits, and more. By Margarita Humanitarian Foundation.
Stars: ✭ 41 (+78.26%)
Mutual labels:  nonprofit, hacktoberfest2021
Automatic-attendance-management-system
ROLLCALL an automatic and smart attendance marking and management system which uses Microsoft Azure’s Cognitive service at its core to create a system that could make sure that no human intervention is required and provides government the ability to monitor the attendance of the schools and helps the government officials in mark fake schools.
Stars: ✭ 44 (+91.3%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
Hacktoberfest-Nepal-2020
A beginner-friendly open source repository to create your first pull request.
Stars: ✭ 15 (-34.78%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
tenants
JustFix.nyc is a tool to document, organize, and take action in getting repairs made on your apartment.
Stars: ✭ 15 (-34.78%)
Mutual labels:  nonprofit, non-profit
ProjectLockdown
Project Lockdown (an initiative from The IO Foundation) is a civic tech, interactive platform providing an overview of the state of Human and Digital Rights around the globe. It evaluates policies obtained from official sources that may impact their observance. It provides, among other tools, a layered map interface that allows for a visual repr…
Stars: ✭ 34 (+47.83%)
Mutual labels:  nonprofit, hacktoberfest2020
Hacktoberfest-2021
Make this Hacktoberfest a learning period and contribute to Great Open Source Projects.
Stars: ✭ 523 (+2173.91%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
Linkedin Skill Assessments Quizzes
Full reference of LinkedIn answers 2021 for skill assessments, LinkedIn test, questions and answers (aws-lambda, rest-api, javascript, react, git, html, jquery, mongodb, java, Go, python, machine-learning, power-point) linkedin excel test lösungen, linkedin machine learning test
Stars: ✭ 7,014 (+30395.65%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
Earthly
Repeatable builds
Stars: ✭ 5,805 (+25139.13%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
autocorr kr
리브레오피스(LibreOffice) 자동 교정(Autocorrect)기능에 대한 말모이 저장소
Stars: ✭ 15 (-34.78%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
SpotMusicGen
A Program that creates a Spotify playlist from a YouTube Playlist
Stars: ✭ 47 (+104.35%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
github-readme-quotes
Dynamic quote generator for your GitHub readmes | Give a poetic touch to readmes
Stars: ✭ 128 (+456.52%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
Algorithms
Short explanations and implementations of different algorithms in multiple languages
Stars: ✭ 37 (+60.87%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
pythoncharmers
Small beginners python programs.
Stars: ✭ 33 (+43.48%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
Microsoft-Udacity-ML-scholarship
Just give your best shot!
Stars: ✭ 64 (+178.26%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021
hacktoberfest2021-easy
Add a code in any language
Stars: ✭ 24 (+4.35%)
Mutual labels:  hacktoberfest2020, hacktoberfest2021

MongoDB Realm Application for WildAid's O-FISH project

Table of Contents

  1. Overview
  2. O-FISH Installation
  3. Import this repository as standalone code
  4. O-FISH Project Goals
  5. O-FISH Components
  6. O-FISH Infrastructure

Overview

The WildAid Marine Program works to protect vulnerable marine environments.

O-FISH (Officer Fishery Information Sharing Hub) is a multi-platform application that enables officers to browse and record boarding report data from their mobile devices.

The details behind the data architecture, schema, and partitioning strategy are described in Realm Data and Partitioning Strategy Behind the WildAid O-FISH Mobile Apps.



Developers are expected to follow the MongoDB Community Code of Conduct guidelines.

This repo implements the O-FISH Realm serverless backend application and contains sample data. The WildAidSampleBackup directory contains a mongodump of the database, suitable for building and testing. The WildAidDemo directory contains the serverless functions, triggers, values, Realm Sync rules and other code that makes up the backend for the web, iOS and Android applications - together with the connection to the associated MongoDB Atlas database.

O-FISH Installation

See the O-FISH installation guide, which includes instructions for using this repository in the context of building the O-FISH application.

Import this repository as standalone code

How to import and configure your own MongoDB Realm app

  1. Create an Atlas Cluster.
  2. Configure your Atlas Cluster.
  3. Import sample data (use WildAidMinimalBackup if you don't need thousands of sample documents), and add a Search index to the BoardingReports collection.
  4. Create the Realm App.
  5. Take a note of the Realm App-Id appname-xxxxx
  6. Generate an API key pair for your project and note the public and private IDs. Whitelist your IP address for API access.
  7. Install realm-cli: npm install -g mongodb-realm-cli
  8. Log in to your Atlas/Realm project: realm-cli login --api-key=my-api-key --private-api-key=my-private-api-key
  9. Add your AWS private API key to your app as a Realm Secret: realm-cli secrets add --app-id=appname-xxxxx --name=AWS-secret-key --value=my-aws-secret-api-key - If you are NOT connecting your instance with AWS, you STILL need to run this command but --value can be set to any string.
  10. Import the Realm Code
  11. Create a global administrative user in Realm and add the information to the User collection.
  12. Use the Realm App-Id (appname-xxxxx) in your web, iOS, or Android apps.
  13. Enable Realm Sync through the Realm UI
    Before activating sync, you can add extra security by adding this extra rule to the read and write permissions: { "%%user.custom_data.agency.name": "%%partition" }.
  14. Enable Users/Custom Data (ensure that cluster name = RealmSync, database = wildaid, collection = User and user ID field = realmUserId)
  15. If you're running the web app somewhere than localhost, or you want password reset emails to work on other devices, go to the Autentication section of the UI, and set update Password Reset URL for the username/password service.
  16. Optionally enable additional Triggers through the Realm UI (if you've set up your AWS credentials)

Developer Sandbox Mode

If you want to allow anonymous users to create a new account and agency (only intended for shared development environments/sandboxes), then:

  1. Enable Anonymous Authentication
  2. Set the developerMode Realm value to true so that the regNewAgency function can be called from the web app.
  3. If you want new agencies to be bootstrapped with menu data, reports, and photos then:
    1. Set up an agency (as normal) with the desired menu data, a few sample reports (optional), and a few photos (optional) - note the name of this "donor agency"
    2. Set the donorAgency value to the name of the donor agency – new agencies will now be bootstrapped with the menu data, the photos, and (10 of) the boarding reports from the donor agency.

O-FISH Components

WildAid's O-FISH project has several components:

  1. Android mobile application, used for pre-boarding search for vessel information, and on-board reporting of information
  2. iOS mobile application, used for pre-boarding search for vessel information, and on-board reporting of information
  3. Web application code, used for website navigation and feeding Atlas Search results into MongoDB Charts
  4. Realm serverless platform code (this repo_, used for backend functionality:
    1. Atlas Search queries
    2. Moving photos from the database, where Realm syncs them, to an external bucket
    3. Cryptographically secure verifiable change history
    4. MongoDB Realm Syc configuration - ensuring that the same reports can be accessed from any device This repository contains the Realm serverless platform code in the WildAidDemo directory.
  5. Sample data, for use when building test environments for the project. This repository contains sample data in the WildAidSampleBackup directory.

O-FISH Infrastructure

WildAid O-FISH architecture

Photo lifecycle - a photo is captured in the mobile application and is sync'd to Atlas via Realm. When a record is inserted in the database, a trigger is fired calling a function to save the photo to an S3 bucket, removing the photo from the document in the database, and adding the URL the photo to the document. Realm synchronizes the document to all mobile devices: WildAid O-FISH image management architecture

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].