openbenches.org

OpenBenches.org - an open data repository for memorial benches

https://github.com/openbenches/openbenches.org

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 21 committers (14.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.6%) to scientific vocabulary

Keywords

hacktoberfest hacktoberfest2023

Keywords from Contributors

interactive optimizing-compiler mesh parallel interpretability profiles sequences generic projection standardization
Last synced: 6 months ago · JSON representation ·

Repository

OpenBenches.org - an open data repository for memorial benches

Basic Info
  • Host: GitHub
  • Owner: openbenches
  • License: mit
  • Language: PHP
  • Default Branch: master
  • Homepage: https://openbenches.org/
  • Size: 42.9 MB
Statistics
  • Stars: 182
  • Watchers: 4
  • Forks: 28
  • Open Issues: 29
  • Releases: 1
Topics
hacktoberfest hacktoberfest2023
Created over 8 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing Funding License Code of conduct Citation

README.md

OpenBenches

A bench in a park, birds fly up above. In the background is a tree.

https://OpenBenches.org/ - an open data repository for memorial benches.

DOI

Supporters

You can sponsor OpenBenches on GitHub.

We'd like to thank the following sponsors for their generosity:

Contributing

All contributions are welcome. Before making a pull request, please:

  1. Raise a new issue describing the problem and how you intend to fix it.
  2. Submit a Pull Request referencing the Issue.

Open Data API

You can get all the data, or partial data, from the API. Data is returned in geoJSON format and has the following structure:

JSON { "type": "FeatureCollection", "features": [{ "id": 1234657, "type": "Feature", "geometry": { "type": "Point", "coordinates": [0.1234, 5.678] }, "properties": { "created_at": "2021-06-05T12:27:36+01:00", "popupContent": "IN LOVING MEMORY OF\nBOB AND\nJANE", "media": [{ "URL": "\/image\/3f786850e387550fdab836ed7e6dc881de23001b", "mediaID": 123456789, "licence": "CC BY-SA 4.0", "media_type": "inscription", "sha1": "3f786850e387550fdab836ed7e6dc881de23001b", "user": 6143, "username": "edent", "userprovider": "twitter", "width": 4096, "height": 3072 }, { "URL": "\/image\/89e6c98d92887913cadf06b2adb97f26cde4849b", "mediaID": 43803, "licence": "CC BY-SA 4.0", "media_type": "bench", "sha1": "89e6c98d92887913cadf06b2adb97f26cde4849b", "user": 123456780, "username": "edent", "userprovider": "twitter", "width": 4096, "height": 3072 }] } }] }

Benches

  • All Bench Data (GeoJSON)
    • https://openbenches.org/api/benches
    • Cached for 10 minutes - changes may not appear immediately
  • Specific Bench (GeoJSON)
    • https://openbenches.org/api/bench/123
  • Benches from a specific user
    • https://openbenches.org/api/user/5678
  • Search Results (GeoJSON)
    • https://openbenches.org/api/search?search=in%20loving%20memory
  • Tagged Benches (GeoJSON)
    • https://openbenches.org/api/tag/dog
  • Benches near a location (GeoJSON)
    • https://openbenches.org/api/nearest/?latitude=46.67583&longitude=8.245239&distance=200
    • Distance is in Km
    • Uses the Haversine formula
  • Benches near a location (GPX)
    • https://openbenches.org/api/nearest/gpx?latitude=46.67583&longitude=8.245239&distance=200
  • Specify number of benches
    • By default, a maximum of 20 results are returned.
    • To change the number of results, use &limit=, for example &limit=50 for up to 50 benches.

Inscriptions

  • By default, the inscriptions are truncated to 128 characters.
  • To get the full inscriptions, append &truncated=false
  • https://openbenches.org/api/benches?truncated=false

Media

  • By default, the API doesn't return media.
  • To get media, append https://openbenches.org/api/benches?media=true

Latest

  • By default, the API returns all results
  • To get the latest 5 benches, append &latest=5
  • https://openbenches.org/api/benches?latest=5

Tags

  • All available folksonomy tags
    • https://openbenches.org/api/tags

Running Locally

This is a Symfony PHP and MySQL website. No need for node, complicated deploys, or spinning up containerised virtual machines in the cloud.

Requirements

  • PHP 8 or greater.
  • MySQL 5.5 or greater with innodb.
  • ImageMagick 6.9.4-10 or greater.

For more, see CONTRIBUTING.md

Database Structure

In the /database/ folder you'll find a sample database. All text fields are utf8mb4_unicode_ci because we live in the future now.

Hopefully, the tables are self explanatory:

Benches

  • benchID
  • latitude
  • longitude
  • address text representation generated by reverse geocoding. For example "10 Downing Street, London SW1A 2AA, United Kingdom"
  • inscription the text written on the bench
  • description placeholder. Might be used for comments about the bench.
  • present if a bench has been physically removed, this can be set to false.
  • published set to FALSE if the bench has been deleted
  • added datetime of when the bench was uploaded to the site
  • userID foreign key

Users

Originally we were going to force people to sign in with Twitter / Facebook / GitHub. But that discourages use - so users are now pseudo-anonymous. Hence this weird structure!

  • userID
  • provider could be Twitter, GitHub, Facebook, anon etc.
  • providerID user ID number on the provider's service. Anonymous users stores their IP address.
  • name their display name. Anonymous users stores the time they added a bench.

Media

We store the original image - smaller images are rendered dynamically.

Media storage can be complicated. Storing thousands of images in a single directory can cause problems on some systems. To get around this, we calculate the SHA1 hash of each image. The image is stored in a subdirectory based on the hash. For example, if the hash is 1A2B3C, the file will be stored in /photos/1/A/1A2B3C.jpg

  • mediaID
  • benchID
  • userID
  • sha1 A hash of the file.
  • importURL If the image was imported from an external source - like Flickr.
  • licence The default is CC BY-SA 4.0, imported images may be different.
  • media_type We allow different types of photo - in the future, we might have other types of media.
  • width The image's width in pixels.
  • height The image's width in pixels.
  • datetime The date and time the image was created - based on EXIF metadata.
  • make The make of camera which took the photo - based on EXIF metadata.
  • model The model of camera which took the photo - based on EXIF metadata.

Media Types

At the moment, we only accept photos - of the inscription, the bench, the view from the bench, a panorama, and a VR photosphere.

  • shortName Internal ID.
  • longName Displayed to the user.
  • displayOrder When rendering a form in HTML, this determines the order they are presented in.

Licences

  • shortName Internal ID.
  • longName Displayed to the user.
  • url For more information.

Tagging

Benches can be given multiple "tags". For example "cat" if the bench commemorates a feline, or "beach" if the bench is at the seaside.

Tagging uses the Toxi structure.

  • tags contains:

    • tagID a unique ID
    • tagText the displayed text
  • tag_map contains:

    • mapID a unique ID
    • tagID the ID of a tag
    • benchID the ID of a bench

Tags are hard-coded in the database and can't be added or edited by regular users.

Open Source Licenses

Everything we do builds on someone else's hard work.

And thanks to the many contributors who have improved this codebase.

Owner

  • Name: OpenBenches
  • Login: openbenches
  • Kind: organization

Repos for the OpenBenches project

Citation (CITATION.cff)

cff-version: 1.2.0
title: OpenBenches
message: >-
  If you use or reference this dataset, please cite it as
  below.
type: dataset
authors:
  - family-names: Eden
    given-names: Terence
    orcid: 'https://orcid.org/0000-0002-9265-9069'
repository-code: 'https://github.com/openbenches/openbenches.org'
url: 'https://openbenches.org/'
abstract: >-
  OpenBenches.org - an open data repository for
  crowd-sourced memorial benches.
license: MIT

GitHub Events

Total
  • Create event: 10
  • Release event: 1
  • Issues event: 15
  • Watch event: 9
  • Delete event: 5
  • Issue comment event: 30
  • Push event: 36
  • Pull request review event: 2
  • Pull request review comment event: 2
  • Pull request event: 15
  • Fork event: 2
Last Year
  • Create event: 10
  • Release event: 1
  • Issues event: 15
  • Watch event: 9
  • Delete event: 5
  • Issue comment event: 30
  • Push event: 36
  • Pull request review event: 2
  • Pull request review comment event: 2
  • Pull request event: 15
  • Fork event: 2

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 742
  • Total Committers: 21
  • Avg Commits per committer: 35.333
  • Development Distribution Score (DDS): 0.164
Past Year
  • Commits: 60
  • Committers: 5
  • Avg Commits per committer: 12.0
  • Development Distribution Score (DDS): 0.133
Top Committers
Name Email Commits
Terence Eden g****m@s****i 620
Terence Eden g****t@s****i 63
summerbeth l****n@g****m 12
mike m****e@c****n 9
m1ga m****a@w****e 7
cusey m****s@w****k 4
mike a****t@g****m 4
Alex Wilson a****n@a****k 3
Mike Hingley c****e@h****m 3
dependabot[bot] 4****] 3
Ian g****b@i****k 2
Matthew Flint m@t****g 2
sikander s****l@g****m 2
Andy Lulham a****m@g****m 1
Daniel Pope d****e 1
Edward Betts e****d@4****m 1
Harry Bond me@h****z 1
Marcus Noble A****s 1
Harry Bond e****8@p****e 1
Neil Carmichael b****e@h****m 1
Thomas Wood t****9@i****k 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 126
  • Total pull requests: 36
  • Average time to close issues: 10 months
  • Average time to close pull requests: 13 days
  • Total issue authors: 35
  • Total pull request authors: 9
  • Average comments per issue: 2.67
  • Average comments per pull request: 0.69
  • Merged pull requests: 24
  • Bot issues: 0
  • Bot pull requests: 13
Past Year
  • Issues: 13
  • Pull requests: 11
  • Average time to close issues: 4 days
  • Average time to close pull requests: about 1 month
  • Issue authors: 9
  • Pull request authors: 3
  • Average comments per issue: 1.31
  • Average comments per pull request: 0.45
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 7
Top Authors
Issue Authors
  • edent (33)
  • backache (20)
  • arizonagroovejet (14)
  • jrbray1 (11)
  • bennuttall (8)
  • computamike (4)
  • alifeee (3)
  • RedAuburn (2)
  • paulwakeford (2)
  • endim8 (1)
  • dependabot[bot] (1)
  • Krinkle (1)
  • kvaradhan3 (1)
  • vaishnav-sh (1)
  • alexdutton (1)
Pull Request Authors
  • dependabot[bot] (19)
  • summerbeth (7)
  • arizonagroovejet (6)
  • computamike (4)
  • edent (3)
  • hb0nd (2)
  • endim8 (1)
  • EdwardBetts (1)
  • backache (1)
Top Labels
Issue Labels
Hacktoberfest (4) enhancement (2) help wanted (2) dependencies (1) php (1)
Pull Request Labels
dependencies (19) php (13) javascript (2)

Dependencies

www/composer.json packagist
  • auth0/auth0-php ^8.1
  • guzzlehttp/guzzle ^7.4
  • nojimage/twitter-text-php ^3.0
www/composer.lock packagist
  • auth0/auth0-php 8.11.1
  • auth0/symfony 5.2.3
  • composer/semver 3.4.0
  • doctrine/cache 2.2.0
  • doctrine/collections 2.2.2
  • doctrine/dbal 4.0.3
  • doctrine/deprecations 1.1.3
  • doctrine/doctrine-bundle 2.12.0
  • doctrine/doctrine-migrations-bundle 3.3.1
  • doctrine/event-manager 2.0.1
  • doctrine/inflector 2.0.10
  • doctrine/instantiator 2.0.0
  • doctrine/lexer 3.0.1
  • doctrine/migrations 3.7.4
  • doctrine/orm 3.2.0
  • doctrine/persistence 3.3.2
  • doctrine/sql-formatter 1.4.0
  • eleirbag89/mastodonbotphp v0.1
  • ferrysyahrinal/twifer v2.2
  • nyholm/psr7 1.8.1
  • php-http/discovery 1.19.4
  • php-http/multipart-stream-builder 1.3.1
  • psr-discovery/all 1.0.1
  • psr-discovery/cache-implementations 1.1.1
  • psr-discovery/container-implementations 1.1.1
  • psr-discovery/discovery 1.1.1
  • psr-discovery/event-dispatcher-implementations 1.1.1
  • psr-discovery/http-client-implementations 1.2.0
  • psr-discovery/http-factory-implementations 1.1.1
  • psr-discovery/log-implementations 1.0.1
  • psr/cache 3.0.0
  • psr/clock 1.0.0
  • psr/container 2.0.2
  • psr/event-dispatcher 1.0.0
  • psr/http-client 1.0.3
  • psr/http-factory 1.1.0
  • psr/http-message 2.0
  • psr/log 3.0.0
  • symfony/apache-pack v1.0.1
  • symfony/cache v6.4.8
  • symfony/cache-contracts v3.5.0
  • symfony/clock v6.4.8
  • symfony/config v6.4.8
  • symfony/console v6.4.8
  • symfony/dependency-injection v6.4.8
  • symfony/deprecation-contracts v3.5.0
  • symfony/doctrine-bridge v6.4.8
  • symfony/dotenv v6.4.8
  • symfony/error-handler v6.4.8
  • symfony/event-dispatcher v6.4.8
  • symfony/event-dispatcher-contracts v3.5.0
  • symfony/filesystem v6.4.8
  • symfony/finder v6.4.8
  • symfony/flex v2.4.5
  • symfony/framework-bundle v6.4.8
  • symfony/http-client v6.4.8
  • symfony/http-client-contracts v3.5.0
  • symfony/http-foundation v6.4.8
  • symfony/http-kernel v6.4.8
  • symfony/mime v6.4.8
  • symfony/password-hasher v6.4.8
  • symfony/polyfill-intl-grapheme v1.29.0
  • symfony/polyfill-intl-idn v1.29.0
  • symfony/polyfill-intl-normalizer v1.29.0
  • symfony/polyfill-mbstring v1.31.0
  • symfony/polyfill-php83 v1.29.0
  • symfony/property-access v6.4.8
  • symfony/property-info v6.4.8
  • symfony/routing v6.4.8
  • symfony/runtime v6.4.8
  • symfony/security-bundle v6.4.8
  • symfony/security-core v6.4.8
  • symfony/security-csrf v6.4.8
  • symfony/security-http v6.4.8
  • symfony/service-contracts v3.5.0
  • symfony/stopwatch v6.4.8
  • symfony/string v6.4.8
  • symfony/translation-contracts v3.5.0
  • symfony/twig-bridge v6.4.8
  • symfony/twig-bundle v6.4.8
  • symfony/var-dumper v6.4.8
  • symfony/var-exporter v6.4.8
  • symfony/yaml v6.4.8
  • twig/extra-bundle v3.10.0
  • twig/twig v3.14.0