{"id":13929430,"url":"https://github.com/hypothesis/bouncer","last_synced_at":"2025-08-15T04:38:25.825Z","repository":{"id":4064742,"uuid":"51847923","full_name":"hypothesis/bouncer","owner":"hypothesis","description":"The \"hyp.is\" service that takes a user to a URL with Hypothesis activated","archived":false,"fork":false,"pushed_at":"2024-04-02T07:35:37.000Z","size":1843,"stargazers_count":47,"open_issues_count":8,"forks_count":26,"subscribers_count":15,"default_branch":"main","last_synced_at":"2024-04-02T12:17:45.139Z","etag":null,"topics":["annotation","hypothesis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hypothesis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-02-16T15:49:49.000Z","updated_at":"2024-04-15T10:45:48.954Z","dependencies_parsed_at":"2023-10-03T16:59:15.016Z","dependency_job_id":"7b4e8b96-a113-49da-b164-f54fda94a761","html_url":"https://github.com/hypothesis/bouncer","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fbouncer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fbouncer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fbouncer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypothesis%2Fbouncer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hypothesis","download_url":"https://codeload.github.com/hypothesis/bouncer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226597704,"owners_count":17657196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["annotation","hypothesis"],"created_at":"2024-08-07T18:02:20.619Z","updated_at":"2024-11-26T18:30:44.800Z","avatar_url":"https://github.com/hypothesis.png","language":"Python","funding_links":[],"categories":["others"],"sub_categories":[],"readme":"[![Build Status](https://github.com/hypothesis/bouncer/workflows/Continuous%20integration/badge.svg?branch=main)](https://github.com/hypothesis/bouncer/actions?query=branch%3Amain)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\nHypothesis Direct-Link Bouncer Service\n======================================\n\nInstalling bouncer in a development environment\n-----------------------------------------------\n\n### You will need\n\n* [Git](https://git-scm.com/)\n\n* [Node](https://nodejs.org/) and npm.\n  On Linux you should follow\n  [nodejs.org's instructions for installing node](https://nodejs.org/en/download/package-manager/)\n  because the version of node in the standard Ubuntu package repositories is\n  too old.\n  On macOS you should use [Homebrew](https://brew.sh/) to install node.\n\n* [pyenv](https://github.com/pyenv/pyenv)\n  Follow the instructions in the pyenv README to install it.\n  The Homebrew method works best on macOS.\n\n### Clone the Git repo\n\n    git clone https://github.com/hypothesis/bouncer.git\n\nThis will download the code into an `bouncer` directory in your current working\ndirectory. You need to be in the `bouncer` directory from the remainder of the\ninstallation process:\n\n    cd bouncer\n\n### Start the development server\n\n    make dev\n\nThe first time you run `make dev` it might take a while to start because it'll\nneed to install the application dependencies and build the assets.\n\nThis will start the server on port 8000 (http://localhost:8000), reload the\napplication whenever changes are made to the source code, and restart it should\nit crash for some reason.\n\n**That's it!** You’ve finished setting up your bouncer development environment. Run\n`make help` to see all the commands that're available for running the tests,\nlinting, code formatting, etc.\n\nConfiguration\n-------------\n\nYou can set various environment variables to configure bouncer:\n\n\u003cdl\u003e\n\u003cdt\u003eCHROME_EXTENSION_ID\u003c/dt\u003e\n\u003cdd\u003eThe ID of the Hypothesis Chrome extension that bouncer will communicate with\n(default: the ID of the \u003ca href=\"https://chrome.google.com/webstore/detail/hypothesis-web-pdf-annota/bjfhmglciegochdpefhhlphglcehbmek\" rel=\"nofollow\"\u003eofficial Hypothesis Chrome extension\u003c/a\u003e)\u003c/dd\u003e\n\n\u003cdt\u003eDEBUG\u003c/dt\u003e\n\u003cdd\u003eIf \u003ccode\u003eDEBUG\u003c/code\u003e is set (to any value) then tracebacks will be printed to the\nterminal for any unexpected Python exceptions. If there is no \u003ccode\u003eDEBUG\u003c/code\u003e\nvariable set in the environment then unexpected Python exceptions will be\nreported to Sentry and a generic error page shown to the user.\u003c/dd\u003e\n\n\u003cdt\u003eELASTICSEARCH_URL\u003c/dt\u003e\n\u003cdd\u003eThe url (host and port) of the Elasticsearch server that bouncer will read\nannotations from (default: \u003ca href=\"http://localhost:9200\" rel=\"nofollow\"\u003ehttp://localhost:9200\u003c/a\u003e)\u003c/dd\u003e\n\n\u003cdt\u003eELASTICSEARCH_INDEX\u003c/dt\u003e\n\u003cdd\u003eThe name of the Elasticsearch index that bouncer will read annotations\nfrom (default: hypothesis)\u003c/dd\u003e\n\n\u003cdt\u003eHYPOTHESIS_AUTHORITY\u003c/dt\u003e\n\u003cdd\u003eThe domain name of the Hypothesis service's first party authority.\nThis is usually the same as the domain name of the Hypothesis service\n(default: localhost).\u003c/dd\u003e\n\n\u003cdt\u003eHYPOTHESIS_URL\u003c/dt\u003e\n\u003cdd\u003eThe URL of the Hypothesis front page that requests to bouncer's front page\nwill be redirected to (default: \u003ca href=\"https://hypothes.is\" rel=\"nofollow\"\u003ehttps://hypothes.is\u003c/a\u003e)\u003c/dd\u003e\n\n\u003cdt\u003eSENTRY_DSN\u003c/dt\u003e\n\u003cdd\u003eThe DSN (Data Source Name) that bouncer will use to report crashes to\n\u003ca href=\"https://getsentry.com/\" rel=\"nofollow\"\u003eSentry\u003c/a\u003e\u003c/dd\u003e\n\n\u003cdt\u003eVIA_BASE_URL\u003c/dt\u003e\n\u003cdd\u003eThe base URL of the Via service that bouncer will redirect users to if they\ndon't have the Hypothesis Chrome extension installed\n(default: \u003ca href=\"https://via.hypothes.is\" rel=\"nofollow\"\u003ehttps://via.hypothes.is\u003c/a\u003e)\u003c/dd\u003e\n\u003c/dl\u003e\n\nRoute Syntax/API\n----------------\n\n### Share Annotations on Page/URL (`/go`)\n\nGo to a specified URL and display annotations there. Optionally filter which\nannotations are displayed.\n\nQuerystring parameters:\n\n* `url` (required): URL of target page/document\n* `group` (optional): group ID. Show annotations within a specified group.\n* `q` (optional): Search query. Filter annotations at URL to those that match\n  this search query.\n\n### Share an Annotation (`/{id}` or `/{id}/{url}`)\n\nGo to an individual annotation, where `id` is the annotation's unique ID.\n\nOptional `url` path parameter: URL of the annotation's target document.\nThis is intended to enhance the readability of shared annotation URLs and\nis functionally identical to the `/{id}` route.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypothesis%2Fbouncer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhypothesis%2Fbouncer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypothesis%2Fbouncer/lists"}