Skip to the content.

Island Invaders

Members

Table of contents

Overview

Problem:

Invasive species pose a significant threat to local ecosystems, causing ecological imbalances or even extinction. However, monitoring and tracking these invasive species across the Hawaiian islands can be a daunting and resource-expensive task, making research difficult to complete.

Solution:

‘Imi Invasive aims to address invasive species management challenges by establishing a citizen science initiative to bring the community together and educate people on invasive species, raising awareness and empowering the community and professionals to be able to better track the harmful species and care for the ecosystem. It should serve as an educational resource and also a centralized app for people to report and help manage invasive species across the Hawaiian Islands.

Users

Example Users:

Deployment

Here is our deployed application running on Digital Ocean.

User Guide

This section provides a walkthrough of the ‘Imi Invasive user interface and its capabilities.

Landing Page

The landing page is presented to users when they visit the top-level URL to the site. It welcomes users and provide an overview of the project and goals.

Click on the “Login” button in the upper right corner, then select “Sign in” or “Sign up” in order to have access to the following pages.

Posts Page

After clicking “Posts” in the navigation bar, the Posts page displays the verified invasive species reports made by the community. Click on the toggle button to switch between viewing verified posts and only posts created by the user. Click on the download button to download a csv file of all verified reports made by users on the site.

User Options: Can delete or edit their own posts

Admin Options: Can delete or edit all users posts, or just change verification status

List Profiles Page

After clicking the dropdown button and choosing “View All Profiles” below the user’s name in the top-right corner users can visit the “List Profiles” page. This page displays all the profiles of users who have signed up for the app.

Dropdown:

User View:

Admin View: Can delete any user profile

Edit Profile Page

After clicking the dropdown button and choosing “Edit Profile” option below the user’s name in the top-right corner users can visit the “Edit Profile” page. This presents a way for users to edit their profile data such as profile picture, first name, last name, email, biography, and interests.

About Us Page

After clicking “About Us” in the navigation bar, users are taken to the About Us page which provides information about the team members and project’s overall message.

Invasive Species List Page

The page displays an ‘Imi Invasives’ Database of Known Invasive Species which is an organized database of invasive species, including information such as identification tips, distribution maps, ecological impacts

User View:

Admin Options: Admins can delete or add references

Beyond Basics (Possibly Ambitious)

Developer Guide

This section provides information of interest to Meteor developers wishing to use this code base as a basis for their own development tasks.

Installation

First, install Meteor.

Second, visit the Island Invaders application github page, and click the “Use this template” button to create your own repository initialized with a copy of this application. Alternatively, you can download the sources as a zip file or make a fork of the repo. However you do it, download a copy of the repo to your local computer.

Third, cd into the imi-invasive/app directory and install libraries with:

$ meteor npm install

Fourth, run the system with:

$ meteor npm run start

If all goes well, the application will appear at http://localhost:3000.

Application Design

‘Imi Invasive is based upon meteor-application-template-react and meteor-example-form-react. Please use the videos and documentation at those sites to better acquaint yourself with the basic application design and form processing in ‘Imi Invasive.

Quality Assurance

ESLint

‘Imi Invasive includes a .eslintrc file to define the coding style adhered to in this application. You can invoke ESLint from the command line as follows:

meteor npm run lint

Here is sample output indicating that no ESLint errors were detected:

PS C:\Users\Lily\Desktop\ICS_UHMAN\ICS314\GitHub\imi-invasive\app> npm run lint 

> meteor-application-template-react@ lint C:\Users\Lily\Desktop\ICS_UHMAN\ICS314\GitHub\imi-invasive\app
> eslint --quiet --ext .jsx --ext .js ./imports && eslint --quiet --ext .js ./tests   

PS C:\Users\Lily\Desktop\ICS_UHMAN\ICS314\GitHub\imi-invasive\app> 

ESLint should run without generating any errors.

It’s significantly easier to do development with ESLint integrated directly into your IDE (such as IntelliJ).

End to End Testing

‘Imi Invasive uses TestCafe to provide automated end-to-end testing.

The ‘Imi Invasive end-to-end test code employs the page object model design pattern. In the imi-invasive tests/ directory, the file tests.testcafe.js contains the TestCafe test definitions. The remaining files in the directory contain “page object models” for the various pages in the system (i.e. Home, Landing, Interests, etc.) as well as one component (navbar). This organization makes the test code shorter, easier to understand, and easier to debug.

To run the end-to-end tests in development mode, you must first start up a ‘Imi Invasive instance by invoking meteor npm run start in one console window.

Then, in another console window, start up the end-to-end tests with:

meteor npm run testcafe

You will see browser windows appear and disappear as the tests run.

From mockup to production

‘Imi Invasive is meant to illustrate the use of Meteor for developing an initial proof-of-concept prototype. For a production application, several additional security-related changes must be implemented:

(Note that these changes do not need to be implemented for ICS 314, although they are relatively straightforward to accomplish.)

Continuous Integration

ci-badge

‘Imi Invasive uses GitHub Actions to automatically run ESLint and TestCafe each time a commit is made to the default branch. You can see the results of all recent “workflows” at https://github.com/islandinvaders/imi-invasive/actions.

The workflow definition file is quite simple and is located at .github/workflows/ci.yml.

Development History

This project is developed in a series of milestones:

Feedback

Here is some feedback we’ve received from surveying other students at UHM.

Feedback that we have implemented:

Feedback that we are taking into consideration for the future:

About the Team

The team is made up of five computer science undergraduate students at the University of Hawai’i at Mānoa.

Natalie Ching

2nd Year BS in CS Data Science

Natalie grew up in Hawai’i and is very interested in the native wildlife. She also does invasive seaweed clean-ups in Oahu and replanting projects. Natalie wants to work in data science for a government agency.

Fun Fact: Natalie is 5th generation in Hawai’i, and she can touch her elbows behind her head.

Allison Ebsen

2nd Year BS in CS General

Allison works in Agrosecurity and Agricultural Engineering, and she values the interconnectedness between the environment and our health. She’s currently exploring careers in computational biology.

Fun Fact: A childhood game that Allison loves is Pokemon Mystery Dungeon: Explorers of Sky.

Lily Enanoria

2nd Year BS in CS Security Science

Lily grew up going to the beach with her ‘ohana, and she loves interacting with nature. She loves opportunities to restore the ʻāina. Lily aspires to work in cybersecurity for the government.

Fun Fact: Lily’s goal is to live in Japan one day.

Myra Ortigosa

2nd Year BS in CS Data Science

Myra cares about the environment and engages in community beach clean-ups, and she aspires to become a data scientist or data analyst.

Fun Fact: Myra recently got a takoyaki machine and wants to use it one day when she’s not busy.

Gian Panoy

2nd Year BS in CS General

Gian is pursuing a career in software engineering. He is of Native Hawaiian descent and cares about the community and life here.

Fun Fact: Gian (aka Mr. Worldwide) has visited Canada, South Korea, and the Philippines.

Team Contract