krz/michelangelo

clone: git clone https://gitbay.org/krz/michelangelo.git

main: README.nfo · raw

 1┌──────────────────────────────────────────────────────────────┐
 2│  M I C H E L A N G E L O                   [ KRZ ]   krz.sh  │
 3└──────────────────────────────────────────────────────────────┘
 4
 5WHAT
 6  self-hosted tumblr media client, written in go. shows photos and
 7  videos from your dashboard in a masonry grid. no ads, no tracking,
 8  no npm.
 9
10DOES
11  - css masonry grid, variable height, packed tight
12  - infinite scroll via IntersectionObserver
13  - per-blog grid view (/blog/<name>)
14  - tag search (/search?q=<tag>)
15  - like and reblog from the lightbox
16  - dark/light via prefers-color-scheme
17  - go stdlib only, no external runtime deps
18
19SETUP
20  1. create a tumblr app at https://www.tumblr.com/oauth/apps.
21     callback url http://localhost:8080/auth/callback (or your domain).
22
23  2. configure:
24
25         export CONSUMER_KEY="your-consumer-key"
26         export CONSUMER_SECRET="your-consumer-secret"
27         export PORT=8080   # optional, defaults to 8080
28
29  3. build and run:
30
31         go build -o michelangelo .
32         ./michelangelo
33
34     open http://localhost:8080. you'll be sent to tumblr to authorize.
35
36STRUCTURE
37  main.go          http router, oauth flow, api proxy
38  tumblr.go        tumblr api client (oauth 1.0a, no deps)
39  templates/       layout.html, the html shell
40  static/          app.css (grid, themes), app.js (scroll, lightbox)
41
42NOTES
43  - oauth tokens live in cookies. clear them or hit /logout to
44    re-authenticate.
45  - like/reblog use the tumblr v1 api; reblogging to your own blog
46    needs your blog name detected on first auth.
47  - tag search uses /tagged, one batch, no pagination.
48
49┌──────────────────────────────────────────────────────────────┐
50│  krz.sh                                                      │
51└──────────────────────────────────────────────────────────────┘