README.org

v1.5.5
skunky-art/README.org rendered · source · history · blame · raw

101 lines · 3757 bytes

  1#+title: skunkyart
  2
  3* fork
  4fork of SkunkyArt (https://git.macaw.me/skunky/SkunkyArt). upstream hasn't
  5updated in over a year, has open bugs, and its listed instances are dead links.
  6this fork keeps it maintained.
  7
  8* what
  9skunkyart. alternative frontend for deviantart. works with no javascript.
 10one instance, one config file, no database.
 11
 12instances: [[file:INSTANCES.md][INSTANCES.md]]
 13
 14pages:
 15
 16- ~/~ search box, links to daily deviations and about
 17- ~/dd~ daily deviations; ~?atom=true~ for the feed
 18- ~/search?q=<q>&type=all|tag|r~ search art, tags, or groups
 19- ~/post/<author>/<name-id>~ one deviation, with a link to its comments
 20- ~/group_user?q=<name>&type=about|gallery|favourites~ a user or group;
 21  ~&atom=true~ on a gallery for its feed
 22- ~/api/...~ json, documented in [[file:API.md][API.md]]
 23
 24[[file:REDIRECTS.md][REDIRECTS.md]] maps deviantart.com urls onto these, for browser redirector
 25extensions such as libredirect.
 26
 27deviantart blocks egress ips that ask too often, so the instance keeps its
 28upstream traffic down: api responses are cached in memory and coalesced, media
 29and avatars are cached on disk, comments load on request, pages carry
 30cache-control headers, crawlers get a robots.txt, and each client has a
 31request budget. all of it is on by default and tunable in [[file:SETUP.md][SETUP.md]].
 32
 33* build
 34build with the embed tag to embed presets in the binary. skip the tag if you'll
 35modify templates. add ~-ldflags "-w -s"~ (~gccgo: gccgoflags~) to shrink the output:
 36
 37#+begin_src sh
 38go build -tags embed -ldflags "-w -s"
 39#+end_src
 40
 41that build reports its version as dev. stamp one in with ~-X
 42main.version=<version>~, as the release workflow does from the git tag. or let
 43the makefile do both:
 44
 45#+begin_src sh
 46make build   # embed tag, version from git describe
 47make test
 48make lint
 49make dist    # tarballs for linux, darwin and freebsd under dist/
 50#+end_src
 51
 52release tags also get those tarballs attached on the github mirror's release
 53page.
 54
 55* run
 56without docker: put the binary (and ~static/~, unless built with the embed
 57tag) in a directory with a ~config.json~, then
 58
 59#+begin_src sh
 60./skunkyart -c config.json
 61#+end_src
 62
 63~config.json~ is optional; without it the built-in defaults listen on
 64127.0.0.1:3003 with the caches on. service files for systemd and openrc are in
 65[[file:services/][services/]]. put a reverse proxy with tls in front; SETUP.md has the nginx
 66stanza.
 67
 68* where things live
 69the repository, issues and merge requests are on gitbay
 70(https://gitbay.org/krz/skunky-art). github.com/krazywarez/skunky-art is a
 71push mirror that exists to build the container image; do not open issues
 72there.
 73
 74* docker
 75multi-arch images (~linux/amd64~, ~linux/arm64~) publish to ghcr on every release
 76tag, built by the github mirror's workflow:
 77
 78#+begin_src sh
 79docker pull ghcr.io/krazywarez/skunky-art:latest
 80#+end_src
 81
 82each release is tagged 1.3.3, 1.3, 1, and latest. pin an exact version for
 83reproducible upgrades. [[file:compose.example.yaml][compose.example.yaml]] uses the image;
 84[[file:compose.vpn_example.yml][compose.vpn_example.yml]] adds an optional vpn egress sidecar.
 85
 86* config
 87sample config in [[file:config.example.json][config.example.json]]. custom config with ~--config~. directive
 88details in [[file:SETUP.md][SETUP.md]].
 89
 90* develop
 91#+begin_src sh
 92go test ./... -race
 93go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.13.2 run ./...
 94#+end_src
 95
 96ci runs both on every push. the roadmap is [[file:ROADMAP.md][ROADMAP.md]].
 97
 98* instances
 99instances are checked daily by ci (~scripts/check-instances.py~); a dead one
100turns the build red. add yours by merge request to [[file:instances.json][instances.json]] and [[file:INSTANCES.md][INSTANCES.md]] (or use
101~--add-instance~ to write both), or open an issue.