john

john / Feed Me

Last active 5 months ago

Like 0

GitHub-powered feed aggregator with tinyfeed

feed.yml Raw
1name: Feed me
2
3on:
4 push:
5 branches:
6 - main
7 schedule:
8 - cron: '30 */4 * * *'
9 workflow_dispatch:
10
11jobs:
12 feed-me:
13 runs-on: ubuntu-latest
14 permissions:
15 contents: write
16
17 steps:
18 - name: Check out repository
19 uses: actions/checkout@v4
20
21 - name: Set up Go
22 uses: actions/setup-go@v5
23 with:
24 go-version: '1.23'
25 cache: false
26
27 - name: Go Cache
28 uses: actions/cache@v4
29 with:
30 path: |
31 ~/.cache/go-build
32 ~/go/pkg/mod
33 key: ${{ runner.os }}-go
34
35 - name: Install tinyfeed
36 run: go install github.com/TheBigRoomXXL/tinyfeed@latest
37
38 - name: Fetch feeds
39 run: |
40 tinyfeed --input feeds.txt \
41 --name "Feed Me" \
42 --description "What's on the menu today?" \
43 --stylesheet "https://res.jbowdre.lol/css/tinyfeed-catppuccin-mocha.css" \
44 --output public/index.html
45
46 - name: Deploy to GitHub Pages
47 uses: peaceiris/actions-gh-pages@v4
48 with:
49 github_token: ${{ secrets.GITHUB_TOKEN }}
50 publish_dir: ./public
51 publish_branch: gh-pages
52 user_name: 'github-actions[bot]'
53 user_email: 'github-actions[bot]@users.noreply.github.com'
54 cname: feeds.jbowdre.lol
55
tinyfeed-catppuccin-mocha.css Raw
1:root {
2 /* Catppuccin Mocha palette */
3 --base: #1e1e2e;
4 --mantle: #181825;
5 --crust: #11111b;
6 --text: #cdd6f4;
7 --subtext1: #bac2de;
8 --subtext0: #a6adc8;
9 --surface2: #585b70;
10 --surface1: #45475a;
11 --surface0: #313244;
12 --overlay0: #6c7086;
13 --blue: #89b4fa;
14 --lavender: #b4befe;
15 --sapphire: #74c7ec;
16 --sky: #89dceb;
17 --pink: #f5c2e7;
18 --mauve: #cba6f7;
19}
20
21body {
22 background-color: var(--base);
23 color: var(--text);
24 font-family: system-ui, -apple-system, sans-serif;
25 line-height: 1.6;
26 max-width: 800px;
27 margin: 0 auto;
28 padding: 2rem 1rem;
29}
30
31h1 {
32 color: var(--mauve);
33 padding-bottom: 0.5rem;
34}
35
36h2,
37h3,
38h4,
39h5,
40h6 {
41 color: var(--lavender);
42}
43
44a {
45 color: var(--blue);
46 text-decoration: none;
47 transition: color 0.2s ease;
48}
49
50a:hover {
51 color: var(--sky);
52 text-decoration: underline;
53}
54
55/* Feed list styling */
56ol {
57 list-style: none;
58 padding: 0;
59}
60
61li {
62 margin-bottom: 1rem;
63 padding: 0.5rem;
64 border-radius: 4px;
65 background-color: var(--surface0);
66 transition: background-color 0.2s ease;
67}
68
69li:hover {
70 background-color: var(--surface1);
71}
72
73/* Date styling */
74time {
75 color: var(--subtext0);
76 font-size: 0.9rem;
77}
78
79/* Source domain styling */
80a[href^="http"] {
81 color: var(--pink);
82}
83
84/* Feed aggregation section */
85p:last-of-type {
86 margin-top: 2rem;
87 padding-top: 1rem;
88 border-top: 2px solid var(--surface1);
89 color: var(--subtext1);
90}
91
92/* Responsive adjustments */
93@media (max-width: 600px) {
94 body {
95 padding: 1rem 0.5rem;
96 }
97
98 li {
99 padding: 0.25rem;
100 }
101}