/goodhere

Good Here helps you discover social impact startups, connect with the social impact community, and find social impact funding.

Primary LanguageJavaScriptMIT LicenseMIT

Good Here

Netlify Status

Welcome! 👋

We are glad that have found this repo and you are interested in Good Here.

This is the source code behind Good Here, an open database of social impact organisations.

Good Here helps you discover impactful projects, connect with the changemakers behind them, and pursue new social impact opportunities.

How to contribute

Good Here is powered by people like you. Your contributions help us create an open source database of social impact startups and funding that reaches everyone.

Want to help contribute? Read our guide to contributing.

📧 Contact

The Good Here team can be contacted by emailing hello@goodhere.org

Beta

Beta website: https://goodhere.org/

🙋🏽 How to nominate a social impact startup

We invite anyone to submit new projects to Good Here. The only requirement for acceptance is a positive social impact.

For investors and organizations providing grants, project finance, or other forms of funding, use the Funding Form.

For organizations providing products, services, research, networks, or otherwise, use the Project Form.

📝 Licenses

All data and content is licensed Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License: CC BY-NC 4.0

The Good Here software has the MIT license: License: MIT

👷 Architecture

Our site is built with Gatsby, a static site generator that uses React and GraphQL under the hood. Static site generators are used to create static websites (i.e. plain HTML/CSS/JS) from dynamic data at build time. Compare this to a traditional dynamic website that uses a runtime (PHP, Ruby, Python, etc) to generate pages on-demand.

In place of a custom backend, we use Airtable as our content management system and API layer. This allows us to iterate on our data schema and admin workflows extremely quickly, without having to write any code. We use a plugin called gatsby-source-airtable to expose our data to Gatsby's GraphQL layer.

We deploy to Netlify, a simple low-cost static web host. Deploys happen any time code is pushed to GitHub, whether to master or another branch. Additionally, we use Zapier to deploy once per day in order to publish new content even when code changes aren't happening.

🛠 Developer Setup

Note: you need to be invited to our Airtable project to run this project locally. The process is really simple and we accept anyone who's interested in helping out. Simply fill out the GoodHere Contributor Application.

  1. Follow these steps to get the project installed on your local dev machine.
    $ git clone https://github.com/benrmatthews/goodhere.git
    $ cd goodhere/site
    $ npm install
  2. Copy your Airtable API key from this page: Airtable account
  3. Create a .env.development file at the root of the project replacing YOUR_KEY_HERE by the key you copied in the previous step:
    $ cp .env.sample .env.development
  4. Run the project like so:
    $ npm run develop

🔑 Environment Variables

There are several environment variables you will need in order to run the project:

  • GRAPHQL_URI
  • AIRTABLE_BASE_ID
  • AUTH0_DOMAIN
  • AUTH0_CLIENT_ID
  • GATSBY_ALGOLIA_APP_ID
  • GATSBY_ALGOLIA_SEARCH_KEY

Please fill out the GoodHere Contributor Application or email hello@goodhere.org to be provided with these environmnet variables.


🏗️ Building

Before submitting your Pull Request you should test that the project builds.

With Gatsby, some code can work on development mode but requires some adaptation for the build. For example when using window that is not accessible in SSR (Server-Side Rendering) mode.

To build the project locally:

  1. Create a .env.production file at the root of the project replacing YOUR_KEY_HERE by the key you copied in the previous step:

    $ cp .env.development .env.production
    # OR
    $ cp .env.sample .env.production
  2. Build the project using the npm run build command.

  3. You can then run the website using the serve public command.

    Note: if you do not have the serve command you can install it using the npm install -g serve command