Code Monkey home page Code Monkey logo

vrms's Introduction

Volunteer Relationship Management System

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.

Project Context

We are currently in the initial planning phase after delivering a prototype to the organization's leadership. Our priorities are laying out a feature roadmap for beta and beyond, and recruiting a team of dedicated members to build the product. Time is of the essence, as each Hack Night is a new opportunity to garner valuable data which, in return, supports the organization and it's members.

Technologies

This is a Full Stack web app, built with:

How to contribute

Head over to the Issues tab and see if you'd like to contribute.

If this seems like a project you'd like to dedicate your time to, reach out to the leads on Slack or at one of our weekly Hack Nights.

Using Git (If you're familiar with forking and pulling/pushing/committing, head to the next section)

This section discusses some tips and best practices for working with Git.

Making changes, committing and pushing

  1. Changes start on your local fork of this repository, in your own branch.

  2. Commit your changes with a comment related to the issue it addresses to your local repository.

  3. Push that commit(s) to GitHub.

  4. From the VRMS repository, create a Pull Request which asks VRMS to pull changes from your fork into the main repository.

  5. After the owner of the VRMS repository approves and merges your Pull Request, your changes will be live on the website.

Forking and cloning the repository with proper security

Step 1: Become a member of the repository Team

In the vrms slack channel, send your GitHub name to the project manager (or on the slack channel thread) and we'll add you as a member to the GitHub repository Team.

Once you have accepted the GitHub invite (via email or in your GitHub notifications), please do the following:

  1. Mark your own membership public https://help.github.com/en/articles/publicizing-or-hiding-organization-membership#changing-the-visibility-of-your-organization-membership

  2. Setup two factor authentication on your account hackforla/governance#20

These steps are manditory in order to contribute to all HackforLA projects.

Step 2: Fork the repository

In https://github.com/hackforla/VRMS, look for the fork icon in the top right. Click it and create a fork of the repository.

For git beginners, a fork is a copy of the repository that will be placed on your GitHub account url.

It should create a copy here: https://github.com/your_GitHub_user_name/vrms, where your_GitHub_user_name is replaced with exactly that.

Note that this copy is on a remote server on the GitHub website and not on your computer yet.

If you click the icon again, it will not create a new fork but instead give you the URL associated with your fork.

Step 3: Clone your online repository to your local computer

For git beginners, this process will create a third copy of the repository on your local desktop.

First create a new folder on your desktop that will contain hackforla projects.

In your shell, navigate there then run the following commands:

git clone https://github.com/your_GitHub_user_name/vrms.git

You should now have a new folder in your hackforla folder called vrms.

Verify which URL your origin remote is pointing to:

git remote show origin

If you accidentally cloned the hackforla/vrms.git then you can change your local copy to upload to your fork with the following:

git remote set-url origin https://github.com/your_user_name/vrms.git

Add another remote called vrms that points to the hackforla version of the repository. This will allow you to incorporate changes later:

git remote add vrms https://github.com/hackforla/vrms.git

Step 4: Change to a new branch

For each issue, create a new branch to work in.

This command will let you know available branches and which branch you're on.

Star (*) indicates which branch you're on

git branch

By default you should start on the develop branch.

This command will (create and) change to a new branch:

git checkout -b 140-fix-logo-width

We prefer that you work on a branch name that relates to the issue you're working on.

The format should look like the scheme above where 140 is the issue number in GitHub, and the words are a brief description of the issue.

No law of physics will break if you don't adhere to this scheme but laws of git will break if you add spaces in the branch name.

Incorporating changes from upstream

Your fork of this repository on GitHub, and your local clone of that fork, will get out of sync with this (upstream) repository from time to time.

Assuming you have a local clone with remotes vrms (this repo) and origin (your GitHub fork of this repo):

# WARNING: this will erase local pending changes!
# commit them to a different branch or use git stash
git checkout master
git fetch vrms
git reset --hard vrms/master

Get up and running (locally)

  1. Have Node and NPM installed locally:

    • Verify with node -v and npm -v respectively.
  2. Install Yarn: an improved package manager

    • Verify with yarn --version
  3. Verify that you have the git remote repositories configured:

    • Verify that the output of git remote -v shows your local repo as origin and the upstream vrms repo.
  4. Install the node packages needed in each directory:

    • cd vrms/ and run yarn install
    • cd client and run yarn install
    • cd client-mvp-04 and run yarn install
    • cd ../backend and run yarn install
  5. Add your required environment variables for the frontend and backend directories:

    • touch vrms/backend/.env
    • touch vrms/client/.env
    • touch vrms/client-mvp-04/.env
    • Then paste the content from the document. It is accessible for the project team members only.
    • Please note that the ports for the frontend and backend are set in this location
  6. Take a second to review the app.js and server.js files in the vrms/backend folder. These two files are a blueprint for the back end, so please familiarize yourself with it. You'll see folders for the database collection models, routes for the API, and a config file which loads the necessary environment variables.

  7. Start the local development servers (frontend & backend).

    To run client:

    • Navigate to the root of the application vrms/ and run npm run dev

    To run client-mvp-04:

    • Navigate to the root of the application vrms/ and run npm run mvp

You should now have a live app. Happy hacking.

Get up and running (Docker alternative)

  1. Download docker to your machine.
  2. Start docker locally.
  3. Navigate to the root directory.
  4. Run docker-compose build.
  5. Run docker-compose up.
  6. Navigate to the port for the NGINX container listed in the docker-compose.yml file.

Running Tests

The VRMS application has a variety of tests written for the application. Review the package.json file in any directory and look for any variation of test scripts.

To run all of the tests run npm run test:all from the root folder.

Configure your database

The application uses MongoDB and the team has a few databases for differing environments. Below are instructions on how to connect to the different databases used for development.

  1. Shared Staging Development database: This database is maintained by the team. Post in the #vrms-dev channel to see who has access if you have any issues. This db has data useful for developming

    1. Navigate to the Get up and running section and find the credentials link.
    2. Add the mongoDB credential listed in the DATABASE_URL variable to your backend/.env file.
    3. The environment variable should start with mongodb+srv://editor:SHARED_DB_URL.
  2. Localhost Development database: This database requires that you setup MongoDB on your local machine. See the tutorial for an in depth look on how to do this.

    1. Download mongoDB.
    2. Setup a local mongoDB cluster.
    3. Get the connection string.
    4. Add your localhost connection string to the DATABASE_URL variable to your backend/.env file.
    5. If you are running the application directly on your machine, then your environment variable should start with mongodb://localhost:27017/YOUR_DB_NAME.
    6. If you are running the application using a docker container, then your environment variable should start with mongodb://host.docker.internal:27017/YOUR_DB_NAME.
  3. To create a local copy of a DB from a remote url, then use the backup script as seen in utils/local_db_backup.sh.

  4. Test case in-memory-MongoDB: The unit tests and integration tests create and remove an in memory database on each test run. You should not need to connect to these test databases. See the backend/README.md for more information.

Licensing WIP

Details about the project's open source status below:

vrms's People

Contributors

alex-anakin avatar awhig avatar chrxscrxss avatar clockwerkz avatar dae-hyun-kim avatar dependabot[bot] avatar experimentsinhonesty avatar jafow avatar jonathanko52 avatar junganthonyy avatar masterbirdy avatar nickbeaird avatar o-anakin avatar olgabilogurova avatar patrickgus avatar piall avatar rachelwhaley avatar rmpcoding avatar sarl3y avatar shiningjustice avatar switchzer0 avatar

Stargazers

 avatar

Watchers

 avatar

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.