{"id":43546307,"url":"https://github.com/clear-code/sharetary","last_synced_at":"2026-02-03T18:44:36.243Z","repository":{"id":31950734,"uuid":"35520559","full_name":"clear-code/sharetary","owner":"clear-code","description":"Archives any topic about a technical conference and provides a cross-origin timeline view in real time.","archived":false,"fork":false,"pushed_at":"2015-06-27T08:10:21.000Z","size":2348,"stargazers_count":8,"open_issues_count":14,"forks_count":8,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-09-24T00:54:38.194Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clear-code.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-13T01:03:35.000Z","updated_at":"2020-08-06T05:33:52.000Z","dependencies_parsed_at":"2022-08-24T10:30:55.301Z","dependency_job_id":null,"html_url":"https://github.com/clear-code/sharetary","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/clear-code/sharetary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clear-code%2Fsharetary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clear-code%2Fsharetary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clear-code%2Fsharetary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clear-code%2Fsharetary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clear-code","download_url":"https://codeload.github.com/clear-code/sharetary/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clear-code%2Fsharetary/sbom","scorecard":{"id":285811,"data":{"date":"2025-08-11","repo":{"name":"github.com/clear-code/sharetary","commit":"986f2505ee641ce79ad24bb8561a8b7382e74d5a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 2/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/NuGet.exe:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T17:12:37.655Z","repository_id":31950734,"created_at":"2025-08-17T17:12:37.655Z","updated_at":"2025-08-17T17:12:37.655Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29053305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:43:47.601Z","status":"ssl_error","status_checked_at":"2026-02-03T15:43:46.709Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-03T18:44:35.653Z","updated_at":"2026-02-03T18:44:36.236Z","avatar_url":"https://github.com/clear-code.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sharetary\n\nSharetary is a cross-origin events viewer.\nThe name is neoterized from two terms \"share\" and \"secretary\".\n\nThis provides ability to watch various \"events\" stored into a Groonga server, in real time or analytically by two different views:\n\n * Timeline view - You can watch events in real time, like Twitter or something. Newly added events will appear on the top of the view automatically.\n * Archive view - You can watch events statically, with their relations. Related events are visible as a thread.\n\n\n## How to start the server?\n\n    $ sudo npm install -g sharetary\n    $ sharetary-server\n\nYou must install Node.js and npm before installation.\nFor example, on Ubuntu 14.04LTS:\n\n    $ sudo apt-get install nodejs nodejs-legacy npm\n\nSee `sharetary-server --help` for more details.\n\n\n## How to crawl events?\n\nSharetary doesn't provide ability to crawl events from sources.\nYou need to crawl and load events by something other way.\n\nIn other words, you can use any data source for Sharetary, if you load them to the database in a common format described at this section.\n\nSharetary uses [Groonga](http://groonga.org) or [Droonga](http://droonga.org/) as its backend.\nYou simply have to define some tables with required columns (and load data to them):\n\n\n### `Events` (`TABLE_HASH_KEY` or `TABLE_PAT_KEY`)\n\n * `_key` (any type):\n   Something to identify each event uniquely.\n   For example, URI string, hash string, or others.\n * `type` (`Text` or `ShortText`):\n   Indicates the type of each event.\n   For example, an event indicating a \"push\" activity on the GitHub will have the string `push` as its `type`.\n * `class` (`Text` or `ShortText`):\n   Indicates the magnitude of each event.\n   Three possible values: `important`, `major`, `normal`, and `minor`.\n   `important` and `major` events will be highlighted in the view.\n * `tags` (vector of `Tags`):\n   Indicates tags associated to events.\n   For example, events from GitHub activities will belong to any repository, so their repository name is suitable as a tag.\n * `title` (`Text` or `ShortText`):\n   Short description of each event.\n   For example, an event indicating a \"push\" activity on the GitHub will have its `title` like: \"Pushed N commits to the repository\".\n * `description` (`Text` or `ShortText`):\n   The main description of each event.\n   For example, an event indicating a \"commit\" activity on the GitHub will have its commit message as its `description`.\n * `extra_description` (`Text` or `ShortText`):\n   The extra description of each event.\n   It won't be rendered in the view, but will be shown in the tooltip of events.\n   For example, an event indicating a \"commit\" activity on the GitHub will have its \"diff\" as its `extra_description`.\n * `uri` (`Text` or `ShortText`):\n   The related URI of each event.\n * `source_icon` (`Text` or `ShortText`):\n   URI of the icon for the source of the event.\n   For example, events from Github activities will have favicon's URI as its `soruce_icon`.\n * `reply_uri` (`Text` or `ShortText`):\n   The URI of an UI to post any reply for each event.\n   For example, an event indicating a \"commit\" activity on the GitHub will have link to the comment form of the commit as its `reply_uri`.\n   If your crawler fetches posted comments from the UI also, then you'll see them as events related to the parent event.\n * `actor` (`Actors`):\n   Indicates the actor's name of each event.\n   For example, an events from GitHub activity will have the account id as its `actor`.\n * `timestamp` (`Time'):\n   The time when the event was triggered at.\n   Events are sorted by this field in the archive view.\n * `created_at` (`Time'):\n   The time when the record of the event was loaded to the database.\n   Events are sorted by this field in the timeline view.\n * `parent` (`Text` or `ShortText`):\n   The `_key` of another event.\n   For example, an event indicating a \"issue comment\" activity on the GitHub will have the `_key` of the \"issue opened\" event as its `parent`.\n\n### `Tags` (`TABLE_HASH_KEY` or `TABLE_PAT_KEY`)\n\n * `icon` (`Text` or `ShortText`):\n   URI of the icon for the tag.\n\n### `Actors` (`TABLE_HASH_KEY` or `TABLE_PAT_KEY`)\n\n * `uri` (`Text` or `ShortText`):\n   The related URI of the actor.\n * `icon` (`Text` or `ShortText`):\n   URI of the icon for the actor.\n * `class` (`Text` or `ShortText`):\n   Indicates the magnitude of the actor.\n   Two possible values: `major`, `normal`, and `minor`.\n   Events triggered by `minor` actors will be shown with small text and lighter color in the view.\n   For example, if you have events triggered by both students and teachers and you hope to see students' events mainly, then students are `major` and teachers are `minor`.\n\n\nSee [the example schema](sample/schema.grn) also.\n\nAny other column can be defined at each table table, as you like.\nMoreover, of course, any other table is also allowed in the database.\nSharetary simply ignores them.\n\n\n## Typical use case: watching users' activities on the GitHub\n\nThis section describes how to crawl GitHub activities by fluentd, on a Ubuntu 14.04 server.\n\n 1. [Install Groonga with the instruction](http://groonga.org/docs/install/ubuntu.html).\n    (If you have your existing Groonga or Droonga, you can skip this step.)\n 2. Install fluentd and td-agent.\n    \n    ~~~\n    $ sudo apt-get install ntp\n    $ sudo service ntp restart\n    $ curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sudo sh\n    $ sudo mkdir -p /var/spool/td-agent/buffer/\n    $ sudo chown -R td-agent:td-agent /var/spool/td-agent/\n    ~~~\n 3. Install required fluentd plugins.\n    \n    ~~~\n    $ sudo td-agent-gem install fluent-plugin-github-activities\n    $ sudo td-agent-gem install fluent-plugin-record-reformer\n    $ sudo td-agent-gem install fluent-plugin-filter_typecast\n    ~~~\n 4. Install fluent-plugin-groonga. It requires some extra packages.\n    \n    ~~~\n    $ sudo apt-get install ruby ruby-dev build-essential\n    $ sudo td-agent-gem install fluent-plugin-groonga\n    ~~~\n 5. Configure td-agent.\n    \n    ~~~\n    $ sudo vi /etc/td-agent/td-agent.conf\n    ~~~\n    \n    See also [the example configuration to crawl and load GitHub activities](sample/fluent-plugin-github-activities.conf).\n    It includes rules to convert fetched GitHub activities to Sharetary events.\n\n    It is recommended to put your GitHub access token in `td-agent.conf`.\n    You can obtain it [here](https://github.com/settings/tokens).\n 6. Start td-agent.\n    \n    ~~~\n    $ sudo service td-agent start\n    ~~~\n\n## How to customize exporting columns in CSV?\n\nBy default the link \"CSV\" in \"Export\" menu exports only some major columns.\nIf you need, you can customize columns of exported records.\nSteps to change exporting columns are:\n\n 1. Copy the link location of the menu item.\n 2. Paste it to the location bar of your browser.\n 3. Add new query parameter `columns` and load it.\n    * Any columns of the `Events` table can be specified, like: `...\u0026columns=title`\n    * Multiple columns can be available as comma-separated list like: `...\u0026columns=title,actor`\n    * Special column name `*` (or `all`) is available to export all columns of the `Events` table.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclear-code%2Fsharetary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclear-code%2Fsharetary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclear-code%2Fsharetary/lists"}