@omniharmonic/openspace-cli 0.1.3 → 0.1.4

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 (140) hide show
  1. package/dist/{agents-md-7DESZGEN.js → agents-md-3W4PIY4N.js} +2 -2
  2. package/dist/bin.js +2 -2
  3. package/dist/{chunk-TQZ5F7VG.js → chunk-6NIIOHOX.js} +91 -3
  4. package/dist/chunk-6NIIOHOX.js.map +1 -0
  5. package/dist/{chunk-AAMRGTSI.js → chunk-7I6IJI6Z.js} +9166 -874
  6. package/dist/chunk-7I6IJI6Z.js.map +1 -0
  7. package/dist/index.js +2 -2
  8. package/dist/starter/site/AGENTS.md +11 -4
  9. package/dist/templates/beacon/content/collections/events/_collection.json +13 -0
  10. package/dist/templates/beacon/content/collections/events/keeper-training-november.mdoc +14 -0
  11. package/dist/templates/beacon/content/collections/events/planting-day-harbour-ward.mdoc +14 -0
  12. package/dist/templates/beacon/content/collections/events/planting-day-linden-north.mdoc +14 -0
  13. package/dist/templates/beacon/content/collections/news/2026-09-12-heat-map-2026.mdoc +13 -0
  14. package/dist/templates/beacon/content/collections/news/2026-09-30-school-gardens-harvest.mdoc +13 -0
  15. package/dist/templates/beacon/content/collections/news/2026-10-14-planting-season-begins.mdoc +13 -0
  16. package/dist/templates/beacon/content/collections/news/_collection.json +16 -0
  17. package/dist/templates/beacon/content/pages/about.json +572 -0
  18. package/dist/templates/beacon/content/pages/contact.json +260 -0
  19. package/dist/templates/beacon/content/pages/donate.json +406 -0
  20. package/dist/templates/beacon/content/pages/get-involved.json +412 -0
  21. package/dist/templates/beacon/content/pages/home.json +701 -0
  22. package/dist/templates/beacon/content/pages/our-work.json +855 -0
  23. package/dist/templates/beacon/content/site.json +363 -0
  24. package/dist/templates/beacon/content/styles.json +17 -0
  25. package/dist/templates/beacon/media/LICENSES.json +163 -0
  26. package/dist/templates/beacon/openspace.json +21 -0
  27. package/dist/templates/beacon/template.json +113 -0
  28. package/dist/templates/commons/content/pages/{members.json → directory.json} +15 -15
  29. package/dist/templates/commons/content/pages/home.json +1 -1
  30. package/dist/templates/commons/content/site.json +2 -2
  31. package/dist/templates/commons/template.json +2 -2
  32. package/dist/templates/darkroom/content/collections/work/_collection.json +13 -0
  33. package/dist/templates/darkroom/content/collections/work/after-hours.mdoc +28 -0
  34. package/dist/templates/darkroom/content/collections/work/dry-season.mdoc +28 -0
  35. package/dist/templates/darkroom/content/collections/work/faces-of-the-guild.mdoc +28 -0
  36. package/dist/templates/darkroom/content/collections/work/two-weddings.mdoc +28 -0
  37. package/dist/templates/darkroom/content/collections/work/white-lines.mdoc +28 -0
  38. package/dist/templates/darkroom/content/pages/about.json +449 -0
  39. package/dist/templates/darkroom/content/pages/contact.json +185 -0
  40. package/dist/templates/darkroom/content/pages/home.json +636 -0
  41. package/dist/templates/darkroom/content/pages/services.json +636 -0
  42. package/dist/templates/darkroom/content/site.json +264 -0
  43. package/dist/templates/darkroom/content/styles.json +17 -0
  44. package/dist/templates/darkroom/media/LICENSES.json +284 -0
  45. package/dist/templates/darkroom/openspace.json +21 -0
  46. package/dist/templates/darkroom/template.json +103 -0
  47. package/dist/templates/encore/content/pages/home.json +86 -0
  48. package/dist/templates/encore/media/LICENSES.json +22 -0
  49. package/dist/templates/field-notes/content/pages/home.json +94 -0
  50. package/dist/templates/fixwell/content/pages/about.json +508 -0
  51. package/dist/templates/fixwell/content/pages/contact.json +321 -0
  52. package/dist/templates/fixwell/content/pages/home.json +888 -0
  53. package/dist/templates/fixwell/content/pages/pricing.json +467 -0
  54. package/dist/templates/fixwell/content/pages/services.json +648 -0
  55. package/dist/templates/fixwell/content/site.json +293 -0
  56. package/dist/templates/fixwell/content/styles.json +17 -0
  57. package/dist/templates/fixwell/media/LICENSES.json +119 -0
  58. package/dist/templates/fixwell/openspace.json +21 -0
  59. package/dist/templates/fixwell/template.json +108 -0
  60. package/dist/templates/folio/content/collections/projects/_collection.json +13 -0
  61. package/dist/templates/folio/content/collections/projects/field-notes-app.mdoc +28 -0
  62. package/dist/templates/folio/content/collections/projects/harbour-health-dashboards.mdoc +28 -0
  63. package/dist/templates/folio/content/collections/projects/open-budget.mdoc +28 -0
  64. package/dist/templates/folio/content/collections/projects/transit-times.mdoc +28 -0
  65. package/dist/templates/folio/content/collections/writing/2026-08-30-designing-for-night-shifts.mdoc +9 -0
  66. package/dist/templates/folio/content/collections/writing/2026-09-20-testing-with-real-data.mdoc +9 -0
  67. package/dist/templates/folio/content/collections/writing/2026-10-12-one-honest-number.mdoc +9 -0
  68. package/dist/templates/folio/content/collections/writing/_collection.json +16 -0
  69. package/dist/templates/folio/content/pages/about.json +366 -0
  70. package/dist/templates/folio/content/pages/contact.json +218 -0
  71. package/dist/templates/folio/content/pages/experience.json +552 -0
  72. package/dist/templates/folio/content/pages/home.json +410 -0
  73. package/dist/templates/folio/content/site.json +186 -0
  74. package/dist/templates/folio/content/styles.json +17 -0
  75. package/dist/templates/folio/media/LICENSES.json +229 -0
  76. package/dist/templates/folio/openspace.json +21 -0
  77. package/dist/templates/folio/template.json +103 -0
  78. package/dist/templates/gather/content/collections/fringe/_collection.json +13 -0
  79. package/dist/templates/gather/content/collections/fringe/library-open-studio.mdoc +14 -0
  80. package/dist/templates/gather/content/collections/fringe/morning-run.mdoc +14 -0
  81. package/dist/templates/gather/content/collections/fringe/plain-language-pub-quiz.mdoc +14 -0
  82. package/dist/templates/gather/content/pages/about.json +435 -0
  83. package/dist/templates/gather/content/pages/contact.json +196 -0
  84. package/dist/templates/gather/content/pages/home.json +527 -0
  85. package/dist/templates/gather/content/pages/programme.json +449 -0
  86. package/dist/templates/gather/content/pages/speakers.json +225 -0
  87. package/dist/templates/gather/content/pages/tickets.json +495 -0
  88. package/dist/templates/gather/content/pages/venue.json +382 -0
  89. package/dist/templates/gather/content/site.json +222 -0
  90. package/dist/templates/gather/content/styles.json +17 -0
  91. package/dist/templates/gather/media/LICENSES.json +185 -0
  92. package/dist/templates/gather/openspace.json +21 -0
  93. package/dist/templates/gather/template.json +118 -0
  94. package/dist/templates/inkwell/content/collections/essays/2026-09-17-notebooks.mdoc +13 -0
  95. package/dist/templates/inkwell/content/collections/essays/2026-10-01-kitchen-radio.mdoc +13 -0
  96. package/dist/templates/inkwell/content/collections/essays/2026-10-15-the-same-mile.mdoc +13 -0
  97. package/dist/templates/inkwell/content/collections/essays/_collection.json +21 -0
  98. package/dist/templates/inkwell/content/pages/about.json +281 -0
  99. package/dist/templates/inkwell/content/pages/books.json +459 -0
  100. package/dist/templates/inkwell/content/pages/contact.json +201 -0
  101. package/dist/templates/inkwell/content/pages/home.json +457 -0
  102. package/dist/templates/inkwell/content/pages/speaking.json +522 -0
  103. package/dist/templates/inkwell/content/site.json +222 -0
  104. package/dist/templates/inkwell/content/styles.json +17 -0
  105. package/dist/templates/inkwell/media/LICENSES.json +119 -0
  106. package/dist/templates/inkwell/openspace.json +21 -0
  107. package/dist/templates/inkwell/template.json +108 -0
  108. package/dist/templates/keystone/content/collections/notes/2026-09-17-hard-conversations.mdoc +11 -0
  109. package/dist/templates/keystone/content/collections/notes/2026-10-01-weekly-rhythm.mdoc +11 -0
  110. package/dist/templates/keystone/content/collections/notes/2026-10-15-the-first-manager.mdoc +11 -0
  111. package/dist/templates/keystone/content/collections/notes/_collection.json +21 -0
  112. package/dist/templates/keystone/content/pages/about.json +371 -0
  113. package/dist/templates/keystone/content/pages/contact.json +207 -0
  114. package/dist/templates/keystone/content/pages/home.json +815 -0
  115. package/dist/templates/keystone/content/pages/results.json +396 -0
  116. package/dist/templates/keystone/content/pages/work-with-me.json +477 -0
  117. package/dist/templates/keystone/content/site.json +224 -0
  118. package/dist/templates/keystone/content/styles.json +17 -0
  119. package/dist/templates/keystone/media/LICENSES.json +75 -0
  120. package/dist/templates/keystone/openspace.json +21 -0
  121. package/dist/templates/keystone/template.json +108 -0
  122. package/dist/templates/ledger/content/pages/home.json +62 -0
  123. package/dist/templates/orbit/content/collections/changelog/2026-09-21-faster-attachments.mdoc +11 -0
  124. package/dist/templates/orbit/content/collections/changelog/2026-10-05-snooze-until-reply.mdoc +11 -0
  125. package/dist/templates/orbit/content/collections/changelog/2026-10-19-help-centre-search.mdoc +13 -0
  126. package/dist/templates/orbit/content/collections/changelog/_collection.json +39 -0
  127. package/dist/templates/orbit/content/pages/about.json +396 -0
  128. package/dist/templates/orbit/content/pages/contact.json +195 -0
  129. package/dist/templates/orbit/content/pages/features.json +603 -0
  130. package/dist/templates/orbit/content/pages/home.json +1273 -0
  131. package/dist/templates/orbit/content/pages/pricing.json +608 -0
  132. package/dist/templates/orbit/content/site.json +368 -0
  133. package/dist/templates/orbit/content/styles.json +17 -0
  134. package/dist/templates/orbit/media/LICENSES.json +141 -0
  135. package/dist/templates/orbit/openspace.json +21 -0
  136. package/dist/templates/orbit/template.json +108 -0
  137. package/package.json +6 -6
  138. package/dist/chunk-AAMRGTSI.js.map +0 -1
  139. package/dist/chunk-TQZ5F7VG.js.map +0 -1
  140. /package/dist/{agents-md-7DESZGEN.js.map → agents-md-3W4PIY4N.js.map} +0 -0
@@ -0,0 +1,293 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/site.json",
3
+ "title": "Fixwell Plumbing & Electric",
4
+ "tagline": "Licensed plumbers and electricians in north Denver.",
5
+ "nav": [
6
+ {
7
+ "type": "page",
8
+ "page": "pg_q2sbvhb6fq",
9
+ "label": "Services"
10
+ },
11
+ {
12
+ "type": "page",
13
+ "page": "pg_k52zrsks9g",
14
+ "label": "Prices"
15
+ },
16
+ {
17
+ "type": "page",
18
+ "page": "pg_c5jh5gv7m7",
19
+ "label": "About"
20
+ },
21
+ {
22
+ "type": "page",
23
+ "page": "pg_g5v67q4hd6",
24
+ "label": "Contact"
25
+ },
26
+ {
27
+ "type": "button",
28
+ "label": "Call now",
29
+ "link": {
30
+ "type": "phone",
31
+ "phone": "+13035550148"
32
+ },
33
+ "style": "primary"
34
+ }
35
+ ],
36
+ "header": {
37
+ "variant": "classic-left",
38
+ "sticky": true,
39
+ "transparentOnHero": false,
40
+ "mobileMenu": "slide",
41
+ "colorTheme": "light"
42
+ },
43
+ "footer": {
44
+ "id": "sec_dvr93anbt4",
45
+ "preset": "footer/hours-footer@1",
46
+ "label": "Footer with hours",
47
+ "layout": {
48
+ "mode": "stack",
49
+ "columns": {
50
+ "d": [
51
+ 4,
52
+ 4,
53
+ 4
54
+ ],
55
+ "m": [
56
+ 12
57
+ ]
58
+ },
59
+ "gap": "lg"
60
+ },
61
+ "style": {
62
+ "colorTheme": "dark",
63
+ "padding": {
64
+ "d": "xl",
65
+ "m": "lg"
66
+ }
67
+ },
68
+ "blocks": [
69
+ {
70
+ "id": "blk_pnq1cmnabn",
71
+ "type": "text",
72
+ "v": 1,
73
+ "fields": {
74
+ "content": {
75
+ "type": "doc",
76
+ "content": [
77
+ {
78
+ "type": "paragraph",
79
+ "attrs": {
80
+ "preset": "lead"
81
+ },
82
+ "content": [
83
+ {
84
+ "type": "text",
85
+ "text": "Fixwell Plumbing & Electric"
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "type": "paragraph",
91
+ "content": [
92
+ {
93
+ "type": "text",
94
+ "text": "2150 W 32nd Ave, Denver"
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "type": "paragraph",
100
+ "content": [
101
+ {
102
+ "type": "text",
103
+ "text": "(303) 555‑0148",
104
+ "marks": [
105
+ {
106
+ "type": "link",
107
+ "attrs": {
108
+ "href": "tel:+13035550148"
109
+ }
110
+ }
111
+ ]
112
+ }
113
+ ]
114
+ }
115
+ ]
116
+ }
117
+ },
118
+ "column": 0,
119
+ "variant": "default"
120
+ },
121
+ {
122
+ "id": "blk_tetfphkaak",
123
+ "type": "hours",
124
+ "v": 1,
125
+ "fields": {
126
+ "heading": "Office hours",
127
+ "headingLevel": "h3",
128
+ "rows": [
129
+ {
130
+ "day": "mon",
131
+ "opens": "07:00",
132
+ "closes": "19:00",
133
+ "closed": false
134
+ },
135
+ {
136
+ "day": "tue",
137
+ "opens": "07:00",
138
+ "closes": "19:00",
139
+ "closed": false
140
+ },
141
+ {
142
+ "day": "wed",
143
+ "opens": "07:00",
144
+ "closes": "19:00",
145
+ "closed": false
146
+ },
147
+ {
148
+ "day": "thu",
149
+ "opens": "07:00",
150
+ "closes": "19:00",
151
+ "closed": false
152
+ },
153
+ {
154
+ "day": "fri",
155
+ "opens": "07:00",
156
+ "closes": "19:00",
157
+ "closed": false
158
+ },
159
+ {
160
+ "day": "sat",
161
+ "opens": "08:00",
162
+ "closes": "16:00",
163
+ "closed": false
164
+ },
165
+ {
166
+ "day": "sun",
167
+ "closed": true
168
+ }
169
+ ]
170
+ },
171
+ "column": 1,
172
+ "variant": "compact"
173
+ },
174
+ {
175
+ "id": "blk_4hsbgjxd98",
176
+ "type": "text",
177
+ "v": 1,
178
+ "fields": {
179
+ "content": {
180
+ "type": "doc",
181
+ "content": [
182
+ {
183
+ "type": "paragraph",
184
+ "attrs": {
185
+ "preset": "eyebrow"
186
+ },
187
+ "content": [
188
+ {
189
+ "type": "text",
190
+ "text": "More"
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "type": "paragraph",
196
+ "content": [
197
+ {
198
+ "type": "text",
199
+ "text": "Services",
200
+ "marks": [
201
+ {
202
+ "type": "link",
203
+ "attrs": {
204
+ "href": "/services/"
205
+ }
206
+ }
207
+ ]
208
+ }
209
+ ]
210
+ },
211
+ {
212
+ "type": "paragraph",
213
+ "content": [
214
+ {
215
+ "type": "text",
216
+ "text": "Prices",
217
+ "marks": [
218
+ {
219
+ "type": "link",
220
+ "attrs": {
221
+ "href": "/pricing/"
222
+ }
223
+ }
224
+ ]
225
+ }
226
+ ]
227
+ },
228
+ {
229
+ "type": "paragraph",
230
+ "attrs": {
231
+ "preset": "small"
232
+ },
233
+ "content": [
234
+ {
235
+ "type": "text",
236
+ "text": "© 2026 Fixwell Plumbing & Electric LLC"
237
+ }
238
+ ]
239
+ }
240
+ ]
241
+ }
242
+ },
243
+ "column": 2,
244
+ "variant": "default"
245
+ },
246
+ {
247
+ "id": "blk_kyckpzdnzf",
248
+ "type": "social-links",
249
+ "v": 1,
250
+ "fields": {
251
+ "source": "site",
252
+ "profiles": [
253
+ {
254
+ "network": "instagram",
255
+ "url": "https://instagram.com/juniperyoga"
256
+ },
257
+ {
258
+ "network": "youtube",
259
+ "url": "https://youtube.com/@juniperyoga"
260
+ },
261
+ {
262
+ "network": "email",
263
+ "url": "mailto:hello@juniperyoga.com"
264
+ }
265
+ ]
266
+ },
267
+ "column": 2,
268
+ "variant": "icons"
269
+ }
270
+ ]
271
+ },
272
+ "social": [
273
+ {
274
+ "network": "facebook",
275
+ "url": "https://facebook.com/fixwell.example"
276
+ },
277
+ {
278
+ "network": "instagram",
279
+ "url": "https://instagram.com/fixwell.example"
280
+ }
281
+ ],
282
+ "seo": {
283
+ "titleTemplate": "%s · Fixwell",
284
+ "description": "Licensed plumbers and electricians in north Denver.",
285
+ "image": "https://images.unsplash.com/photo-1621905251189-08b45d6a269e?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.62 0.18 45)",
6
+ "neutral": "cool",
7
+ "contrast": "standard",
8
+ "source": "curated"
9
+ },
10
+ "pairing": "archivo",
11
+ "density": "comfortable",
12
+ "shape": "soft",
13
+ "buttons": "solid",
14
+ "motion": "subtle",
15
+ "imageTreatment": "rounded"
16
+ }
17
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "$comment": "Licenses for the demo media in the Fixwell 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-1500648767791-00dcc994a43e",
11
+ "title": "Portrait of a man in a grey sweater, smiling softly",
12
+ "author": "Jurica Koletić",
13
+ "authorUrl": "https://unsplash.com/@juricakoletic",
14
+ "source": "Unsplash",
15
+ "sourceUrl": "https://unsplash.com/photos/man-wearing-henley-top-portrait-7YVZYZeITc8",
16
+ "license": "Unsplash License",
17
+ "licenseUrl": "https://unsplash.com/license"
18
+ },
19
+ {
20
+ "kind": "image",
21
+ "src": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d",
22
+ "title": "Portrait of a smiling man in a white t-shirt",
23
+ "author": "Joseph Gonzalez",
24
+ "authorUrl": "https://unsplash.com/@miracletwentyone",
25
+ "source": "Unsplash",
26
+ "sourceUrl": "https://unsplash.com/photos/man-wearing-white-v-neck-shirt-iFgRcqHznqg",
27
+ "license": "Unsplash License",
28
+ "licenseUrl": "https://unsplash.com/license"
29
+ },
30
+ {
31
+ "kind": "image",
32
+ "src": "https://images.unsplash.com/photo-1534528741775-53994a69daeb",
33
+ "title": "Portrait of a woman in a black top against a soft violet wall",
34
+ "author": "Aiony Haust",
35
+ "authorUrl": "https://unsplash.com/@aiony",
36
+ "source": "Unsplash",
37
+ "sourceUrl": "https://unsplash.com/photos/woman-wearing-black-crew-neck-shirt-3TLl_97HNJo",
38
+ "license": "Unsplash License",
39
+ "licenseUrl": "https://unsplash.com/license"
40
+ },
41
+ {
42
+ "kind": "image",
43
+ "src": "https://images.unsplash.com/photo-1544005313-94ddf0286df2",
44
+ "title": "Portrait of a woman with long brown hair in a striped shirt",
45
+ "author": "Štefan Štefančík",
46
+ "authorUrl": "https://unsplash.com/@cikstefan",
47
+ "source": "Unsplash",
48
+ "sourceUrl": "https://unsplash.com/photos/smiling-woman-wearing-white-and-black-pinstriped-collared-top-QXevDflbl8A",
49
+ "license": "Unsplash License",
50
+ "licenseUrl": "https://unsplash.com/license"
51
+ },
52
+ {
53
+ "kind": "image",
54
+ "src": "https://images.unsplash.com/photo-1560250097-0b93528c311a",
55
+ "title": "Portrait of a man in a dark suit and glasses",
56
+ "author": "LinkedIn Sales Solutions",
57
+ "authorUrl": "https://unsplash.com/@linkedinsalesnavigator",
58
+ "source": "Unsplash",
59
+ "sourceUrl": "https://unsplash.com/photos/man-standing-beside-wall-pAtA8xe_iVM",
60
+ "license": "Unsplash License",
61
+ "licenseUrl": "https://unsplash.com/license"
62
+ },
63
+ {
64
+ "kind": "image",
65
+ "src": "https://images.unsplash.com/photo-1580489944761-15a19d654956",
66
+ "title": "Portrait of a woman with dark hair pinned up, smiling",
67
+ "author": "Jake Nackos",
68
+ "authorUrl": "https://unsplash.com/@jakenackos",
69
+ "source": "Unsplash",
70
+ "sourceUrl": "https://unsplash.com/photos/woman-in-white-crew-neck-shirt-smiling-IF9TK5Uy-KI",
71
+ "license": "Unsplash License",
72
+ "licenseUrl": "https://unsplash.com/license"
73
+ },
74
+ {
75
+ "kind": "image",
76
+ "src": "https://images.unsplash.com/photo-1584622650111-993a426fbf0a",
77
+ "title": "A bright renovated bathroom with a glass shower",
78
+ "author": "Lotus Design N Print",
79
+ "authorUrl": "https://unsplash.com/@lotusdnp",
80
+ "source": "Unsplash",
81
+ "sourceUrl": "https://unsplash.com/photos/modern-bathroom-with-shower-and-vanity-g51F6-WYzyU",
82
+ "license": "Unsplash License",
83
+ "licenseUrl": "https://unsplash.com/license"
84
+ },
85
+ {
86
+ "kind": "image",
87
+ "src": "https://images.unsplash.com/photo-1621905251189-08b45d6a269e",
88
+ "title": "An electrician in a hard hat working on a wall panel",
89
+ "author": "Emmanuel Ikwuegbu",
90
+ "authorUrl": "https://unsplash.com/@emmages",
91
+ "source": "Unsplash",
92
+ "sourceUrl": "https://unsplash.com/photos/electrician-installing-wiring-with-yellow-hardhat-_2AlIm-F6pw",
93
+ "license": "Unsplash License",
94
+ "licenseUrl": "https://unsplash.com/license"
95
+ },
96
+ {
97
+ "kind": "image",
98
+ "src": "https://images.unsplash.com/photo-1660330589693-99889d60181e",
99
+ "title": "An electrician wiring an open electrical cabinet",
100
+ "author": "Raze Solar",
101
+ "authorUrl": "https://unsplash.com/@razesolar",
102
+ "source": "Unsplash",
103
+ "sourceUrl": "https://unsplash.com/photos/electrician-working-on-electrical-panel-GXLPLG3_Vf4",
104
+ "license": "Unsplash License",
105
+ "licenseUrl": "https://unsplash.com/license"
106
+ },
107
+ {
108
+ "kind": "image",
109
+ "src": "https://images.unsplash.com/photo-1671040690726-b78261eff126",
110
+ "title": "Hand tools hanging neatly on a white pegboard",
111
+ "author": "Anton Savinov",
112
+ "authorUrl": "https://unsplash.com/@tonchik",
113
+ "source": "Unsplash",
114
+ "sourceUrl": "https://unsplash.com/photos/a-bunch-of-tools-hanging-up-on-a-wall-2Qlj2Gaft7w",
115
+ "license": "Unsplash License",
116
+ "licenseUrl": "https://unsplash.com/license"
117
+ }
118
+ ]
119
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/site-config.json",
3
+ "siteId": "st_j5xzhz36w0",
4
+ "schemaVersion": 1,
5
+ "template": {
6
+ "id": "fixwell",
7
+ "version": "1.0.0"
8
+ },
9
+ "hub": "https://hub.openspace.dev",
10
+ "deploy": {
11
+ "target": "github-pages",
12
+ "url": "https://example.github.io/fixwell",
13
+ "customDomain": null
14
+ },
15
+ "features": {
16
+ "forms": true,
17
+ "newsletter": false,
18
+ "analytics": true,
19
+ "search": false
20
+ }
21
+ }
@@ -0,0 +1,108 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/template.json",
3
+ "id": "fixwell",
4
+ "name": "Fixwell",
5
+ "description": "A phone-first site for local trades and services, with a call button on every page, trust points, published rates, a service-area map and a quote form.",
6
+ "persona": "Local services: trades, cleaners, salons",
7
+ "mood": "Dependable, direct, local",
8
+ "version": "1.0.0",
9
+ "tags": [
10
+ "local",
11
+ "trades",
12
+ "plumber",
13
+ "electrician",
14
+ "services",
15
+ "quotes"
16
+ ],
17
+ "sample": {
18
+ "name": "Fixwell Plumbing & Electric",
19
+ "tagline": "Licensed plumbers and electricians in north Denver."
20
+ },
21
+ "thumbnailPage": "pg_363jnd89a1",
22
+ "looks": [
23
+ {
24
+ "id": "workwear",
25
+ "name": "Workwear",
26
+ "description": "Navy and safety orange with Archivo — sturdy and easy to read.",
27
+ "choices": {
28
+ "palette": {
29
+ "brand": "oklch(0.62 0.18 45)",
30
+ "neutral": "cool",
31
+ "contrast": "standard",
32
+ "source": "curated"
33
+ },
34
+ "pairing": "archivo",
35
+ "density": "comfortable",
36
+ "shape": "soft",
37
+ "buttons": "solid",
38
+ "motion": "subtle",
39
+ "imageTreatment": "rounded"
40
+ }
41
+ },
42
+ {
43
+ "id": "fresh",
44
+ "name": "Fresh",
45
+ "description": "A clean teal, Plus Jakarta Sans and round pill buttons — for cleaners and salons.",
46
+ "choices": {
47
+ "palette": {
48
+ "brand": "oklch(0.58 0.12 190)",
49
+ "neutral": "cool",
50
+ "contrast": "standard",
51
+ "source": "curated"
52
+ },
53
+ "pairing": "plus-jakarta",
54
+ "density": "comfortable",
55
+ "shape": "round",
56
+ "buttons": "pill-solid",
57
+ "motion": "subtle",
58
+ "imageTreatment": "rounded"
59
+ }
60
+ },
61
+ {
62
+ "id": "heritage",
63
+ "name": "Heritage",
64
+ "description": "Forest green, Zilla Slab headings and square corners — an old-school family firm.",
65
+ "choices": {
66
+ "palette": {
67
+ "brand": "oklch(0.45 0.09 160)",
68
+ "neutral": "warm",
69
+ "contrast": "standard",
70
+ "source": "brand"
71
+ },
72
+ "pairing": "zilla-slab-inter",
73
+ "density": "compact",
74
+ "shape": "sharp",
75
+ "buttons": "solid",
76
+ "motion": "none",
77
+ "imageTreatment": "none"
78
+ }
79
+ }
80
+ ],
81
+ "pages": [
82
+ {
83
+ "id": "pg_363jnd89a1",
84
+ "title": "Home",
85
+ "slug": ""
86
+ },
87
+ {
88
+ "id": "pg_q2sbvhb6fq",
89
+ "title": "Services",
90
+ "slug": "services"
91
+ },
92
+ {
93
+ "id": "pg_k52zrsks9g",
94
+ "title": "Prices",
95
+ "slug": "pricing"
96
+ },
97
+ {
98
+ "id": "pg_c5jh5gv7m7",
99
+ "title": "About",
100
+ "slug": "about"
101
+ },
102
+ {
103
+ "id": "pg_g5v67q4hd6",
104
+ "title": "Contact",
105
+ "slug": "contact"
106
+ }
107
+ ]
108
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "kind": "portfolio",
3
+ "label": "Projects",
4
+ "itemLabel": "Project",
5
+ "list": {
6
+ "layout": "grid",
7
+ "pageSize": 24,
8
+ "sort": "date-desc"
9
+ },
10
+ "itemPage": {
11
+ "layout": "wide"
12
+ }
13
+ }
@@ -0,0 +1,28 @@
1
+ ---
2
+ status: published
3
+ title: A field notebook for ecologists
4
+ date: 2024-04-01
5
+ year: 2024
6
+ client: Northland Conservation
7
+ role: Product design
8
+ excerpt: An offline-first app for recording plant surveys in places with no signal.
9
+ image: https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=1600&q=80
10
+ imageAlt: A field notebook for ecologists, project cover
11
+ gallery:
12
+ - src: https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=2400&q=80
13
+ alt: Sunlight falling through tall trees onto a forest path
14
+ width: 2400
15
+ height: 1598
16
+ - src: https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?w=2400&q=80
17
+ alt: Wild red poppies scattered through a summer meadow
18
+ width: 2400
19
+ height: 1590
20
+ - src: https://images.unsplash.com/photo-1466692476868-aef1dfb1e735?w=2400&q=80
21
+ alt: Young seedlings sprouting in a dark tray of soil
22
+ width: 2400
23
+ height: 1600
24
+ ---
25
+
26
+ An offline-first app for recording plant surveys in places with no signal.
27
+
28
+ I led research and design with a small team of engineers, testing every version with the people who would use it.
@@ -0,0 +1,28 @@
1
+ ---
2
+ status: published
3
+ title: Dashboards nurses actually use
4
+ date: 2026-04-01
5
+ year: 2026
6
+ client: Harbour Health
7
+ role: Product design
8
+ excerpt: Redesigning ward dashboards with nurses so the important number is the first thing you see.
9
+ image: https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1600&q=80
10
+ imageAlt: Dashboards nurses actually use, project cover
11
+ gallery:
12
+ - src: https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=2400&q=80
13
+ alt: A monitor showing charts and a dashboard in a dark room
14
+ width: 2400
15
+ height: 1600
16
+ - src: https://images.unsplash.com/photo-1582005450386-52b25f82d9bb?w=2400&q=80
17
+ alt: People working on laptops in a bright open office
18
+ width: 2400
19
+ height: 1600
20
+ - src: https://images.unsplash.com/photo-1580894723150-0ff6e9b907ea?w=2400&q=80
21
+ alt: A woman sketching ideas on a whiteboard
22
+ width: 2400
23
+ height: 1601
24
+ ---
25
+
26
+ Redesigning ward dashboards with nurses so the important number is the first thing you see.
27
+
28
+ I led research and design with a small team of engineers, testing every version with the people who would use it.
@@ -0,0 +1,28 @@
1
+ ---
2
+ status: published
3
+ title: The city budget, readable
4
+ date: 2025-04-01
5
+ year: 2025
6
+ client: City of Lakewood
7
+ role: Product design
8
+ excerpt: An interactive budget that residents can explore in two minutes, now used at every town hall.
9
+ image: https://images.unsplash.com/photo-1677506048892-edde55cf3277?w=1600&q=80
10
+ imageAlt: The city budget, readable, project cover
11
+ gallery:
12
+ - src: https://images.unsplash.com/photo-1580894723150-0ff6e9b907ea?w=2400&q=80
13
+ alt: A woman sketching ideas on a whiteboard
14
+ width: 2400
15
+ height: 1601
16
+ - src: https://images.unsplash.com/photo-1542744173-8e7e53415bb0?w=2400&q=80
17
+ alt: A team listening to a presentation around a boardroom table
18
+ width: 2400
19
+ height: 1600
20
+ - src: https://images.unsplash.com/photo-1629317337307-e37f95ebc372?w=2400&q=80
21
+ alt: A tidy desk with a monitor, keyboard and headphones
22
+ width: 2400
23
+ height: 1081
24
+ ---
25
+
26
+ An interactive budget that residents can explore in two minutes, now used at every town hall.
27
+
28
+ I led research and design with a small team of engineers, testing every version with the people who would use it.