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└──────────────────────────────────────────────────────────────┘