{"id":32651482,"url":"https://github.com/matt1/gopher-browser","last_synced_at":"2026-06-23T20:32:21.582Z","repository":{"id":140075917,"uuid":"351409347","full_name":"matt1/gopher-browser","owner":"matt1","description":"A browser for the Gopher protocol, with native Gopher-over-TLS and Markdown support.","archived":false,"fork":false,"pushed_at":"2021-03-31T19:13:42.000Z","size":7395,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-31T08:01:28.695Z","etag":null,"topics":["gopher-client","gopher-protocol","rfc-1436","rfc1436"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/matt1.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-03-25T11:20:49.000Z","updated_at":"2024-09-02T17:56:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"c127a69c-351a-4d82-b950-dd49aa9809a7","html_url":"https://github.com/matt1/gopher-browser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matt1/gopher-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt1%2Fgopher-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt1%2Fgopher-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt1%2Fgopher-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt1%2Fgopher-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matt1","download_url":"https://codeload.github.com/matt1/gopher-browser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt1%2Fgopher-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34706579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["gopher-client","gopher-protocol","rfc-1436","rfc1436"],"created_at":"2025-10-31T07:58:59.446Z","updated_at":"2026-06-23T20:32:21.577Z","avatar_url":"https://github.com/matt1.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Gopher Browser\n==============\n\nA very-experimental browser for Gopher protocol with basic support for Gopher+,\nGopher-over-TLS, and Markdown. Although largely usable, it is still very-much\nat an early-alpha level of quality \u0026 reliability and so is not ready for active\nuse by users. There is also significant refactoring that can be done to improve\nthe code readability \u0026 extensibility.\n\nThe general architecture is that there is a small Deno HTTP server that runs as\na backend offering a basic API for interacting with Gopher servers. There is\nthen a React-based GUI app that communicates with this backend and renders the\noutput. The React GUI can be run directly in a browser for local development, or\nrun in a \"webview\" for a native-style desktop experience:\n\n- `browser.ts` Sets up a normal HTTP server for local testing of the GUI.\n- `webview.ts` Sets up a `webview` and displays the GUI through that.\n- `/gui_server.ts` Handles requests from the `webview` (...or browser...) for rendering the GUI.\n- `/gopher.ts` Handles interactions with the Gopher protocol client.\n- `/gui` Contains a React-based web app that is rendered inside a `webview`.\n\nThe bulk of the logic and complexity is within this React GUI. Yes - the irony\nof a javascript-heavy React webapp that acts as a Gopher browser is recognised.\n\n## Development workflow\n\nDuring development the 'best' way to work is to run the React GUI direclty in\nthe browser, and then also run the GUI-server simultanesouly to serve API calls.\n\nThis will allow the GUI to make requests to the API endpoints in the GUI-server\nwhile still allowing for a fast edit-reload cycle for the GUI. It also has the\nbenefit of doing real Gopher requests (from the GUI-server) and you can use all\nthe usual browser-based dev tools (e.g. React extension etc).\n\n```bash\n# Run the GUI-server to handle API calls:\ndeno run -Ar browser.ts --watch\n\n# Simultaneously run the GUI which can be viewed in a browser:\ncd gui\nnpm start\n```\n\nEventually, we should provide a way to mock out the GUI-server entirely.\n\n## GUI\n\nThis was created with Create React App - see README in `/gui` for more details.\n\nTo run locally in a browser during development\n```\ncd gui\nnpm start\n```\n\nTo actually have some files to be served from the built-in HTTP server,\nyou need to run `npm run build` to generate the assets in the `gui/build` dir.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt1%2Fgopher-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatt1%2Fgopher-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt1%2Fgopher-browser/lists"}