···
1
1
+
---
2
2
+
BUNDLE_PATH: "vendor/bundle"
···
1
1
+
*~
2
2
+
_site/
3
3
+
Gemfile.lock
4
4
+
unsaved\ file*
5
5
+
vendor/
···
1
1
+
# Contributing
2
2
+
3
3
+
Contributions welcome! Please open a PR for simple/straightforward changes, or open an issue to discuss things before writing code.
4
4
+
5
5
+
## Building
6
6
+
7
7
+
I recommend using `toolbox` for local development, especially if you're on Endless OS or Fedora Silverblue. See [this blog post](https://cassidyjames.com/blog/github-pages-jekyll-fedora-silverblue/) for details on how to get set up.
8
8
+
9
9
+
Once you're set up, build and serve locally with:
10
10
+
11
11
+
```shell
12
12
+
bundle exec jekyll serve --host 0.0.0.0
13
13
+
```
14
14
+
15
15
+
The site should now be available at http://0.0.0.0:4000/ on your local machine, and your local machine's IP address on your network—great for testing on mobile OSes.
···
1
1
+
source 'https://rubygems.org'
2
2
+
gem 'github-pages', group: :jekyll_plugins
3
3
+
gem 'jekyll-sitemap', group: :jekyll_plugins
4
4
+
gem 'jekyll-redirect-from'
5
5
+
6
6
+
gem 'webrick', '~> 1.7'
···
1
1
+
title: ROOST Community Playground
2
2
+
description: A collection of community projects, experiments, and demos built on or from ROOST open source projects.
3
3
+
theme-color: "rgb(238, 238, 0)"
4
4
+
5
5
+
mastodon:
6
6
+
handle: "@roost@hachyderm.io"
7
7
+
url: "https://hachyderm.io/@roost"
8
8
+
bluesky:
9
9
+
handle: "@roost.tools"
10
10
+
url: "https://bsky.app/profile/roost.tools"
11
11
+
12
12
+
markdown: kramdown
13
13
+
kramdown:
14
14
+
syntax_highlighter: rouge
15
15
+
16
16
+
plugins:
17
17
+
- jekyll-feed
18
18
+
- jekyll-redirect-from
19
19
+
- jekyll-sitemap
···
1
1
+
---
2
2
+
layout: default
3
3
+
---
4
4
+
<!DOCTYPE html>
5
5
+
<html lang="en-us">
6
6
+
<head>
7
7
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
8
8
+
<meta charset="UTF-8">
9
9
+
<meta name="theme-color" content="{{ site.theme-color }}" />
10
10
+
11
11
+
<title>{% if page.title %}{{ page.title }} ⋅ {% endif %}{{ site.title }}</title>
12
12
+
<meta property="og:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" />
13
13
+
<meta property="og:site_name" content="{{ site.title }}" />
14
14
+
<meta itemprop="name" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" />
15
15
+
16
16
+
<meta name="description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
17
17
+
<meta property="og:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
18
18
+
<meta itemprop="description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
19
19
+
20
20
+
<link rel="me" href="{{ site.mastodon.url }}" />
21
21
+
<meta name="fediverse:creator" content="{{ site.mastodon.handle }}" />
22
22
+
23
23
+
<link rel="preconnect" href="https://fonts.googleapis.com">
24
24
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
25
25
+
<link href="https://fonts.googleapis.com/css2?family=Funnel+Display:wght@300..800&family=Funnel+Sans:ital,wght@0,300..800;1,300..800&display=swap" rel="stylesheet">
26
26
+
<link rel="stylesheet" type="text/css" media="all" href="style.css">
27
27
+
</head>
28
28
+
<body>
29
29
+
<header>
30
30
+
<nav>
31
31
+
<a href="https://roost.tools">← ROOST.tools main site</a>
32
32
+
<a href="https://github.com/roostorg/playground">Source Code</a>
33
33
+
</nav>
34
34
+
</header>
35
35
+
<main>
36
36
+
{{ content }}
37
37
+
</main>
38
38
+
</body>
39
39
+
</html>
40
40
+
···
1
1
-
<!DOCTYPE html>
2
2
-
<html lang="en-us">
3
3
-
<head>
4
4
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
5
5
-
<meta charset="UTF-8" />
6
6
-
<title>Playground · ROOST (Robust Open Online Safety Tools)</title>
7
7
-
<link rel="preconnect" href="https://fonts.googleapis.com">
8
8
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
9
-
<link href="https://fonts.googleapis.com/css2?family=Funnel+Display:wght@300..800&family=Funnel+Sans:ital,wght@0,300..800;1,300..800&display=swap" rel="stylesheet">
10
10
-
<style>
11
11
-
:root {
12
12
-
--roost-gray: rgb(187, 193, 190);
13
13
-
--roost-dark: hsl(80, 22%, 13%);
14
14
-
--roost-yellow: rgb(238, 238, 0);
15
15
-
--roost-peach: rgb(247, 187, 128);
16
16
-
--roost-muddy: rgb(229, 217, 136);
17
17
-
18
18
-
--bg: white;
19
19
-
--fg: var(--roost-dark);
20
20
-
--font-sans: "Funnel Sans", sans-serif;
21
21
-
--font-display: "Funnel Display", sans-serif;
22
22
-
--max-width: 800px;
23
23
-
24
24
-
background-color: var(--bg);
25
25
-
color: var(--fg);
26
26
-
color-scheme: light dark;
27
27
-
font-family: var(--font-sans);
28
28
-
font-optical-sizing: auto;
29
29
-
font-style: normal;
30
30
-
scroll-behavior: smooth;
31
31
-
text-wrap: balance;
32
32
-
}
33
33
-
34
34
-
@media (prefers-color-scheme: dark) {
35
35
-
:root {
36
36
-
--bg: var(--roost-dark);
37
37
-
--fg: rgba(255, 255, 255, 0.9);
38
38
-
}
39
39
-
}
40
40
-
41
41
-
*, *::before, *::after {
42
42
-
box-sizing: border-box;
43
43
-
}
44
44
-
45
45
-
html, body {
46
46
-
margin: 0;
47
47
-
}
48
48
-
49
49
-
@media (min-width: 320px) {
50
50
-
body {
51
51
-
font-size: 15px;
52
52
-
}
53
53
-
}
54
54
-
55
55
-
@media (min-width: 600px) {
56
56
-
body {
57
57
-
font-size: 18px;
58
58
-
}
59
59
-
}
60
60
-
61
61
-
header {
62
62
-
background-color: var(--roost-dark);
63
63
-
color: var(--roost-yellow);
64
64
-
padding-block: 1em;
65
65
-
}
66
66
-
67
67
-
header nav {
68
68
-
display: flex;
69
69
-
justify-content: space-between;
70
70
-
margin-inline: auto;
71
71
-
max-width: var(--max-width);
72
72
-
padding-inline: 1rem;
73
73
-
}
74
74
-
75
75
-
header nav a {
76
76
-
color: inherit;
77
77
-
}
78
78
-
79
79
-
main {
80
80
-
margin-inline: auto;
81
81
-
max-width: var(--max-width);
82
82
-
padding-inline: 1rem;
83
83
-
}
84
84
-
85
85
-
h1, h2, h3, h4, h5, h6 {
86
86
-
font-family: var(--font-display);
87
87
-
}
88
88
-
89
89
-
h1 {
90
90
-
margin-top: 2em;
91
91
-
}
92
92
-
93
93
-
h1 + p {
94
94
-
font-size: 1.2em;
95
95
-
line-height: 1.33;
96
96
-
}
97
97
-
98
98
-
ul#projects {
99
99
-
display: flex;
100
100
-
flex-wrap: wrap;
101
101
-
gap: 1em;
102
102
-
list-style: none;
103
103
-
margin-block-start: 3em;
104
104
-
padding: 0;
105
105
-
}
106
106
-
107
107
-
#projects a {
108
108
-
--project-color: var(--roost-yellow);
109
109
-
border: 2px dashed var(--project-color);
110
110
-
border-radius: 1em;
111
111
-
color: inherit;
112
112
-
display: block;
113
113
-
padding: 1em 1.5em;
114
114
-
text-decoration: none;
115
115
-
}
116
116
-
117
117
-
#projects li:nth-child(3n-1) a {
118
118
-
--project-color: var(--roost-peach);
119
119
-
}
120
120
-
121
121
-
#projects li:nth-child(3n) a {
122
122
-
--project-color: var(--roost-muddy);
123
123
-
}
124
124
-
125
125
-
#projects a:hover,
126
126
-
#projects a:focus {
127
127
-
background-color: color-mix(var(--project-color) 10%, transparent);
128
128
-
}
129
129
-
130
130
-
#projects h2 {
131
131
-
margin: 0 auto 0.5em;
132
132
-
padding: 0;
133
133
-
}
134
134
-
135
135
-
#projects p {
136
136
-
margin: 0 auto;
137
137
-
padding: 0;
138
138
-
}
139
139
-
</style>
140
140
-
</head>
141
141
-
<body>
142
142
-
<header>
143
143
-
<nav>
144
144
-
<a href="https://roost.tools">← ROOST.tools main site</a>
145
145
-
<a href="https://github.com/roostorg/playground">Source Code</a>
146
146
-
</nav>
147
147
-
</header>
148
148
-
<main>
149
149
-
<h1>ROOST Playground</h1>
150
150
-
<p>A collection of community projects, experiments, and demos built on or from ROOST open source projects.</p>
151
151
-
<p>Projects on this page are not developed or endorsed by ROOST.</p>
152
152
-
<ul id="projects">
153
153
-
<li>
154
154
-
<a href="#">
155
155
-
<h2>Project name</h2>
156
156
-
<p>Brief project description</p>
157
157
-
</a>
158
158
-
</li>
159
159
-
<li>
160
160
-
<a href="#">
161
161
-
<h2>Different project name</h2>
162
162
-
<p>Brief but slightly longer project description</p>
163
163
-
</a>
164
164
-
</li>
165
165
-
<li>
166
166
-
<a href="#">
167
167
-
<h2>Another project name</h2>
168
168
-
<p>Briefer project description</p>
169
169
-
</a>
170
170
-
</li>
171
171
-
<li>
172
172
-
<a href="#">
173
173
-
<h2>Project name</h2>
174
174
-
<p>Brief project description</p>
175
175
-
</a>
176
176
-
</li>
177
177
-
<li>
178
178
-
<a href="#">
179
179
-
<h2>Project name</h2>
180
180
-
<p>Brief project description</p>
181
181
-
</a>
182
182
-
</li>
183
183
-
<li>
184
184
-
<a href="#">
185
185
-
<h2>Project name</h2>
186
186
-
<p>Brief project description</p>
187
187
-
</a>
188
188
-
</li>
189
189
-
</ul>
190
190
-
</main>
191
191
-
</body>
192
192
-
</html>
1
1
+
---
2
2
+
layout: default
3
3
+
---
193
4
5
5
+
<h1>ROOST Playground</h1>
6
6
+
<p>A collection of community projects, experiments, and demos built on or from ROOST open source projects.</p>
7
7
+
<p>Projects on this page are not developed or endorsed by ROOST, and may not be intended for production use. Check each project’s documentation for details.</p>
8
8
+
<ul id="projects">
9
9
+
<li>
10
10
+
<a href="#">
11
11
+
<h2>Project name</h2>
12
12
+
<p>Brief project description</p>
13
13
+
</a>
14
14
+
</li>
15
15
+
<li>
16
16
+
<a href="#">
17
17
+
<h2>Different project name</h2>
18
18
+
<p>Brief but slightly longer project description</p>
19
19
+
</a>
20
20
+
</li>
21
21
+
<li>
22
22
+
<a href="#">
23
23
+
<h2>Another project name</h2>
24
24
+
<p>Briefer project description</p>
25
25
+
</a>
26
26
+
</li>
27
27
+
<li>
28
28
+
<a href="#">
29
29
+
<h2>Project name</h2>
30
30
+
<p>Brief project description</p>
31
31
+
</a>
32
32
+
</li>
33
33
+
<li>
34
34
+
<a href="#">
35
35
+
<h2>Project name</h2>
36
36
+
<p>Brief project description</p>
37
37
+
</a>
38
38
+
</li>
39
39
+
<li>
40
40
+
<a href="#">
41
41
+
<h2>Project name</h2>
42
42
+
<p>Brief project description</p>
43
43
+
</a>
44
44
+
</li>
45
45
+
</ul>
···
1
1
+
:root {
2
2
+
--roost-gray: rgb(187, 193, 190);
3
3
+
--roost-dark: hsl(80, 22%, 13%);
4
4
+
--roost-yellow: rgb(238, 238, 0);
5
5
+
--roost-peach: rgb(247, 187, 128);
6
6
+
--roost-muddy: rgb(229, 217, 136);
7
7
+
8
8
+
--bg: white;
9
9
+
--fg: var(--roost-dark);
10
10
+
--font-sans: "Funnel Sans", sans-serif;
11
11
+
--font-display: "Funnel Display", sans-serif;
12
12
+
--max-width: 800px;
13
13
+
14
14
+
background-color: var(--bg);
15
15
+
color: var(--fg);
16
16
+
color-scheme: light dark;
17
17
+
font-family: var(--font-sans);
18
18
+
font-optical-sizing: auto;
19
19
+
font-style: normal;
20
20
+
scroll-behavior: smooth;
21
21
+
text-wrap: balance;
22
22
+
}
23
23
+
24
24
+
@media (prefers-color-scheme: dark) {
25
25
+
:root {
26
26
+
--bg: var(--roost-dark);
27
27
+
--fg: rgba(255, 255, 255, 0.9);
28
28
+
}
29
29
+
}
30
30
+
31
31
+
*, *::before, *::after {
32
32
+
box-sizing: border-box;
33
33
+
}
34
34
+
35
35
+
html, body {
36
36
+
margin: 0;
37
37
+
}
38
38
+
39
39
+
@media (min-width: 320px) {
40
40
+
body {
41
41
+
font-size: 15px;
42
42
+
}
43
43
+
}
44
44
+
45
45
+
@media (min-width: 600px) {
46
46
+
body {
47
47
+
font-size: 18px;
48
48
+
}
49
49
+
}
50
50
+
51
51
+
header {
52
52
+
background-color: var(--roost-dark);
53
53
+
color: var(--roost-yellow);
54
54
+
padding-block: 1em;
55
55
+
}
56
56
+
57
57
+
header nav {
58
58
+
display: flex;
59
59
+
justify-content: space-between;
60
60
+
margin-inline: auto;
61
61
+
max-width: var(--max-width);
62
62
+
padding-inline: 1rem;
63
63
+
}
64
64
+
65
65
+
header nav a {
66
66
+
color: inherit;
67
67
+
}
68
68
+
69
69
+
main {
70
70
+
margin-inline: auto;
71
71
+
max-width: var(--max-width);
72
72
+
padding-inline: 1rem;
73
73
+
}
74
74
+
75
75
+
h1, h2, h3, h4, h5, h6 {
76
76
+
font-family: var(--font-display);
77
77
+
}
78
78
+
79
79
+
h1 {
80
80
+
margin-top: 2em;
81
81
+
}
82
82
+
83
83
+
h1 + p {
84
84
+
font-size: 1.2em;
85
85
+
line-height: 1.33;
86
86
+
}
87
87
+
88
88
+
ul#projects {
89
89
+
display: flex;
90
90
+
flex-wrap: wrap;
91
91
+
gap: 1em;
92
92
+
list-style: none;
93
93
+
margin-block-start: 3em;
94
94
+
padding: 0;
95
95
+
}
96
96
+
97
97
+
#projects a {
98
98
+
--project-color: var(--roost-yellow);
99
99
+
border: 2px dashed var(--project-color);
100
100
+
border-radius: 1em;
101
101
+
color: inherit;
102
102
+
display: block;
103
103
+
padding: 1em 1.5em;
104
104
+
text-decoration: none;
105
105
+
}
106
106
+
107
107
+
#projects li:nth-child(3n-1) a {
108
108
+
--project-color: var(--roost-peach);
109
109
+
}
110
110
+
111
111
+
#projects li:nth-child(3n) a {
112
112
+
--project-color: var(--roost-muddy);
113
113
+
}
114
114
+
115
115
+
#projects a:hover,
116
116
+
#projects a:focus {
117
117
+
background-color: color-mix(var(--project-color) 10%, transparent);
118
118
+
}
119
119
+
120
120
+
#projects h2 {
121
121
+
margin: 0 auto 0.5em;
122
122
+
padding: 0;
123
123
+
}
124
124
+
125
125
+
#projects p {
126
126
+
margin: 0 auto;
127
127
+
padding: 0;
128
128
+
}