{"id":22382197,"url":"https://github.com/googleinterns/step226-2020","last_synced_at":"2025-07-31T03:31:27.243Z","repository":{"id":39926923,"uuid":"274729028","full_name":"googleinterns/step226-2020","owner":"googleinterns","description":null,"archived":false,"fork":false,"pushed_at":"2022-05-20T22:16:01.000Z","size":460,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-03-09T06:05:56.563Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/googleinterns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-24T17:27:05.000Z","updated_at":"2020-09-26T14:25:48.000Z","dependencies_parsed_at":"2022-08-24T18:20:56.960Z","dependency_job_id":null,"html_url":"https://github.com/googleinterns/step226-2020","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep226-2020","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep226-2020/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep226-2020/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep226-2020/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/googleinterns","download_url":"https://codeload.github.com/googleinterns/step226-2020/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228209948,"owners_count":17885595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T00:12:08.330Z","updated_at":"2024-12-05T00:12:08.913Z","avatar_url":"https://github.com/googleinterns.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VInet (Volunteer Isolate Network)\n\nVINet is a Web App, designed to connect those isolating as a result of CoViD-19 with volunteers. The aim of the app is to allow isolates to request help from volunteers, for tasks the isolate cannot complete due to the restrictions on movement during the CoViD-19 pandemic. These tasks could include going to the shops for some groceries, collecting a package from the couriers and so on.\n\n## Core Features\n\nThe core features of the VInet Web App include:\n\n- User Authentication\n- Isolate Issue Tracking\n- Volunteer Availability Tracking\n- Isolate / Volunteer Matching\n\n### User Authentication\n\nUser Authentication for the VInet Web App is done via the App Engine UserService API.\n\nThis allows people to log in with their Google accounts, providing a seamless experience for users.\n\nAll ingress / egress points have user authentication, ensuring that user data is safe and secure on the app's backend.\n\n### Isolate Issue Tracking\n\nTo allow isolates to request help from volunteers, we implemented a ticketing system, allowing isolates to send in requests that they would like fulfilled.\n\nThe ticketing system's UI is displayed below ![screenshot of the request ticketing UI](screenshots/request_ticket_ui.png)\n\nAs can be seen from the above example, an isolate's request contains a variable number of tickets, and these tickets allow an isolate to describe what sort of help they need, such as help with grocery shopping.\n\n### Volunteer Availability Tracking\n\nTo allow volunteers to input their availability in regards to fulfilling requests, we implemented an availability tracking system, which allows volunteers to indicate at what time and on which days they are available.\n\nThe availability tracking system's UI is displayed below ![screenshot of the availability tracking UI](screenshots/volunteer_availability_tracking_ui.png)\n\n### Isolate / Volunteer Matching\n\nTo match isolates with volunteers, VInet uses the [Hopcroft-Karp bipartite matching algorithm](https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm). This algorithm produces a maximum cardinality matching, which is to say, the algorithm ensures that the number of isolates helped is as large as possible.\n\nMatching is run as a cron job each evening at 8pm. This was determined as the ideal time to run the matching algorithm, as it would allow for the matching algorithm to run to completion overnight, and for users to be notified of the matchings produced on the following morning.\n\nOnce the algorithm has run, the matches found are accessible to both volunteers and isolates in a table as below.\n\n![screenshot of matches UI](screenshots/matches.png)\n\n## Getting Started\n\n### Prerequisites\n\nIn order to build and/or run this project, you will need:\n\n1. [Git](https://git-scm.com/)\n2. [Apache Maven](https://maven.apache.org/)\n\n### Building Locally\n\nThe first thing you will need to do is `git clone` this repo using one of the following commands:\n\nHTTPS:\n\n```bash\ngit clone https://github.com/googleinterns/step226-2020.git\n```\n\nSSH:\n\n```bash\ngit clone git@github.com:googleinterns/step226-2020.git\n```\n\nGitHub CLI:\n\n```bash\ngh repo clone googleinterns/step226-2020\n```\n\nNow that you have the project available locally you can either:\n\n- Run the tests for this project.\n- Run the project locally on a development server.\n- Deploy the project to Google's App Engine.\n\n#### Running Tests\n\nTo run the tests for this project, run the following command from the terminal:\n\n```bash\nmvn test\n```\n\nThe first time you run this command, it might take a few minutes to fetch all of the project dependencies - this is normal.\n\n#### Running the project locally on a development server\n\nTo run this project locally on a development server, run the following command from the terminal:\n\n```bash\nmvn package appengine:run\n```\n\nOnce the development server has started, the project will be available at \u003clocalhost:8080\u003e.\n\nNote: The development server will not hot-reload files. If you wish to make and test changes, you must reload the development server.\n\n#### Deploying the Project to App Engine\n\nTo deploy this project to App Engine, you will need to enable to [App Engine](cloud.google.com/appengine) service from the [google cloud console](console.cloud.google.com).\n\nOnce you have done so, copy the [project id](cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) of your google cloud console project.\n\nNavigate into this project's root directory, and edit the `pom.xml` file. You will need to change the following entry in the `\u003cplugins\u003e` section:\n\n```xml\n\u003cplugin\u003e\n  \u003cgroupId\u003ecom.google.cloud.tools\u003c/groupId\u003e\n  \u003cartifactId\u003eappengine-maven-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e2.2.0\u003c/version\u003e\n  \u003cconfiguration\u003e\n    \u003cdeploy.projectId\u003eYOUR_PROJECT_ID\u003c/deploy.projectId\u003e\n    \u003cdeploy.version\u003e1\u003c/deploy.version\u003e\n  \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\nUnder `\u003cconfiguration\u003e`, change the `\u003cdeploy.projectId\u003e` tag to contain **your google cloud project's id**.\n\nOnce this has been configured, run the following command:\n\n```bash\nmvn package appengine:deploy\n```\n\nThe project will be deployed, and will be visible under the App Engine dashboard.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogleinterns%2Fstep226-2020","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogleinterns%2Fstep226-2020","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogleinterns%2Fstep226-2020/lists"}