Git Product home page Git Product logo

hackforla / vrms Goto Github PK

View Code? Open in Web Editor NEW
39.0 20.0 76.0 12.85 MB

Volunteer Relationship Management System: This is an ambitious project to create a system that will help us measure our human capital development, reduce repetitive tasks and processes, and improve outcomes.

License: GNU Affero General Public License v3.0

HTML 0.49% JavaScript 88.31% SCSS 10.88% Shell 0.32%
hack-for-la code-for-america code-for-all civictechindex github-api meetup-api sign-in

vrms's Introduction

Volunteer Relationship Management System

Live Site: https://www.vrms.io

VRMS is a tool used for the engagement, support, and retention of a network of volunteers.

This is an ambitious project to create a system that will help us measure our human capital development, reduce repetitive tasks and processes for leadership, and improve outcomes for both volunteers and the projects they contribute to.

How to Contribute

We require all code contributors to

  1. Join our organization by going through Hack for LA onboarding. It's free to join!
  2. Read our CONTRIBUTING.md document.

Wiki Highlights

  1. Introduction
  2. Technology Stack
  3. Team Meetings

We Love Our Stars ⭐⭐⭐

Thanks to the following people who have given us a star on our repo: Stargazers repo roster for @hackforla/vrms

Licensing

AGPL-3.0 License

vrms's People

Contributors

akibrhast avatar alex-anakin avatar awhig avatar bkmorgan3 avatar chrxscrxss avatar chukalicious avatar clockwerkz avatar danieldkim42 avatar dependabot[bot] avatar drubgrubby avatar evanyang1 avatar experimentsinhonesty avatar foxshaunr avatar freaky4wrld avatar jasonwong26 avatar jbubar avatar jonathanko52 avatar lcchrty avatar masterbirdy avatar mattpereira avatar nickbeaird avatar olgabilogurova avatar patrickgus avatar piall avatar plang-psm avatar rachelwhaley avatar sarl3y avatar shiningjustice avatar spiteless avatar vadzimk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vrms's Issues

Research similar systems

Overview

Research similar systems

Action Items

  • Look for 3-5 similar volunteer check-in and management systems or comparable systems & post links to:
  • any relevant open-source code
  • screenshots
  • create a spreadsheet with feature comparison

Resource/Instructions

HfLA Competitive Analysis template

Secure backend/api

Overview

The backend needs to be secured to prevent unauthorized API calls.

Action Items

  • Add middleware to accept specific headers
  • Send headers with frontend request

Add Github API Integrations

Overview

Adding GitHub API Allows the VRMS system to perform any action accessible via github.com. This will allow the system to see if a person is registered on github with the same address they used to sign up(if public on profile). Add that user to HackForLA. Future Development will include additional actions such as assignment to projects/teams, admin roles... and dynamically generating welcome emails that contain instructions on how to set up 2FA, or how to get a github account as appropriate.

Action Items

Build reusable promise based functions for interaction with githubs API. This includes additional environment variables for the admin token.

Resources/Instructions

Github API Docs

Define Team Structure

Overview

Define team structure with roles and responsibilities.

Action Items

  • Review all prioritized backlogs identify roles and skill sets needed
  • Update roster with needs
  • Update team roster on wiki

Resources/Instructions

Team Roster
Wiki page

Define minimum viable info/questions

As of 02/02/2020 Undefined

Overview

Identify key questions and important information needed in order to define the minimum viable product (alpha version).

Action Items

  • Interview Bonnie
  • Interview Wes
  • Interview Kegan
  • Interview 2-3 individuals who have recently joined Hack for LA
  • Pull all the questions in the current Meetup "join this group" flow
  • Add Onboarding Experience Survey Questions

Resources/Instructions

Admin dashboard global location filter

Overview

As an admin user, I want to edit one filter on the dashboard (All, DTLA, Westside) that filters all the metrics/charts at the same time, so that I can easily see a snapshot of volunteer engagement by location or all together.

Dependency:

Action Items

  • Move the current dropdown to the top
  • Make each of the dashboard components responsive to the filter.

Add month/year filter to admin dashboard

Overview

As an admin user, I want to filter the admin dashboard by a range of month/year, so that I can see the metrics limited by a specific time range.

Action Items

  • Add a filter for dashboard start time (month/year)
  • Add a filter for dashboard end time (month/year)
  • Default filters to show all-time metrics (no filtering)
  • Ensure that all dashboard components react to the filter

Add global location filter: Date Range

As an admin user, I want to be able to update all charts on the dashboard page to filter for a certain date range at once.

Task:

  • Add a global location filter to the dashboard page
  • This global location filter should be a dropdown of preset date ranges:

Date Range
*** Last 7 Days
*** Last 30 Days
*** Last 90 Days
*** Last 6 months
*** Last 12 months
*** All Time

  • Ensure that all dashboard components (data tables, data points & charts) react to the filter

Date range filter will filter the user's view of the data by calculating from CURRENT day's date (-7 days), (-30 days), and so on.

Research Auth0 Implementation

Overview

We need an overview on how to implement Auth0 for our environment.

Action Items

  • Read README to identify tech stack
  • Paste links to appropriate implementation from Auth0 documentation into comments on issue
  • Write proposal in comments

Resources/Instructions

https://auth0.com/docs/

New Dashboard Chart: Total Volunteer Hours

As an admin user, I want the dashboard to show key metrics in a chart visualization, so that I can easily see the count of total volunteers hours across brigades (and global filters on this chart as desired).

Link to Wireframes:
https://www.figma.com/file/9c6pxjImN8MjHAZLH7zxYm/VRMS-Mocks?node-id=22881%3A2738

Action Items:

  • Build a donut chart called "Total Volunteers Hours" that shows the sum (n) of total volunteer hours as a numerical value to the right of the chart title.
    --- Chart Title: Total Volunteers Hours
    --- n = SUM of events.hours (meaning sum of the hours field from the events table)
    --- Include a legend below the donut chart with the count by location for each hacknigiht location.

  • This chart should display a color split across the 3 Hack for LA brigades. Use the color scheme determined from #76

  • This chart needs to react to the 2 global data filters (Location & Date Range picker)
    --- Note: the global location filter is filtering on the hacknight field from this same table, allowing the SUM(hours) to be filtered by HackforLA location.

Acceptance Criteria:
As a user I should now see a donut chart beneath the global location filters like so:
image

Add Project collection to the database

Overview

Build a Projects collection in the database to contain information about each project and its team.

Action Items

  • Research and propose requirements needed to develop a project collection
  • Add Projects collection to database
  • Add necessary project API routes and querying abilities

Add start/end times to events table

Overview

Add attributes to the data model for each event to track the number of hours, so that we can report more accurately on volunteer hours.

Action Items

  • Add attributes:
    • start time (time)
    • end time (time)
    • number of hours (calculated from end minus start time)

Future Development Idea

  • Could we use these start/end times to automate when check-in opens/closes? This is just an idea for a future feature, NOT for development in this ticket.

Add Question Logic

Overview

The set of questions given to the volunteers should be presented logically, depending on which questions they have or haven't answered.

Action Items

Front End:

  • Fetch call to retrieve questions based off user email retrieval
  • Display questions logically

Back End:

  • Review current questions and users model to see if any changes are needed

Resources/Instructions

Define User roles

Overview

Review all of the roles and identify which systems they need access to

Action Items

  • Review current user model in database and propose proper role based authentication
  • Review proposals below for additional role identification and hierarchy
  • Define hierarchy
  • Propose roles (admin, user, project owner, team leads, hack night host)

Resources/Instructions

  • Identify unique roles from this and this process
  • Research and update user stories document here

Related to
Issue #91 - currently being worked on

Hack Night end of event summary report

Overview

A summary report for the end of event is needed to be able to do after action analysis.

Action Items

Report should include at a minimum the following:
Event location.
Date of Event.
Attendee info by member attributes.
New attendee email list.

Fix HfLA logo scaling

Overview

The HfLA logo in the navbar sometimes stretches and skews itself

Action Items

  • Fix logo scaling

Change pre-Alpha version number

Overview

pre-Alpha version has reached user milestone of 100+ active users. Production is stable at that load. Increment has been earned.

Action Items

Increase pre-Alpha versioning to 0.2

Implement New User Roles

Overview

Get the requirements from the user role definition issue

Dependency

Define User Roles #29

Action Items

Back End:

  • Add new roles to current model

Resources/Instructions

Admin Events Page: Past Events

As an admin user, I want to be able to look up past HackforLA events in the VRMS admin dashboard.

This view should live in the "Events" tab, in the header menu of the dashboard (rather than the "Home" tab).

Link to Wireframes:
https://www.figma.com/file/9c6pxjImN8MjHAZLH7zxYm/VRMS-Mocks?node-id=22881%3A2738
--- See screen titled "Events-Past Events"

Action Items:

  • In the global location filter section, replace the "HackforLA Overview" header text with 2 clickable tabs:
  • Past Events [default view]
  • Upcoming Events
    image
  • In the "Past Events" view, show a list of HackforLA events as a series of tiles with the following repeatable components for every event tile:
  • Event Name (events.name)
    --- e.g. HackforLA Westside
  • Event Date (events.date) -- format should be [Day of week, Month Day Year]
    --- e.g. Monday, Feb. 4 2020
  • Location (events.location__city)
    --- e.g. Santa Monica
  • "View Details" button (right-align & vertically centered in the tile). This button will click through to an "Event Details" view (requirements here: #82 )
  • This list needs to react to the 2 global data filters (Location & Date Range picker)

Acceptance Criteria:
As a user, when I click on the "Events" header menu tab, I should now see two new tabs in the global location filter section, called Past Events and Upcoming Events.

The "Events" view should default to "Past Events", which shows me a list of past HackforLA events like so:
image

If I use the Location global filter, I should now only see a list of past events for that Hacknight location. If i use the Date Range filter, I should now only see past events within the date range selected.

New Dashboard Chart: Most hours volunteered Leaderboard

As an admin user, I want the dashboard to show key metrics, one of which is a Volunteer Leaderboard. This is a list of the Top Volunteers sorted DESC by Sum of Volunteer Hours. I'll want to see the Top Volunteers across all locations, and per each location (when using the global location filter).

Link to Wireframes:
https://www.figma.com/file/9c6pxjImN8MjHAZLH7zxYm/VRMS-Mocks?node-id=22881%3A2738

Action Items:

  • Build a table called "Volunteer Leaderboard" that shows a distinct (deduplicated) list of HackforLA Volunteers sorted in descending order by Volunteer Hours.

This table should contain the following 3 columns:
--- Name | Display Name = (users.name__firstName) + (users.name__lastName)
--- Events | Events = COUNT(eventId) by user
--- Hours | Hours = SUM(events.hours) by user

  • LIMIT the default view of this table to the top 5 in the list (by SUM of volunteer hours)

  • Include a button, right-align in the table header, that says View All. Clicking this button should display all rows of the Volunteer list in the table.
    ** Note: this step can be CUT if needed for timing.

  • This chart needs to react to the 2 global data filters (Location & Date Range picker)

Acceptance Criteria:
As a user I should now see the Volunteer Leaderboard table beneath the "Avg. Hours per Volunteer" chart, like so:
image

Research Admin Dashboard Requirements

Overview

The admin dashboard is the hub for all things related to managing a brigade of volunteers. It should provide data about the brigade, and tools for the admin to create and update events, open check-in time for hack nights, and oversee the human capital development of the organization through project and volunteer management.

Action Items

UI/UX:

  • Research popular dashboards and how they display their information
  • Obtain requirements from stakeholders about how to effectively display the information and tools they need
  • Document this

Data Science:

  • Review current data collected and propose how to display it effectively for stakeholders

Resources/Instructions

Current user model and data that has been collected already
Screen Shot 2020-02-02 at 12 57 04 PM

Add new fields to events table

As an admin user, I want to calculate the Volunteer hours by location or by volunteers. To do this, we need to track the number of hours per event. In order pivot volunteer hours by event types, not just location, in the future, we'll need a field to identify an event type.

Add the following new fields to the 'events' data table.

Data Table | Field Name | Value description

  • Events Table | hours | Length (in hours) of event. Static value entered at time of event creation. Numeric.
  • Events Table | event_type | Type of event (i.e. Hack Night vs. Conference vs. Summit, etc.). Text.
  • Events Table | session | Session name (i.e. name of session that occurred at a conference). Text.

For Hack Nights, session may be blank/null value - this is expected. With the format above, we'll able to pivot data on any level of the below hierarchy:
Event Type > Event Name > Session Name > Hours

Examples:
hacknight > HackforLA Westside > [blank] > 3
conference > Unconference Q1 2020 > VRMS Breakout > 1
conference > Unconference Q1 2020 > How to be a BAMF > 1

Etc.

Fix admin dashboard stats calculations

Overview

The functionality requested in #39 has been implemented, but the math is wrong from the calculations.

Action Items

  • Fix calculations to display correct stats in admin dashboard

Dependencies

#39

Add Authentication

Overview

Add Authentication. Current model uses role-based selection. We need to decide if that's the correct method for our product and pivot if needed. Ideally, we'll use a combination of magic links for users and 2FA for admins.

Dependency

Full implementation will require new user roles once they have been added: Implement New User Roles #30

Requirements

  • Front End Developer
    • Understanding of React Hooks implementation with global state management

Action Items

Front End:

  • Utilize current React Hooks and Context to implement Auth0 Firebase

Create Project Manager user level work flow

Overview

Create a work flow for how the Project Manager would experience VRMS

Action Items

  • Review the issues in the Github Automation repo to identify automation goals.
    • Interview Bonnie after you have automation goals list and get validation
  • Design work flow diagrams
    • Review with Bonnie
  • Create low fidelity mock ups
    • Show to subset of project managers
      • Revise as appropriate
      • Once signed off - create new issue for development

Resources/Instructions

Github Automation repo

Update user flows

Overview

12/09/19
Update user flows to current information

Resources/Instructions

Prototype wireframes for admin dashboard

Overview

Propose a new design for the admin dashboard based on data visualizations

Dependencies

  • See the list of potential metrics in the User Personas project board

Approved Metrics

  • Total count of volunteer by location (for date range selected)
  • Total sum of volunteer hours by location (for date range selected)
  • Average volunteer hours per volunteer by location & across all locations (for date range selected)
  • Most hours volunteered Leaderboard (Top 5 default, "View All" will expand to full list)
    **Maybe we should consider a "View More" instead, that shows 10-20 more at a time, to prevent a massive list with poor performance)
  • Individual Event Details - Past Events & Upcoming Events.

CUT Metrics

  • Volunteer hours graphed on a trend chart over time.
  • Volunteer metrics filtered by custom time frame (custom week, month, quarter, year)
  • Total hours by Team
  • Average hours of volunteer by Team
  • Hours volunteered by type of project

Action Items

  • Review list from the User Personas board and create wireframes based on findings

Resources

Current draft of wireframes: https://www.figma.com/file/9c6pxjImN8MjHAZLH7zxYm/VRMS-Mocks?node-id=22881%3A2786

Build flowchart of work flow

Overview

Create VRMS check-in user flow with cookie detection in a flowchart.

Action Items

  • Convert hand drawn images in comments to Whimsical flowchart.
  • Get sign-off on flowchart accuracy
  • Create deck-ready version of flow chart with screenshots

Resources/Instruction

See comments for flows

Update wiki

Overview

Update the project wiki to include anything required for the current milestone

Dependency

When we get to the end of MVP and have something to document, or when we get more clarity on the code

Action Items

  • Use hackforla website wiki as an example to build out our wiki
    • Gather info
  • Update the project wiki per findings
    - [ ] Review with Bonnie

Resources

Hack for LA website wiki

HfLA AWS account configuration

Overview

Hack for L.A. (HFLA) wishes to host all of their services from an AWS account owned by the HFLA organization. In order to do so, we must create and configure an AWS account for the HFLA organization. This issue tracks the work of doing the discovery and initial set-up for this AWS account.

Action Items

  • IAM (identity and access management)
    • discovery
    • set up account
    • create groups and users
    • configure tagging
  • Networking and Security
    • discovery
  • Deployment
    • discovery

Resources/Instructions

Add link to Yasmin's doc here

Develop front end model

Overview

Develop front end model for React.

Action Items

  • Components
  • Routes
  • Fetch

Resources/Instructions

New Dashboard Chart: Total Volunteers

As an admin user, I want the dashboard to show key metrics in a chart visualization, so that I can easily see the count of total volunteers across brigades (and global filters on this chart as desired).

Link to Wireframes:
https://www.figma.com/file/9c6pxjImN8MjHAZLH7zxYm/VRMS-Mocks?node-id=22881%3A2738

Action Items:

  • Build a chart called "Total Volunteers" that shows the count (n) of total volunteers as a numerical value to the right of the chart title.
    --- Chart Title: Total Volunteers
    --- n = COUNT of distinct(userid) across all HackforLA locations for all time.
    --- Include a legend below the donut chart with the count by location for each hacknigiht location.

  • All charts should display color split across the 3 Hack for LA brigades. Either existing blue monochrome is fine (from wireframe), or we can experiment with the Code for America tri-color theme:
    --- DTLA: F9F9F9
    --- Westside: 005A87
    --- South LA: CD1F42

  • This chart needs to react to the 2 global data filters (Location & Date Range picker)
    --- Note: the global location filter is filtering on the hacknight field from this same table, allowing the SUM(hours) to be filtered by HackforLA location.

Acceptance Criteria:
As a user, I should now see in the VRMS admin dashboard a chart like so, underneath the global location filters:
image

New Dashboard Chart: Avg. Hours per Volunteer

As an admin user, I want the dashboard to show key metrics in a chart visualization, so that I can easily see the Average volunteer hours per volunteer across brigades, and per each location if using the global location filter.

Link to Wireframes:
https://www.figma.com/file/9c6pxjImN8MjHAZLH7zxYm/VRMS-Mocks?node-id=22881%3A2738

Action Items:

  • Build a BAR chart called "Avg. Hours per Volunteer" that shows the AVERAGE (n) of total volunteer hours across brigades as a numerical value to the right of the chart title. Show to the 100th decimal.
    --- Chart Title: Avg. Hours per Volunteer
    --- n = (SUM of volunteer hours) / (COUNT of unique volunteers)
    --- Include a legend below the donut chart with the average by location for each hacknight location.

  • This chart should display a color split across the 3 Hack for LA brigades. Use the color scheme determined from #76 & #77

  • This chart needs to react to the 2 global data filters (Location & Date Range picker)

Acceptance Criteria:
As a user I should now see a bar chart beneath the global location filters like so:
image

Add organization to Event data model

Overview

We want to be able to track "organization" in the event data model, so we can filter the admin dashboard to show either Hack for LA or Unconference metrics.

Action Items

  • Add a field to the data model called Organization with the fields:
    • hack-for-la
    • cfa-summit-2020

Update Admin Dashboard

Overview

The admin dashboard is the hub for all things related to managing a brigade of volunteers. It should provide data about the brigade, and tools for the admin to create and update events, open check-in time for hack nights, and oversee the human capital development of the organization through project and volunteer management.

Dependency

Research Admin Dashboard Requirements #31

Requirements

  • Front End Developer
  • Back End Developer

Action Items

Front End:

  • Utilize data fetching and components to display brigade data/stats
  • Ensure components are modular so they can be reused for "user" and other dashboards

Back End:

  • Implement queries to database to retrieve the data we need

Define new dashboard data charts

Overview

As an admin user, I want the dashboard to show key metrics in a chart visualization, so that I can easily see volunteer hours (or avg. volunteer hours) across brigades, per brigade, and per volunteer.

Dependency:

Action Items

  • Decide which metrics from below list should be shown in the chart. (See "Approved Metrics" section below)

  • Make ticket for donut chart # 1 to the dashboard:
    Chart Title: Total Volunteers
    ** Total Volunteers: [n=count of total volunteer]

  • Make ticket for donut chart # 2 to the dashboard:
    Chart Title: Total Volunteer Hours
    ** Total Volunteer Hours: [n=sum of total volunteer hours]

  • Make ticket for bar chart # 3 to the dashboard:
    Chart Title: Avg. Hours per Volunteer
    ** Avg. Hours per Volunteer [n=sum total hours/count total volunteers]

  • All charts should display color split across the 3 Hack for LA brigades. Either existing blue monochrome is fine (from wireframe), or we can experiment with the Code for America tri-color theme:
    --- DTLA: F9F9F9
    --- Westside: 005A87
    --- South LA: CD1F42

  • Ensure that all 3 charts react to global data filters (Location & Date Range picker)

Approved Metrics

  • Total count of volunteer by location (for date range selected)
  • Total sum of volunteer hours by location (for date range selected)
  • Average volunteer hours per volunteer by location & across all locations (for date range selected)
  • Most hours volunteered Leaderboard (Top 5 default, "View All" will expand to full list)
    **Maybe we should consider a "View More" instead, that shows 10-20 more at a time, to prevent a massive list with poor performance)
  • Individual Event Details - Past Events & Upcoming Events.

See list here of APPROVED vs CUT metrics for updated dashboard: #15

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.