Giter Club home page Giter Club logo

drkane / ngo-explorer Goto Github PK

View Code? Open in Web Editor NEW
4.0 5.0 0.0 5.6 MB

Data tool to help international development NGOs to navigate charity commission data. Project partners: The Sheffield Institute for International Development, David Kane, CharityBase

Home Page: https://ngoexplorer.org/

Python 52.26% CSS 1.79% JavaScript 6.36% HTML 0.26% Jinja 39.28% Batchfile 0.03% Procfile 0.02%
flask international-development python-requests charity python

ngo-explorer's Introduction

Development Charities Data Explorer

Data tool to help international development NGOs to navigate charity commission data.

Python linting Pytest Github Issues Licence

Project partners:

About this app

This app uses Flask to fetch and display data from the CharityBase API.

Installing app using dokku

On dokku server:

# create app
dokku apps:create ngo-explorer

# enable domains
dokku domains:enable ngo-explorer
dokku domains:add ngo-explorer example.com

# letsencrypt
dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
dokku config:set --no-restart ngo-explorer [email protected]
dokku letsencrypt ngo-explorer

# add charitybase api key
dokku config:set ngo-explorer CHARITYBASE_API_KEY=123456789

# setup volume storage
mkdir -p /var/lib/dokku/data/storage/ngo-explorer
chown -R dokku:dokku /var/lib/dokku/data/storage/ngo-explorer
chown -R 32767:32767 /var/lib/dokku/data/storage/ngo-explorer
dokku storage:mount ngo-explorer /var/lib/dokku/data/storage/ngo-explorer:/app/storage
dokku config:set --no-restart ngo-explorer DATA_CONTAINER=/app/storage

Styles

A custom build of tachyons is maintained in https://github.com/drkane/ngo-explorer-tachyons.

Colours used include:

  • yellow: #f9af42
  • dark-green: #043942
  • green: #237756
  • light-green: #0ca777

Translations

Update translations if base text changes

pybabel extract -F babel.cfg --copyright-holder="NGO Explorer" --project="NGO Explorer" --msgid-bugs-address="[email protected]" -o messages.pot .
pybabel update -i messages.pot -d translations

Create a file for translations

pybabel init -i messages.pot -d translations -l de

Compile the new transations

pybabel compile -d translations

Compile javascript

We use webpack and babel to compile javascript - this minimises the size of the javascript files, and makes sure that we can target older browsers.

npm run build

Run tests

python -m pytest -p no:warnings

ngo-explorer's People

Contributors

dan-kwiat avatar dependabot[bot] avatar drkane avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ngo-explorer's Issues

Run fancy statistics

As an academic researcher
I want to download the data
So I can run fancy regressions and add in other data to test inferences

Export charities

As a researcher
I want to export a table of charities
So I can perform further analysis on them

Producing accurate financial data for each calendar year from Charity Commission records

From original brief

Constructing historical records of financial data for charities over time requires a number of steps.

First, information which can be stored in the form of financial years has to be converted to calendar years. In theory, this is simple. You simply convert the expenditure (or income) per financial year into expenditure (or income) per day (assuming expenditure is distributed evenly across the day), and then add up all the expenditure (or income) for each calendar year.

But, in practice there are a number of problems. These are

  1. The start and end of financial years can vary from one organisation to another.
  2. The start and end of financial years can vary for one organisation over time.
  3. Some financial years can be more than 12 months long.
  4. Information for particular years can be incomplete.
  5. Information can be duplicated โ€“ and different โ€“ for particular years or parts of years.

All these are illustrated on the attached excel spreadsheet. The extraction of data therefore must cope with this diversity in order to present spend per calendar year. In some case spend per calendar year will have to be estimated from incomplete records. If days are missing it will need to extrapolate from existing data. If days are duplicated then it will need to take the most recent record as accurate.

Once the data are available in the form of expenditure (or income) per calendar year, then they have to be corrected for inflation. Instructions on how to do so, and the data you require to do so, are available for each financial year from this website.

Please note that when correcting for inflation you can vary the reference year used. In almost all cases we use the most recent year as the reference year, but on some occasions we need to use other years. For example if you are comparing your data with findings from a previous study which has used an older reference year, then you will not want to use the most recent year as the reference year. Instead you have to use the same year that the previous study used.

Adjusting for inflation, and doing so for different reference years is very basic maths, but the website will need to give users a choice with respect to which financial year they chose as their reference year. This will require either downloading the relevant data from the website given above. Or, better still, you give the user the ability to enter their own inflation adjustment co-efficient for each year of data. They could do this manually or by uploading the correct sort of csv file. Or they could check and approve a pre-provided csv file the website offers them. This is not so clicky and instantaneous as an automatic adjustment. However it makes the site far more professional and sophisticated. This is because there can in fact be many ways of adjusting for inflation (as www.measuringworth.com explains). It also means that if the government changes the location of its GDP data then the website will still work.

The end result of this process will be a series of figures for income and expenditure for each charity which are directly comparable because they are all expressed in terms of the same financial year.

Targeting new funds

As a foundation fund manager
I want to know who is operating in a sector/country
So I can target new funds

Potential charitybase issues/fixes

Using this issue to keep track of relevant things to think about relating to charitybase integration.

  • Deal with charities with multiple area of operation countries (eg some have 200+)
  • Pagination of results
  • Add ISO codes for countries
  • Filtering by region
  • query params use OR when filtering - any way to make one of them compulsory?
  • what about NOT in query params - eg excluding organisations that have ticked an option

Import a list of charities

As a researcher
I want to get information about a list of charities I already have
So I can look at them in more detail

Research interviewees

As a Masters/PhD student
I want to find NGOs to interview
So I can write my thesis

Charity to help community

As an overseas community organiser
I want to find a UK charity to help my community
So I can help my community

Other similar tools for about/connections page

From Rosie, list of tools to link to. Make sure to credit Rosie for providing them.

Mapping NGO - tools from abroad

Other coordination platforms / entities

Identify partners

As a small UK chariity
I want to search to identify partners
So I can partner with organisations

Not funders or beneficiaries
Probably looking for funding
Based on geography/theme

Access external information

As a development charity
I want to use links to existing information about a charity
So I can get in depth information about the charity

Example links include

  • Charity Commission
  • Charity's own website
  • CharityBase
  • 360Giving data (GrantNav search?)
  • IATI

Identify trends and patterns

As an International Development sector body
I want to get summary statistics
So I can identify trends and patterns

Identify wasteful spending

As a journalist
I want to find spending that looks wasteful
So I can get a front page/hold funders to account

Sector trends

As a DfID senior executive/minister
I want to know about trends in the sector
So I can understand reach and influence for media briefings

Compare charities

As a ?????
I want to compare development charities
So I can ?????? (Make choices between them)

Potential site users

List from workshop 11/01/2019

  • Job seeker
  • Volunteer on datakind data dive
  • Agencies/marketing
  • Overseas NGO employee
  • UK-based NGO employee
  • Charity looking for collaborators in response to funding calls
  • Small charities
  • CEO of major organisation
  • New charity founder
  • Campaigners
  • Membership organisations
  • FSI leaders
  • researchers at infrastructure body
  • Overseas community organiser
  • Overseas civil servant
  • UK policy makers
  • DfID civil servant
  • Major donor with money to spend
  • Individual (non-major) donor
  • charity supporters
  • business with CSR interest
  • Con men & women(!)
  • fund manager at large funder like DfID
  • journalist
  • GCRF researcher
  • academic researcher

Filter charities

As a development charity
I want to filter a list of development charities
So I can find charities that are most relevant to me

Filtering could be done by:

  • charities' activity
  • the charities' location (HQ/registered office)
  • where in the world the charity works
  • financial size

Quick scan - basic knowledge

As a academic researcher
I want to do a quick scan of the development NGO sector
So I can see how big it is and where it is geographically present

Summary statistics

As a Large UK Charity
I want to get summary statistics
So I can plan our programmes

Find research partners

As a researcher
I want to find partner charities
So I can form a research partnership/use them as a case study

Select by location

As a development charity
I want to select to view charities by the locations where they work
So I can identify charities most relevant to me

Poach fundraiser

As a UK Charity CEO
I want to see who is growing quickly in my area
So I can poach their fundraiser

Who's received grants

As a Grant manager at a foundation
I want to See how many organisations have received grants
So I can check for gaps to fund

Regulation and control

As a overseas government leader/civil servant
I want to know who is operating in my sector/country
So I can regulate and control activities

Aggregate analysis for charitybase

The aggregations would need to respond to the same filtering as the list api endpoint

Trends over time

  • sum of income and spending over time
  • number of registered charities over time
  • grouped into financial years or calendar years (maybe user-defined periods)
  • possible extension - use detailed financial variables where available (eg income breakdown, assets, employees)

Group by variables

  • count of charities
  • sum of latest income/spending
  • group by:
    • geo areas from postcode: region, constituency, etc
    • area of operation (nb an organisation can be in multiple categories)
    • classification categories (nb an organisation can be in multiple categories)
    • income bands (potentially user defined, with defaults?)
    • age of charity (based on registration date)
    • is charity a registered company or not

Group by bands

  • same as group by variables
  • but categories based on a numeric variable - eg latest income
  • fields include:
    • income, spend, volunteers, employees
  • could have default bands, but able to be user defined
  • possible extension - pick a period to choose income/spending from rather than just using latest

Activity filtering

As a development charity
I want to select to view charities by their activities
So I can identify charities most relevant to me

Grow fundraising

As a fundraiser
I want to see who is growing quickly in my area
So I can copy them

Trustees

As a Charity board member
I want to find new members and contacts
So I can Get talent onto my board

Raw data dump

As a datakind volunteer
I want to get a raw data dump
So I can explore the data in R

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.