Skip to content

4uffin/fumble-around

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note

This is a public mirror of the original repository, which can be found here.

Fumble Around

A minimal discovery engine for Geminispace. Users submit interesting capsule pages, and visitors are served random pages to explore — weighted toward more recently added content.

How It Works

Fumble Around is a Gemini protocol server. Visitors hit a single link and land on a random gemtext page from the catalog, with a "Fumble some more..." link at the top to immediately jump to the next discovery. Anyone can grow the catalog by submitting a gemini:// URL.

Pages are weighted so that recently submitted capsules surface more often, while older ones remain reachable. The weighting uses a power-curve distribution: the server picks a random position biased toward the high (recent) end of the ID range, with some fallback logic to avoid trapping users in a narrow slice of the catalog.

Usage

fumble-around [flags]

Flags:
  -addr string         Address to listen on (default ":59650")
  -hostname string     Hostname the service will serve on (default "fumble-around.localhost")
  -store-dir string    Path to storage directory (default: temp dir, cleaned up on exit)

Each flag can also be set via environment variable:

Flag Env var
-addr FUMBLE_AROUND_ADDR
-hostname FUMBLE_AROUND_HOSTNAME
-store-dir FUMBLE_AROUND_STORE_DIR

TLS certificates are managed automatically under <store-dir>/certs/. The SQLite database lives at <store-dir>/page.sqlite.

Development

The project uses Nix flakes. Entering the dev shell sets up the environment and loads a set of test capsule URLs automatically:

nix develop

To run the server manually:

go run ./cmd/fumble-around

To load the bundled test data into an existing store:

go run ./cmd/load-test-data

To run the tests:

go test ./...

Project Layout

cmd/
  fumble-around/     Main server binary
  load-test-data/    Dev tool: seeds the store with sample URLs
gmi/                 Gemini server, request handlers, and gemtext templates
page/                Page domain types, URL validation, and SQLite store

Dependencies

License

WTFPL

About

Public mirror of a Gemini Protocol content discovery engine called ‘fumble around’.

Topics

Resources

License

Stars

Watchers

Forks

Contributors