@omniharmonic/openspace-cli 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +74 -2
  3. package/dist/agents-md-2DTXWUZQ.js +8 -0
  4. package/dist/agents-md-2DTXWUZQ.js.map +1 -0
  5. package/dist/agents-md-TX6V4M64.js +8 -0
  6. package/dist/agents-md-TX6V4M64.js.map +1 -0
  7. package/dist/bin.d.ts +1 -0
  8. package/dist/bin.js +11 -0
  9. package/dist/bin.js.map +1 -0
  10. package/dist/chunk-2KUIUUKV.js +41167 -0
  11. package/dist/chunk-2KUIUUKV.js.map +1 -0
  12. package/dist/chunk-3F6TAUAT.js +41167 -0
  13. package/dist/chunk-3F6TAUAT.js.map +1 -0
  14. package/dist/chunk-LPHUKIJU.js +17120 -0
  15. package/dist/chunk-LPHUKIJU.js.map +1 -0
  16. package/dist/chunk-LTJEM3DN.js +17161 -0
  17. package/dist/chunk-LTJEM3DN.js.map +1 -0
  18. package/dist/index.d.ts +83 -0
  19. package/dist/index.js +23 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/starter/site/.github/workflows/publish.yml +38 -0
  22. package/dist/starter/site/AGENTS.md +392 -0
  23. package/dist/starter/site/astro.config.mjs +8 -0
  24. package/dist/starter/site/package.json +21 -0
  25. package/dist/starter/site/public/.gitkeep +0 -0
  26. package/dist/starter/site/src/pages/[...slug].astro +10 -0
  27. package/dist/starter/site/tsconfig.json +5 -0
  28. package/dist/starter/variants/cloudflare/.github/openspace/gated-sync.mjs +121 -0
  29. package/dist/starter/variants/cloudflare/.github/workflows/publish.yml +70 -0
  30. package/dist/starter/variants/cloudflare/astro.config.mjs +11 -0
  31. package/dist/starter/variants/cloudflare/package.json +23 -0
  32. package/dist/starter/variants/cloudflare/wrangler.jsonc +13 -0
  33. package/dist/templates/atelier/content/collections/projects/_collection.json +13 -0
  34. package/dist/templates/atelier/content/collections/projects/cordillera.mdoc +32 -0
  35. package/dist/templates/atelier/content/collections/projects/field-studies.mdoc +32 -0
  36. package/dist/templates/atelier/content/collections/projects/salt-and-glass.mdoc +32 -0
  37. package/dist/templates/atelier/content/collections/projects/white-city.mdoc +32 -0
  38. package/dist/templates/atelier/content/pages/about.json +180 -0
  39. package/dist/templates/atelier/content/pages/commissions.json +307 -0
  40. package/dist/templates/atelier/content/pages/contact.json +117 -0
  41. package/dist/templates/atelier/content/pages/home.json +524 -0
  42. package/dist/templates/atelier/content/pages/work.json +332 -0
  43. package/dist/templates/atelier/content/site.json +190 -0
  44. package/dist/templates/atelier/content/styles.json +25 -0
  45. package/dist/templates/atelier/media/LICENSES.json +218 -0
  46. package/dist/templates/atelier/openspace.json +21 -0
  47. package/dist/templates/atelier/template.json +115 -0
  48. package/dist/templates/commons/content/collections/gatherings/_collection.json +13 -0
  49. package/dist/templates/commons/content/collections/gatherings/grant-writing-workshop.mdoc +17 -0
  50. package/dist/templates/commons/content/collections/gatherings/seed-swap.mdoc +16 -0
  51. package/dist/templates/commons/content/collections/gatherings/winter-general-assembly.mdoc +17 -0
  52. package/dist/templates/commons/content/pages/about.json +227 -0
  53. package/dist/templates/commons/content/pages/home.json +540 -0
  54. package/dist/templates/commons/content/pages/join.json +304 -0
  55. package/dist/templates/commons/content/pages/members.json +499 -0
  56. package/dist/templates/commons/content/site.json +306 -0
  57. package/dist/templates/commons/content/styles.json +27 -0
  58. package/dist/templates/commons/media/LICENSES.json +108 -0
  59. package/dist/templates/commons/openspace.json +21 -0
  60. package/dist/templates/commons/template.json +113 -0
  61. package/dist/templates/encore/content/collections/sessions/_collection.json +19 -0
  62. package/dist/templates/encore/content/collections/sessions/session-10-headphones-on.mdoc +16 -0
  63. package/dist/templates/encore/content/collections/sessions/session-11-neon-tide.mdoc +16 -0
  64. package/dist/templates/encore/content/collections/sessions/session-12-slow-static.mdoc +16 -0
  65. package/dist/templates/encore/content/collections/tour/_collection.json +13 -0
  66. package/dist/templates/encore/content/collections/tour/brooklyn-elsewhere.mdoc +18 -0
  67. package/dist/templates/encore/content/collections/tour/chicago-thalia-hall.mdoc +18 -0
  68. package/dist/templates/encore/content/collections/tour/london-electric-ballroom.mdoc +18 -0
  69. package/dist/templates/encore/content/collections/tour/minneapolis-first-avenue.mdoc +18 -0
  70. package/dist/templates/encore/content/collections/tour/toronto-danforth.mdoc +18 -0
  71. package/dist/templates/encore/content/pages/about.json +251 -0
  72. package/dist/templates/encore/content/pages/contact.json +122 -0
  73. package/dist/templates/encore/content/pages/home.json +363 -0
  74. package/dist/templates/encore/content/pages/music.json +297 -0
  75. package/dist/templates/encore/content/site.json +293 -0
  76. package/dist/templates/encore/content/styles.json +17 -0
  77. package/dist/templates/encore/media/LICENSES.json +97 -0
  78. package/dist/templates/encore/openspace.json +21 -0
  79. package/dist/templates/encore/template.json +103 -0
  80. package/dist/templates/field-notes/content/collections/essays/_collection.json +31 -0
  81. package/dist/templates/field-notes/content/collections/essays/a-year-of-apples.mdoc +25 -0
  82. package/dist/templates/field-notes/content/collections/essays/learning-a-field.mdoc +32 -0
  83. package/dist/templates/field-notes/content/collections/essays/small-weather.mdoc +25 -0
  84. package/dist/templates/field-notes/content/collections/essays/the-wall-builders.mdoc +29 -0
  85. package/dist/templates/field-notes/content/pages/about.json +236 -0
  86. package/dist/templates/field-notes/content/pages/contact.json +116 -0
  87. package/dist/templates/field-notes/content/pages/home.json +428 -0
  88. package/dist/templates/field-notes/content/pages/subscribe.json +273 -0
  89. package/dist/templates/field-notes/content/site.json +218 -0
  90. package/dist/templates/field-notes/content/styles.json +27 -0
  91. package/dist/templates/field-notes/media/LICENSES.json +119 -0
  92. package/dist/templates/field-notes/openspace.json +21 -0
  93. package/dist/templates/field-notes/template.json +112 -0
  94. package/dist/templates/harbor/content/collections/events/_collection.json +13 -0
  95. package/dist/templates/harbor/content/collections/events/coat-drive-sorting-day.mdoc +17 -0
  96. package/dist/templates/harbor/content/collections/events/safe-at-home-build-day.mdoc +17 -0
  97. package/dist/templates/harbor/content/collections/events/spring-community-supper.mdoc +17 -0
  98. package/dist/templates/harbor/content/collections/events/winter-coat-giveaway.mdoc +16 -0
  99. package/dist/templates/harbor/content/collections/news/2026-08-28-back-to-school-at-homework-harbor.mdoc +17 -0
  100. package/dist/templates/harbor/content/collections/news/2026-09-15-meet-the-repair-crew.mdoc +21 -0
  101. package/dist/templates/harbor/content/collections/news/2026-10-08-the-2025-annual-report.mdoc +25 -0
  102. package/dist/templates/harbor/content/collections/news/_collection.json +34 -0
  103. package/dist/templates/harbor/content/pages/about.json +366 -0
  104. package/dist/templates/harbor/content/pages/contact.json +233 -0
  105. package/dist/templates/harbor/content/pages/get-involved.json +425 -0
  106. package/dist/templates/harbor/content/pages/home.json +524 -0
  107. package/dist/templates/harbor/content/pages/programs.json +611 -0
  108. package/dist/templates/harbor/content/site.json +377 -0
  109. package/dist/templates/harbor/content/styles.json +25 -0
  110. package/dist/templates/harbor/media/LICENSES.json +141 -0
  111. package/dist/templates/harbor/openspace.json +21 -0
  112. package/dist/templates/harbor/template.json +115 -0
  113. package/dist/templates/hearth/content/pages/about.json +246 -0
  114. package/dist/templates/hearth/content/pages/home.json +937 -0
  115. package/dist/templates/hearth/content/pages/menu.json +396 -0
  116. package/dist/templates/hearth/content/pages/private-dining.json +288 -0
  117. package/dist/templates/hearth/content/pages/visit.json +257 -0
  118. package/dist/templates/hearth/content/site.json +214 -0
  119. package/dist/templates/hearth/content/styles.json +25 -0
  120. package/dist/templates/hearth/media/LICENSES.json +196 -0
  121. package/dist/templates/hearth/openspace.json +21 -0
  122. package/dist/templates/hearth/template.json +116 -0
  123. package/dist/templates/kiln/content/collections/classes/_collection.json +13 -0
  124. package/dist/templates/kiln/content/collections/classes/glaze-day-march.mdoc +17 -0
  125. package/dist/templates/kiln/content/collections/classes/hand-building-february.mdoc +17 -0
  126. package/dist/templates/kiln/content/collections/classes/spring-studio-sale.mdoc +15 -0
  127. package/dist/templates/kiln/content/collections/classes/wheel-weekend-january.mdoc +17 -0
  128. package/dist/templates/kiln/content/collections/shop/_collection.json +14 -0
  129. package/dist/templates/kiln/content/collections/shop/ash-bud-vases.mdoc +18 -0
  130. package/dist/templates/kiln/content/collections/shop/harbor-planter.mdoc +18 -0
  131. package/dist/templates/kiln/content/collections/shop/morning-cup-pair.mdoc +24 -0
  132. package/dist/templates/kiln/content/collections/shop/sea-glass-planter.mdoc +18 -0
  133. package/dist/templates/kiln/content/collections/shop/tide-vase.mdoc +23 -0
  134. package/dist/templates/kiln/content/collections/shop/walnut-step-stool.mdoc +18 -0
  135. package/dist/templates/kiln/content/pages/about.json +344 -0
  136. package/dist/templates/kiln/content/pages/contact.json +232 -0
  137. package/dist/templates/kiln/content/pages/home.json +754 -0
  138. package/dist/templates/kiln/content/pages/workshops.json +352 -0
  139. package/dist/templates/kiln/content/site.json +263 -0
  140. package/dist/templates/kiln/content/styles.json +17 -0
  141. package/dist/templates/kiln/media/LICENSES.json +119 -0
  142. package/dist/templates/kiln/openspace.json +21 -0
  143. package/dist/templates/kiln/template.json +103 -0
  144. package/dist/templates/ledger/content/collections/case-studies/_collection.json +14 -0
  145. package/dist/templates/ledger/content/collections/case-studies/fieldwork-coffee.mdoc +29 -0
  146. package/dist/templates/ledger/content/collections/case-studies/larkspur-foods.mdoc +29 -0
  147. package/dist/templates/ledger/content/collections/case-studies/ostrander-clinics.mdoc +29 -0
  148. package/dist/templates/ledger/content/collections/insights/2026-08-10-one-page-of-numbers.mdoc +12 -0
  149. package/dist/templates/ledger/content/collections/insights/2026-09-07-hiring-your-first-coo.mdoc +17 -0
  150. package/dist/templates/ledger/content/collections/insights/2026-10-05-the-decision-log.mdoc +15 -0
  151. package/dist/templates/ledger/content/collections/insights/_collection.json +21 -0
  152. package/dist/templates/ledger/content/pages/about.json +298 -0
  153. package/dist/templates/ledger/content/pages/contact.json +158 -0
  154. package/dist/templates/ledger/content/pages/home.json +621 -0
  155. package/dist/templates/ledger/content/pages/services.json +639 -0
  156. package/dist/templates/ledger/content/site.json +336 -0
  157. package/dist/templates/ledger/content/styles.json +17 -0
  158. package/dist/templates/ledger/media/LICENSES.json +86 -0
  159. package/dist/templates/ledger/openspace.json +21 -0
  160. package/dist/templates/ledger/template.json +102 -0
  161. package/dist/templates/link/content/pages/home.json +278 -0
  162. package/dist/templates/link/content/site.json +168 -0
  163. package/dist/templates/link/content/styles.json +17 -0
  164. package/dist/templates/link/media/LICENSES.json +97 -0
  165. package/dist/templates/link/openspace.json +21 -0
  166. package/dist/templates/link/template.json +87 -0
  167. package/dist/templates/meadow/content/collections/journal/2026-09-02-meet-daniel.mdoc +20 -0
  168. package/dist/templates/meadow/content/collections/journal/2026-09-28-a-practice-for-dark-mornings.mdoc +24 -0
  169. package/dist/templates/meadow/content/collections/journal/2026-10-12-why-twelve-mats.mdoc +26 -0
  170. package/dist/templates/meadow/content/collections/journal/_collection.json +34 -0
  171. package/dist/templates/meadow/content/collections/workshops/_collection.json +13 -0
  172. package/dist/templates/meadow/content/collections/workshops/breath-and-rest-workshop.mdoc +17 -0
  173. package/dist/templates/meadow/content/collections/workshops/foundations-four-weeks.mdoc +17 -0
  174. package/dist/templates/meadow/content/collections/workshops/manzanita-spring-retreat.mdoc +17 -0
  175. package/dist/templates/meadow/content/collections/workshops/winter-solstice-restorative.mdoc +17 -0
  176. package/dist/templates/meadow/content/pages/about.json +344 -0
  177. package/dist/templates/meadow/content/pages/bodywork.json +330 -0
  178. package/dist/templates/meadow/content/pages/classes.json +820 -0
  179. package/dist/templates/meadow/content/pages/contact.json +240 -0
  180. package/dist/templates/meadow/content/pages/home.json +556 -0
  181. package/dist/templates/meadow/content/site.json +290 -0
  182. package/dist/templates/meadow/content/styles.json +25 -0
  183. package/dist/templates/meadow/media/LICENSES.json +130 -0
  184. package/dist/templates/meadow/openspace.json +21 -0
  185. package/dist/templates/meadow/template.json +116 -0
  186. package/dist/templates/signal/content/collections/changelog/2026-09-08-faster-sms.mdoc +11 -0
  187. package/dist/templates/signal/content/collections/changelog/2026-09-22-postmortem-drafts.mdoc +11 -0
  188. package/dist/templates/signal/content/collections/changelog/2026-10-06-quiet-hours.mdoc +13 -0
  189. package/dist/templates/signal/content/collections/changelog/2026-10-20-status-pages-that-update-themselves.mdoc +17 -0
  190. package/dist/templates/signal/content/collections/changelog/_collection.json +39 -0
  191. package/dist/templates/signal/content/pages/about.json +258 -0
  192. package/dist/templates/signal/content/pages/contact.json +122 -0
  193. package/dist/templates/signal/content/pages/home.json +1062 -0
  194. package/dist/templates/signal/content/pages/pricing.json +460 -0
  195. package/dist/templates/signal/content/site.json +345 -0
  196. package/dist/templates/signal/content/styles.json +17 -0
  197. package/dist/templates/signal/media/LICENSES.json +119 -0
  198. package/dist/templates/signal/openspace.json +21 -0
  199. package/dist/templates/signal/template.json +103 -0
  200. package/dist/templates/vow/content/pages/about.json +314 -0
  201. package/dist/templates/vow/content/pages/home.json +400 -0
  202. package/dist/templates/vow/content/pages/registry.json +207 -0
  203. package/dist/templates/vow/content/pages/rsvp.json +145 -0
  204. package/dist/templates/vow/content/pages/schedule.json +281 -0
  205. package/dist/templates/vow/content/pages/travel.json +326 -0
  206. package/dist/templates/vow/content/site.json +200 -0
  207. package/dist/templates/vow/content/styles.json +17 -0
  208. package/dist/templates/vow/media/LICENSES.json +130 -0
  209. package/dist/templates/vow/openspace.json +21 -0
  210. package/dist/templates/vow/template.json +113 -0
  211. package/package.json +71 -3
@@ -0,0 +1,293 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/site.json",
3
+ "title": "Juno Vale",
4
+ "tagline": "Songs for driving home after midnight.",
5
+ "nav": [
6
+ {
7
+ "type": "page",
8
+ "page": "pg_4czb9an2pn",
9
+ "label": "Music"
10
+ },
11
+ {
12
+ "type": "collection",
13
+ "collection": "tour",
14
+ "label": "Tour"
15
+ },
16
+ {
17
+ "type": "collection",
18
+ "collection": "sessions",
19
+ "label": "Podcast"
20
+ },
21
+ {
22
+ "type": "page",
23
+ "page": "pg_awra08n6jh",
24
+ "label": "Press"
25
+ },
26
+ {
27
+ "type": "page",
28
+ "page": "pg_h63an1absw",
29
+ "label": "Contact"
30
+ },
31
+ {
32
+ "type": "button",
33
+ "label": "Tickets",
34
+ "link": {
35
+ "type": "url",
36
+ "url": "/tour/"
37
+ },
38
+ "style": "primary"
39
+ }
40
+ ],
41
+ "header": {
42
+ "variant": "transparent-overlay",
43
+ "sticky": true,
44
+ "transparentOnHero": true,
45
+ "mobileMenu": "fullscreen",
46
+ "colorTheme": "dark"
47
+ },
48
+ "footer": {
49
+ "id": "sec_ps8ny3d114",
50
+ "preset": "footer/big-name@1",
51
+ "label": "Big name footer",
52
+ "layout": {
53
+ "mode": "grid",
54
+ "rows": {
55
+ "d": 11,
56
+ "m": 15
57
+ },
58
+ "items": {
59
+ "blk_sgcjdhe64r": {
60
+ "d": {
61
+ "x": 1,
62
+ "y": 1,
63
+ "w": 24,
64
+ "h": 3
65
+ },
66
+ "m": {
67
+ "x": 1,
68
+ "y": 1,
69
+ "w": 8,
70
+ "h": 3
71
+ }
72
+ },
73
+ "blk_mavqqkp9k9": {
74
+ "d": {
75
+ "x": 1,
76
+ "y": 5,
77
+ "w": 24,
78
+ "h": 1
79
+ },
80
+ "m": {
81
+ "x": 1,
82
+ "y": 5,
83
+ "w": 8,
84
+ "h": 1
85
+ }
86
+ },
87
+ "blk_670aks2mf9": {
88
+ "d": {
89
+ "x": 1,
90
+ "y": 7,
91
+ "w": 8,
92
+ "h": 5
93
+ },
94
+ "m": {
95
+ "x": 1,
96
+ "y": 7,
97
+ "w": 4,
98
+ "h": 5
99
+ }
100
+ },
101
+ "blk_35hp4ataas": {
102
+ "d": {
103
+ "x": 9,
104
+ "y": 7,
105
+ "w": 8,
106
+ "h": 3
107
+ },
108
+ "m": {
109
+ "x": 5,
110
+ "y": 7,
111
+ "w": 4,
112
+ "h": 3
113
+ }
114
+ },
115
+ "blk_91y2c3tvs2": {
116
+ "d": {
117
+ "x": 17,
118
+ "y": 7,
119
+ "w": 8,
120
+ "h": 3
121
+ },
122
+ "m": {
123
+ "x": 1,
124
+ "y": 13,
125
+ "w": 8,
126
+ "h": 3
127
+ }
128
+ }
129
+ }
130
+ },
131
+ "style": {
132
+ "colorTheme": "dark-accent",
133
+ "padding": {
134
+ "d": "xl",
135
+ "m": "lg"
136
+ }
137
+ },
138
+ "blocks": [
139
+ {
140
+ "id": "blk_sgcjdhe64r",
141
+ "type": "heading",
142
+ "v": 1,
143
+ "fields": {
144
+ "text": "Juno Vale",
145
+ "level": "h2",
146
+ "size": "display"
147
+ },
148
+ "variant": "plain"
149
+ },
150
+ {
151
+ "id": "blk_mavqqkp9k9",
152
+ "type": "line",
153
+ "v": 1,
154
+ "fields": {
155
+ "thickness": "hairline",
156
+ "length": "full",
157
+ "color": "text"
158
+ },
159
+ "variant": "solid"
160
+ },
161
+ {
162
+ "id": "blk_670aks2mf9",
163
+ "type": "text",
164
+ "v": 1,
165
+ "fields": {
166
+ "content": {
167
+ "type": "doc",
168
+ "content": [
169
+ {
170
+ "type": "paragraph",
171
+ "content": [
172
+ {
173
+ "type": "text",
174
+ "text": "Music",
175
+ "marks": [
176
+ {
177
+ "type": "link",
178
+ "attrs": {
179
+ "href": "/music/"
180
+ }
181
+ }
182
+ ]
183
+ }
184
+ ]
185
+ },
186
+ {
187
+ "type": "paragraph",
188
+ "content": [
189
+ {
190
+ "type": "text",
191
+ "text": "Tour",
192
+ "marks": [
193
+ {
194
+ "type": "link",
195
+ "attrs": {
196
+ "href": "/tour/"
197
+ }
198
+ }
199
+ ]
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "type": "paragraph",
205
+ "content": [
206
+ {
207
+ "type": "text",
208
+ "text": "Press kit",
209
+ "marks": [
210
+ {
211
+ "type": "link",
212
+ "attrs": {
213
+ "href": "/about/"
214
+ }
215
+ }
216
+ ]
217
+ }
218
+ ]
219
+ }
220
+ ]
221
+ }
222
+ },
223
+ "variant": "default"
224
+ },
225
+ {
226
+ "id": "blk_35hp4ataas",
227
+ "type": "social-links",
228
+ "v": 1,
229
+ "fields": {
230
+ "source": "site",
231
+ "profiles": []
232
+ },
233
+ "variant": "icons"
234
+ },
235
+ {
236
+ "id": "blk_91y2c3tvs2",
237
+ "type": "text",
238
+ "v": 1,
239
+ "fields": {
240
+ "content": {
241
+ "type": "doc",
242
+ "content": [
243
+ {
244
+ "type": "paragraph",
245
+ "attrs": {
246
+ "preset": "small"
247
+ },
248
+ "content": [
249
+ {
250
+ "type": "text",
251
+ "text": "© 2026 Juno Vale · Management: Lakefront Artists, Chicago"
252
+ }
253
+ ]
254
+ }
255
+ ]
256
+ }
257
+ },
258
+ "variant": "default",
259
+ "style": {
260
+ "align": {
261
+ "d": "end",
262
+ "m": "start"
263
+ }
264
+ }
265
+ }
266
+ ]
267
+ },
268
+ "social": [
269
+ {
270
+ "network": "instagram",
271
+ "url": "https://instagram.com/junovale.example"
272
+ },
273
+ {
274
+ "network": "youtube",
275
+ "url": "https://youtube.com/@junovale.example"
276
+ },
277
+ {
278
+ "network": "email",
279
+ "url": "mailto:team@junovale.example"
280
+ }
281
+ ],
282
+ "seo": {
283
+ "titleTemplate": "%s · Juno Vale",
284
+ "description": "Late-night synth-pop from Chicago. New album Afterglow out now.",
285
+ "image": "https://images.unsplash.com/photo-1501386761578-eac5c94b800a?w=1200&q=80"
286
+ },
287
+ "locale": "en-US",
288
+ "integrations": {
289
+ "analytics": true,
290
+ "bookingUrl": null,
291
+ "stripeConnected": false
292
+ }
293
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/styles.json",
3
+ "choices": {
4
+ "palette": {
5
+ "brand": "oklch(0.45 0.14 330)",
6
+ "neutral": "cool",
7
+ "contrast": "standard",
8
+ "source": "curated"
9
+ },
10
+ "pairing": "syne-dm-sans",
11
+ "density": "comfortable",
12
+ "shape": "sharp",
13
+ "buttons": "solid",
14
+ "motion": "expressive",
15
+ "imageTreatment": "none"
16
+ }
17
+ }
@@ -0,0 +1,97 @@
1
+ {
2
+ "$comment": "Licenses for the demo media in the Encore template. Replace the demo photos with your own; this file can be deleted once none of them are used.",
3
+ "design": {
4
+ "license": "CC-BY-4.0",
5
+ "licenseUrl": "https://creativecommons.org/licenses/by/4.0/"
6
+ },
7
+ "media": [
8
+ {
9
+ "kind": "image",
10
+ "src": "https://images.unsplash.com/photo-1501386761578-eac5c94b800a",
11
+ "title": "A crowd cheering with raised hands at a live show",
12
+ "author": "Nicholas Green",
13
+ "authorUrl": "https://unsplash.com/@nickxshotz",
14
+ "source": "Unsplash",
15
+ "sourceUrl": "https://unsplash.com/photos/excited-crowd-cheering-at-concert-or-event-nPz8akkUmDI",
16
+ "license": "Unsplash License",
17
+ "licenseUrl": "https://unsplash.com/license"
18
+ },
19
+ {
20
+ "kind": "image",
21
+ "src": "https://images.unsplash.com/photo-1505740420928-5e560c06d30e",
22
+ "title": "Black over-ear headphones on a bright yellow background",
23
+ "author": "C D-X",
24
+ "authorUrl": "https://unsplash.com/@cdx2",
25
+ "source": "Unsplash",
26
+ "sourceUrl": "https://unsplash.com/photos/flatlay-photography-of-wireless-headphones-PDX_a_82obo",
27
+ "license": "Unsplash License",
28
+ "licenseUrl": "https://unsplash.com/license"
29
+ },
30
+ {
31
+ "kind": "image",
32
+ "src": "https://images.unsplash.com/photo-1511671782779-c97d3d27a1d4",
33
+ "title": "A vintage microphone in warm stage light",
34
+ "author": "israel palacio",
35
+ "authorUrl": "https://unsplash.com/@othentikisra",
36
+ "source": "Unsplash",
37
+ "sourceUrl": "https://unsplash.com/photos/bokeh-photography-of-condenser-microphone-Y20JJ_ddy9M",
38
+ "license": "Unsplash License",
39
+ "licenseUrl": "https://unsplash.com/license"
40
+ },
41
+ {
42
+ "kind": "image",
43
+ "src": "https://images.unsplash.com/photo-1534528741775-53994a69daeb",
44
+ "title": "Portrait of a woman in a black top against a soft violet wall",
45
+ "author": "Aiony Haust",
46
+ "authorUrl": "https://unsplash.com/@aiony",
47
+ "source": "Unsplash",
48
+ "sourceUrl": "https://unsplash.com/photos/woman-wearing-black-crew-neck-shirt-3TLl_97HNJo",
49
+ "license": "Unsplash License",
50
+ "licenseUrl": "https://unsplash.com/license"
51
+ },
52
+ {
53
+ "kind": "image",
54
+ "src": "https://images.unsplash.com/photo-1540575467063-178a50c2df87",
55
+ "title": "An audience in a dark hall facing a lit stage",
56
+ "author": "Headway",
57
+ "authorUrl": "https://unsplash.com/@headwayio",
58
+ "source": "Unsplash",
59
+ "sourceUrl": "https://unsplash.com/photos/crowd-of-people-sitting-on-chairs-inside-room-F2KRf_QfCqw",
60
+ "license": "Unsplash License",
61
+ "licenseUrl": "https://unsplash.com/license"
62
+ },
63
+ {
64
+ "kind": "image",
65
+ "src": "https://images.unsplash.com/photo-1669459868647-4c2f1c564052",
66
+ "title": "A crowd facing a lit stage at a small music venue",
67
+ "author": "Leon Rockel",
68
+ "authorUrl": "https://unsplash.com/@lonski",
69
+ "source": "Unsplash",
70
+ "sourceUrl": "https://unsplash.com/photos/a-crowd-of-people-in-a-room-with-a-stage-and-a-stage-T3L72nHQ6aQ",
71
+ "license": "Unsplash License",
72
+ "licenseUrl": "https://unsplash.com/license"
73
+ },
74
+ {
75
+ "kind": "audio",
76
+ "src": "https://upload.wikimedia.org/wikipedia/commons/1/10/Friendly_Evil_Gangsta_Synth_Hip_Hop.ogg",
77
+ "title": "Friendly Evil Gangsta Synth Hip Hop",
78
+ "author": "Mesostic",
79
+ "authorUrl": "https://commons.wikimedia.org/wiki/User:Mesostic",
80
+ "source": "Wikimedia Commons",
81
+ "sourceUrl": "https://commons.wikimedia.org/wiki/File:Friendly_Evil_Gangsta_Synth_Hip_Hop.ogg",
82
+ "license": "CC0 1.0 (public domain dedication)",
83
+ "licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/"
84
+ },
85
+ {
86
+ "kind": "audio",
87
+ "src": "https://upload.wikimedia.org/wikipedia/commons/c/c2/Synth_pop_with_4_on_the_floor.ogg",
88
+ "title": "Synth pop with 4 on the floor",
89
+ "author": "Mesostic",
90
+ "authorUrl": "https://commons.wikimedia.org/wiki/User:Mesostic",
91
+ "source": "Wikimedia Commons",
92
+ "sourceUrl": "https://commons.wikimedia.org/wiki/File:Synth_pop_with_4_on_the_floor.ogg",
93
+ "license": "CC0 1.0 (public domain dedication)",
94
+ "licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/"
95
+ }
96
+ ]
97
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/site-config.json",
3
+ "siteId": "st_y549fya436",
4
+ "schemaVersion": 1,
5
+ "template": {
6
+ "id": "encore",
7
+ "version": "1.0.0"
8
+ },
9
+ "hub": "https://hub.openspace.dev",
10
+ "deploy": {
11
+ "target": "github-pages",
12
+ "url": "https://example.github.io/encore",
13
+ "customDomain": null
14
+ },
15
+ "features": {
16
+ "forms": true,
17
+ "newsletter": true,
18
+ "analytics": true,
19
+ "search": false
20
+ }
21
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/template.json",
3
+ "id": "encore",
4
+ "name": "Encore",
5
+ "description": "An expressive, nocturnal site for musicians, performers and podcasters, with an audio player, tour dates, a press kit and an episode list.",
6
+ "persona": "Musicians, performers, podcasters",
7
+ "mood": "Expressive, nocturnal",
8
+ "version": "1.0.0",
9
+ "tags": [
10
+ "music",
11
+ "band",
12
+ "podcast",
13
+ "tour",
14
+ "press kit",
15
+ "audio"
16
+ ],
17
+ "sample": {
18
+ "name": "Juno Vale",
19
+ "tagline": "Songs for driving home after midnight."
20
+ },
21
+ "thumbnailPage": "pg_a2aw835bvy",
22
+ "looks": [
23
+ {
24
+ "id": "night-plum",
25
+ "name": "Night Plum",
26
+ "description": "Dark plum with a vivid magenta edge and wide Syne headings.",
27
+ "choices": {
28
+ "palette": {
29
+ "brand": "oklch(0.45 0.14 330)",
30
+ "neutral": "cool",
31
+ "contrast": "standard",
32
+ "source": "curated"
33
+ },
34
+ "pairing": "syne-dm-sans",
35
+ "density": "comfortable",
36
+ "shape": "sharp",
37
+ "buttons": "solid",
38
+ "motion": "expressive",
39
+ "imageTreatment": "none"
40
+ }
41
+ },
42
+ {
43
+ "id": "afterglow",
44
+ "name": "Afterglow",
45
+ "description": "Hot coral on warm black with Unbounded headings and pill buttons.",
46
+ "choices": {
47
+ "palette": {
48
+ "brand": "oklch(0.65 0.2 25)",
49
+ "neutral": "warm",
50
+ "contrast": "standard",
51
+ "source": "brand"
52
+ },
53
+ "pairing": "unbounded-figtree",
54
+ "density": "comfortable",
55
+ "shape": "round",
56
+ "buttons": "pill-solid",
57
+ "motion": "expressive",
58
+ "imageTreatment": "grain"
59
+ }
60
+ },
61
+ {
62
+ "id": "chrome",
63
+ "name": "Chrome",
64
+ "description": "Monochrome with electric cyan and Archivo, for a colder, club-night feel.",
65
+ "choices": {
66
+ "palette": {
67
+ "brand": "oklch(0.62 0.13 210)",
68
+ "neutral": "cool",
69
+ "contrast": "standard",
70
+ "source": "brand"
71
+ },
72
+ "pairing": "archivo",
73
+ "density": "compact",
74
+ "shape": "sharp",
75
+ "buttons": "outline",
76
+ "motion": "subtle",
77
+ "imageTreatment": "duotone"
78
+ }
79
+ }
80
+ ],
81
+ "pages": [
82
+ {
83
+ "id": "pg_a2aw835bvy",
84
+ "title": "Home",
85
+ "slug": ""
86
+ },
87
+ {
88
+ "id": "pg_4czb9an2pn",
89
+ "title": "Music",
90
+ "slug": "music"
91
+ },
92
+ {
93
+ "id": "pg_awra08n6jh",
94
+ "title": "About & press",
95
+ "slug": "about"
96
+ },
97
+ {
98
+ "id": "pg_h63an1absw",
99
+ "title": "Contact",
100
+ "slug": "contact"
101
+ }
102
+ ]
103
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "kind": "blog",
3
+ "label": "Essays",
4
+ "itemLabel": "Essay",
5
+ "slugPattern": "{title}",
6
+ "list": {
7
+ "layout": "list",
8
+ "pageSize": 20,
9
+ "sort": "date-desc"
10
+ },
11
+ "itemPage": {
12
+ "layout": "article",
13
+ "showDate": true,
14
+ "showAuthor": true,
15
+ "showRelated": true
16
+ },
17
+ "taxonomies": {
18
+ "categories": [
19
+ {
20
+ "slug": "essays",
21
+ "label": "Essays"
22
+ }
23
+ ],
24
+ "tags": true
25
+ },
26
+ "feed": {
27
+ "enabled": true,
28
+ "title": "The Long Field",
29
+ "description": "Essays on walking, weather and paying attention."
30
+ }
31
+ }
@@ -0,0 +1,25 @@
1
+ ---
2
+ status: published
3
+ title: A year of apples
4
+ date: 2026-09-06
5
+ author: Ruth Ellery
6
+ categories:
7
+ - essays
8
+ tags:
9
+ - 7-minute read
10
+ image: https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?w=1600&q=80
11
+ imageAlt: Wild poppies scattered through a summer meadow
12
+ excerpt: Pruning a forgotten orchard back to life, one tree and one mistake at a time.
13
+ ---
14
+
15
+ *7-minute read*
16
+
17
+ The orchard came with the farm and with no instructions. Twenty-two trees, unpruned since the 1980s, their branches crossing like arguments.
18
+
19
+ I learned to prune from a library book and a retired orchardist named Lorraine, who watched me make my first cut and said, kindly, "Well. It'll grow back."¹ This autumn, for the first time, we picked enough to press cider.
20
+
21
+ ---
22
+
23
+ **Notes**
24
+
25
+ 1. She was right about that too. Apple trees forgive almost everything except shade.
@@ -0,0 +1,32 @@
1
+ ---
2
+ status: published
3
+ title: Learning a field by heart
4
+ date: 2026-10-18
5
+ author: Ruth Ellery
6
+ categories:
7
+ - essays
8
+ tags:
9
+ - 8-minute read
10
+ image: https://images.unsplash.com/photo-1501854140801-50d01698950b?w=1600&q=80
11
+ imageAlt: Green hills seen from above, ridges catching the light
12
+ excerpt: I walked the same eleven acres every morning for a year. Here is what the field taught me.
13
+ ---
14
+
15
+ *8-minute read*
16
+
17
+ On the first of November last year I made myself a promise: every morning, before coffee, I would walk the long field below the house. Same route, same gate, whatever the weather.¹
18
+
19
+ By February I could tell you where the snow drifted deepest and where the deer crossed. By May I knew the order the wildflowers came in: coltsfoot, then bloodroot, then the bluets that turn the north corner pale. By August I had stopped noticing the field and started noticing *changes* in it, which is a different and much better kind of attention.
20
+
21
+ ## What repetition gives you
22
+
23
+ We tend to think of novelty as the engine of seeing. Go somewhere new and the world looks bright. But the field taught me the opposite. It was only on the two-hundredth walk that I noticed the stone wall bends where an older wall once met it, and that the old wall lines up with a cellar hole in the woods.²
24
+
25
+ Knowing a place by heart is slow. It asks for a year, not an afternoon. I'm starting on the orchard next.
26
+
27
+ ---
28
+
29
+ **Notes**
30
+
31
+ 1. I broke the promise eleven times, mostly in mud season. The dog kept walking it anyway.
32
+ 2. The town's 1859 map shows a farmhouse there, belonging to someone called A. Ellery. No relation, as far as I can tell.
@@ -0,0 +1,25 @@
1
+ ---
2
+ status: published
3
+ title: Small weather
4
+ date: 2026-09-20
5
+ author: Ruth Ellery
6
+ categories:
7
+ - essays
8
+ tags:
9
+ - 5-minute read
10
+ image: https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=1600&q=80
11
+ imageAlt: A misty river valley with pine trees and cliffs at dawn
12
+ excerpt: On the private weather of a single valley, and learning to forecast it from the porch.
13
+ ---
14
+
15
+ *5-minute read*
16
+
17
+ The forecast for our town is almost always wrong for our valley. Fog pools here when the ridge is clear; frost comes ten days earlier than the village; rain arrives from the west twenty minutes after it reaches the Wilsons' barn.
18
+
19
+ So I started keeping a weather book: three lines a day, written on the porch with the first coffee. Two years in, I can forecast the next morning's fog from the evening's dew better than any app.¹
20
+
21
+ ---
22
+
23
+ **Notes**
24
+
25
+ 1. My neighbour Ed, who is 84, says he could have told me that in an afternoon. He is right.
@@ -0,0 +1,29 @@
1
+ ---
2
+ status: published
3
+ title: The wall builders
4
+ date: 2026-10-04
5
+ author: Ruth Ellery
6
+ categories:
7
+ - essays
8
+ tags:
9
+ - 6-minute read
10
+ image: https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=1600&q=80
11
+ imageAlt: Sunlight falling through tall trees onto a forest path
12
+ excerpt: New England has more stone wall than the moon has craters. Who built them, and why?
13
+ ---
14
+
15
+ *6-minute read*
16
+
17
+ Walk any Vermont woods and you'll find them: grey stone walls running through trees, enclosing nothing. A century ago these woods were sheep pasture, and every one of those stones was lifted by hand.¹
18
+
19
+ There are roughly 240,000 miles of stone wall in New England. Most were built between 1775 and 1825, when forests were cleared for farms and the frost heaved up a fresh crop of rocks every spring.
20
+
21
+ ## Reading a wall
22
+
23
+ Small stones mean a field was ploughed, and the farmer threw the pickings on the wall. Large, carefully laid stones mean pasture. A wall with a gap mid-span marks an old gate; two parallel walls are a lane.
24
+
25
+ ---
26
+
27
+ **Notes**
28
+
29
+ 1. The geologist Robert Thorson estimates the walls hold more stone than the Egyptian pyramids. His book on the subject is wonderful.