▘▖▌▘▌▘▌▌▌▖▘▘▌▖▖▘▘▘▌
╽│││╽┃╿╽╽╿┃││╽╿╽

40796c19-532f-4e42-9c39-74c9b15f572a

amalgam of personalities animating a combat frame


webbed ring, as it were

fringe is a webring server written in rust that generates and serves a basic homepage

it's compiled with nix using makeRustPackage and outputs statically linked linux-musl binaries

the readme from codeberg is below bc i aint rewriting the same information lol


4ring

"fourring" /foɹɪŋ/ "fringe" /fɹɪndʒ/

a fairly simple webring server that automatically generates a homepage

inspired by this one computerphile video i saw and erin's webring because i think it's neat

https://youtu.be/7GBlCinu9yg

https://git.ewin.moe/erin/webring

generated homepage from 4ring

usage


echo "slug: url.example" > list.yaml
echo "othersite: other.example" >> list.yaml
./fringe    # webring + simple homepage (see configuration)
./fringe -I # just the webring

linking

configuration

if conf is specified, all other cli args will be ignored

if html is specified, all other homepage options will be ignored.

cli args


server options:
-c --conf     configuration file 
-p --port     port to listen on                    [`1312`]
-l --list     site list to use                     [`list.yaml`]
-I --no-index disable page generation  and serving [false]

homepage options:
-H --html     html file to populate with member list
-C --css      css file to use for `index.html`
-n --name     name of the webring                    ["fringe"]
-d --desc     description of the webring             ["welcome to the fringe!"]
-u --url      url of the webring
-T --no-time  disable display of last update time    [false]

config file

the same options as above in yaml

minimal config file, omitting optional arguments, identitcal to running ./fringe:


port: 1312
list: list.yaml
no_index: false

name: fringe
desc: welcome to the fringe
no_time: false

example config file:


port: 1965
list: sattelites.yaml
no_index: false

# html option omitted in favor of further config below
name: low earth orbit
desc: imagine if they made gemini orbits, but on http...
css: capsule.css
url: https://ring.url
no_time: true

generated pages

by default, 4ring generates a basic homepage listing the name, description, members, and last update time of the ring

styling the generated homepage

to style the generated html, specify a css file that provides values for the following variables, styles the following classes, specific elements, and/or whatever you want


:root {
  --bg-color
  --mg-color
  --fg-color
  --tx-color
  --ac-color
  --padding
  --margin
  --text-size
  --font
}


#site-list {}
.site-item {}


body {}
header {}
h1 {}
h2 {}
hr {}
ul {}
li {}
p {}
a {}
small {}
footer {}

populating an existing homepage

to have 4ring populate an existing html file, specify a file with the string %member_list% somewhere in it. 4ring will naively replace any occurances with a list of all sites in the ring, following this format


<ul id="site-list">
  <li class="site-item">{slug}: <a href="{url}">{url}</a></li>
  ...
</ul>

yippee

thanks stella for helping me learn rust