https://github.com/matt1/gopher-browser
A browser for the Gopher protocol, with native Gopher-over-TLS and Markdown support.
https://github.com/matt1/gopher-browser
gopher-client gopher-protocol rfc-1436 rfc1436
Last synced: 3 days ago
JSON representation
A browser for the Gopher protocol, with native Gopher-over-TLS and Markdown support.
- Host: GitHub
- URL: https://github.com/matt1/gopher-browser
- Owner: matt1
- Created: 2021-03-25T11:20:49.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-03-31T19:13:42.000Z (about 5 years ago)
- Last Synced: 2025-10-31T08:01:28.695Z (8 months ago)
- Topics: gopher-client, gopher-protocol, rfc-1436, rfc1436
- Language: TypeScript
- Homepage:
- Size: 7.05 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Gopher Browser
==============
A very-experimental browser for Gopher protocol with basic support for Gopher+,
Gopher-over-TLS, and Markdown. Although largely usable, it is still very-much
at an early-alpha level of quality & reliability and so is not ready for active
use by users. There is also significant refactoring that can be done to improve
the code readability & extensibility.
The general architecture is that there is a small Deno HTTP server that runs as
a backend offering a basic API for interacting with Gopher servers. There is
then a React-based GUI app that communicates with this backend and renders the
output. The React GUI can be run directly in a browser for local development, or
run in a "webview" for a native-style desktop experience:
- `browser.ts` Sets up a normal HTTP server for local testing of the GUI.
- `webview.ts` Sets up a `webview` and displays the GUI through that.
- `/gui_server.ts` Handles requests from the `webview` (...or browser...) for rendering the GUI.
- `/gopher.ts` Handles interactions with the Gopher protocol client.
- `/gui` Contains a React-based web app that is rendered inside a `webview`.
The bulk of the logic and complexity is within this React GUI. Yes - the irony
of a javascript-heavy React webapp that acts as a Gopher browser is recognised.
## Development workflow
During development the 'best' way to work is to run the React GUI direclty in
the browser, and then also run the GUI-server simultanesouly to serve API calls.
This will allow the GUI to make requests to the API endpoints in the GUI-server
while still allowing for a fast edit-reload cycle for the GUI. It also has the
benefit of doing real Gopher requests (from the GUI-server) and you can use all
the usual browser-based dev tools (e.g. React extension etc).
```bash
# Run the GUI-server to handle API calls:
deno run -Ar browser.ts --watch
# Simultaneously run the GUI which can be viewed in a browser:
cd gui
npm start
```
Eventually, we should provide a way to mock out the GUI-server entirely.
## GUI
This was created with Create React App - see README in `/gui` for more details.
To run locally in a browser during development
```
cd gui
npm start
```
To actually have some files to be served from the built-in HTTP server,
you need to run `npm run build` to generate the assets in the `gui/build` dir.