openbenches.org
OpenBenches.org - an open data repository for memorial benches
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
Keywords from Contributors
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
Metadata Files
README.md
OpenBenches
![]()
https://OpenBenches.org/ - an open data repository for memorial benches.
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:
- Raise a new issue describing the problem and how you intend to fix it.
- 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=50for 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
benchIDlatitudelongitudeaddresstext representation generated by reverse geocoding. For example "10 Downing Street, London SW1A 2AA, United Kingdom"inscriptionthe text written on the benchdescriptionplaceholder. Might be used for comments about the bench.presentif a bench has been physically removed, this can be set to false.publishedset to FALSE if the bench has been deletedaddeddatetime of when the bench was uploaded to the siteuserIDforeign 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!
userIDprovidercould be Twitter, GitHub, Facebook, anon etc.providerIDuser ID number on the provider's service. Anonymous users stores their IP address.nametheir 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
mediaIDbenchIDuserIDsha1A hash of the file.importURLIf the image was imported from an external source - like Flickr.licenceThe default isCC BY-SA 4.0, imported images may be different.media_typeWe allow different types of photo - in the future, we might have other types of media.widthThe image's width in pixels.heightThe image's width in pixels.datetimeThe date and time the image was created - based on EXIF metadata.makeThe make of camera which took the photo - based on EXIF metadata.modelThe 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.
shortNameInternal ID.longNameDisplayed to the user.displayOrderWhen rendering a form in HTML, this determines the order they are presented in.
Licences
shortNameInternal ID.longNameDisplayed to the user.urlFor 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.
tagscontains:tagIDa unique IDtagTextthe displayed text
tag_mapcontains:mapIDa unique IDtagIDthe ID of a tagbenchIDthe 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.
- OpenBenches data are made available under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
- The code powering the website is MIT.
- All photos uploaded by users are CC BY-SA 4.0.
- Benches from Bath are OGL and Powered by Bath: Hacked.
- Logo template by Creative Mania CC BY.
- Panoramic Visualiser by Pannellum MIT.
- JavaScript EXIF reader & image preview by JavaScript Load Image (MIT).
- Login services provided by Auth0.com's PHP library MIT.
- CSS based on PicniCSS MIT (chosen mostly because we like picnic benches!)
- Animated OCR icon by Loading.io CC BY.
- Comments by Commentics GPL v3
- Starfield Image by uncertaintysheep CC BY-SA 2.0
- See https://openbenches.org/colophon for more
And thanks to the many contributors who have improved this codebase.
Owner
- Name: OpenBenches
- Login: openbenches
- Kind: organization
- Website: https://openbenches.org
- Repositories: 3
- Profile: https://github.com/openbenches
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
Top Committers
| Name | 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 |
Committer Domains (Top 20 + Academic)
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
Pull Request Labels
Dependencies
- auth0/auth0-php ^8.1
- guzzlehttp/guzzle ^7.4
- nojimage/twitter-text-php ^3.0
- 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