@synap-core/workspace-templates 0.2.1

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.
@@ -0,0 +1,244 @@
1
+ # Marketing Campaign workspace template
2
+ # AI-generation-friendly YAML. Validated against types.ts at build time.
3
+
4
+ meta:
5
+ slug: marketing-campaign
6
+ name: Marketing Campaigns
7
+ description: "Track leads, manage campaigns, and let AI help run your outreach. Contacts, pipeline, tasks, and AI briefings — all connected."
8
+ icon: megaphone
9
+ color: "#E91E8C"
10
+ tags: [marketing, crm, outreach, leads, campaigns]
11
+ isPublic: true
12
+
13
+ workspace:
14
+ name: Marketing Campaign OS
15
+ description: "Track leads, manage campaigns, and let AI help run your outreach. Contacts, pipeline, tasks, and AI briefings — all connected."
16
+ subtype: marketing-campaign
17
+ visibility: pod_visible
18
+ capabilities:
19
+ - marketing.campaigns
20
+ - marketing.contacts
21
+ - marketing.leads
22
+ sourceRoles:
23
+ marketing: provider
24
+
25
+ profiles:
26
+ - slug: campaign
27
+ displayName: Campaign
28
+ icon: megaphone
29
+ color: pink
30
+ description: "A marketing campaign — email, social, event, content, or partnership"
31
+ semanticSlug: marketing.campaign
32
+ properties:
33
+ - slug: campaign-status
34
+ label: Status
35
+ valueType: string
36
+ inputType: select
37
+ enumValues: [planning, active, paused, completed, cancelled]
38
+ constraints: { defaultValue: planning }
39
+ - slug: campaign-channel
40
+ label: Channel
41
+ valueType: string
42
+ inputType: select
43
+ enumValues: [email, social, event, content, partnership, paid, organic, other]
44
+ - slug: campaign-goal
45
+ label: Goal
46
+ valueType: string
47
+ inputType: textarea
48
+ - slug: campaign-target-audience
49
+ label: Target Audience
50
+ valueType: string
51
+ inputType: textarea
52
+ - slug: campaign-start-date
53
+ label: Start Date
54
+ valueType: date
55
+ inputType: date
56
+ - slug: campaign-end-date
57
+ label: End Date
58
+ valueType: date
59
+ inputType: date
60
+ - slug: campaign-budget
61
+ label: Budget
62
+ valueType: number
63
+ inputType: number
64
+ - slug: campaign-lead-count
65
+ label: Lead Count
66
+ valueType: number
67
+ inputType: number
68
+ - slug: campaign-conversion-rate
69
+ label: Conversion Rate (%)
70
+ valueType: number
71
+ inputType: number
72
+ - slug: campaign-notes
73
+ label: Notes
74
+ valueType: string
75
+ inputType: textarea
76
+
77
+ - slug: contact
78
+ displayName: Contact
79
+ icon: users
80
+ color: blue
81
+ description: "A person in your marketing contact list."
82
+ semanticSlug: marketing.contact
83
+ properties:
84
+ - slug: contact-email
85
+ label: Email
86
+ valueType: string
87
+ inputType: email
88
+ - slug: contact-phone
89
+ label: Phone
90
+ valueType: string
91
+ inputType: tel
92
+ - slug: contact-company
93
+ label: Company
94
+ valueType: string
95
+ inputType: text
96
+ - slug: contact-title
97
+ label: Title
98
+ valueType: string
99
+ inputType: text
100
+ - slug: contact-status
101
+ label: Status
102
+ valueType: string
103
+ inputType: select
104
+ enumValues: [active, unsubscribed, bounced, archived]
105
+ constraints: { defaultValue: active }
106
+ - slug: contact-source
107
+ label: Source
108
+ valueType: string
109
+ inputType: select
110
+ enumValues: [website, referral, event, social, email, other]
111
+ - slug: contact-notes
112
+ label: Notes
113
+ valueType: string
114
+ inputType: textarea
115
+ - slug: contact-tags
116
+ label: Tags
117
+ valueType: string
118
+ inputType: text
119
+
120
+ - slug: lead
121
+ displayName: Lead
122
+ icon: user-plus
123
+ color: green
124
+ description: "A potential customer or partner contact in your pipeline"
125
+ semanticSlug: marketing.lead
126
+ properties:
127
+ - slug: lead-stage
128
+ label: Stage
129
+ valueType: string
130
+ inputType: select
131
+ enumValues: [new, contacted, interested, qualified, demo, proposal, converted, lost]
132
+ constraints: { defaultValue: new }
133
+ - slug: lead-source
134
+ label: Source
135
+ valueType: string
136
+ inputType: select
137
+ enumValues: [organic, referral, social, email, event, paid, content, partnership, other]
138
+ - slug: lead-email
139
+ label: Email
140
+ valueType: string
141
+ inputType: email
142
+ - slug: lead-company
143
+ label: Company
144
+ valueType: string
145
+ inputType: text
146
+ - slug: lead-title
147
+ label: Title
148
+ valueType: string
149
+ inputType: text
150
+ - slug: lead-linkedin
151
+ label: LinkedIn
152
+ valueType: string
153
+ inputType: url
154
+ - slug: lead-score
155
+ label: Lead Score
156
+ valueType: number
157
+ inputType: number
158
+ - slug: lead-campaign
159
+ label: Campaign
160
+ valueType: entity_id
161
+ targetProfileSlug: campaign
162
+ inputType: entity_select
163
+ - slug: lead-last-contacted
164
+ label: Last Contacted
165
+ valueType: date
166
+ inputType: date
167
+ - slug: lead-notes
168
+ label: Notes
169
+ valueType: string
170
+ inputType: textarea
171
+ - slug: lead-ai-summary
172
+ label: AI Summary
173
+ valueType: string
174
+ inputType: textarea
175
+
176
+ # CURATED views — not one per profile
177
+ views:
178
+ - name: Campaigns
179
+ slug: campaigns
180
+ type: kanban
181
+ scopeProfileSlug: campaign
182
+ groupBy: campaign-status
183
+ description: "Campaign kanban board by status."
184
+ - name: Contacts
185
+ slug: contacts
186
+ type: table
187
+ scopeProfileSlug: contact
188
+ description: "Marketing contacts in a table."
189
+ - name: Lead Pipeline
190
+ slug: lead-pipeline
191
+ type: kanban
192
+ scopeProfileSlug: lead
193
+ groupBy: lead-stage
194
+ description: "Lead pipeline kanban by stage."
195
+
196
+ # App reference — no custom app for marketing
197
+ app:
198
+ kind: stored
199
+ cellKey: entity-detail
200
+
201
+ # Layout config for browser sidebar
202
+ layout:
203
+ pinnedApps: [dashboard, data]
204
+ defaultView: Campaigns
205
+ defaultApp: null
206
+ sidebarItems:
207
+ - kind: view
208
+ viewName: Campaigns
209
+ label: Campaigns
210
+ icon: layout-kanban
211
+ - kind: view
212
+ viewName: Contacts
213
+ label: Contacts
214
+ icon: users
215
+ - kind: view
216
+ viewName: Lead Pipeline
217
+ label: Lead Pipeline
218
+ icon: user-plus
219
+
220
+ # Bento dashboard
221
+ bento:
222
+ viewName: Campaigns
223
+ blocks:
224
+ - kind: view
225
+ viewName: Contacts
226
+ pos: { x: 0, y: 0, w: 6, h: 5 }
227
+ - kind: view
228
+ viewName: Lead Pipeline
229
+ pos: { x: 6, y: 0, w: 6, h: 5 }
230
+
231
+ # Seed data
232
+ seedEntities:
233
+ - profileSlug: campaign
234
+ title: Product Launch
235
+ properties:
236
+ campaign-status: planning
237
+ campaign-channel: social
238
+ campaign-goal: "Generate 500 signups in the first week"
239
+ - profileSlug: campaign
240
+ title: Developer Outreach
241
+ properties:
242
+ campaign-status: planning
243
+ campaign-channel: email
244
+ campaign-goal: "Reach 1000 developers via newsletter"
@@ -0,0 +1,114 @@
1
+ # Personal Knowledge workspace template
2
+ # The "normal" default workspace — capture notes, bookmarks, articles; AI organizes.
3
+ # Uses base pod-scoped profiles (note, bookmark, article, project) — no custom app.
4
+
5
+ meta:
6
+ slug: personal
7
+ name: Personal Knowledge
8
+ description: Capture notes, bookmarks, and articles — your AI-organized second brain.
9
+ icon: brain
10
+ color: "#0891B2"
11
+ tags: [personal, knowledge, notes, second-brain]
12
+ isPublic: true
13
+
14
+ workspace:
15
+ name: Personal
16
+ description: Your personal knowledge base — capture anything, let AI organize it.
17
+ proposalId: personal-v1
18
+ subtype: personal
19
+ visibility: pod_visible
20
+ capabilities:
21
+ - knowledge.capture
22
+ - knowledge.organize
23
+
24
+ # Base pod-scoped profiles. Declared so the workspace's views resolve; the
25
+ # profiles themselves already exist pod-wide (no new schema created).
26
+ profiles:
27
+ - slug: note
28
+ displayName: Note
29
+ icon: file-text
30
+ color: amber
31
+ description: A quick note or idea.
32
+ properties:
33
+ - slug: tags
34
+ label: Tags
35
+ valueType: array
36
+ inputType: text
37
+ - slug: bookmark
38
+ displayName: Bookmark
39
+ icon: bookmark
40
+ color: blue
41
+ description: A saved URL or web reference.
42
+ properties:
43
+ - slug: url
44
+ label: URL
45
+ valueType: string
46
+ inputType: url
47
+ - slug: article
48
+ displayName: Article
49
+ icon: book-open
50
+ color: violet
51
+ description: A long-form article or reading-list item.
52
+ properties:
53
+ - slug: readStatus
54
+ label: Status
55
+ valueType: string
56
+ inputType: select
57
+ enumValues: [to-read, reading, read, archived]
58
+ - slug: url
59
+ label: Source URL
60
+ valueType: string
61
+ inputType: url
62
+ - slug: project
63
+ displayName: Project
64
+ icon: folder
65
+ color: green
66
+ description: A project grouping related notes and references.
67
+ properties:
68
+ - slug: status
69
+ label: Status
70
+ valueType: string
71
+ inputType: select
72
+ enumValues: [active, paused, done, archived]
73
+
74
+ views:
75
+ - name: Feed
76
+ type: masonry
77
+ description: Everything you captured, newest first.
78
+ - name: Reading List
79
+ type: table
80
+ scopeProfileSlug: article
81
+ description: Articles to read, in progress, and read.
82
+ - name: Bookmarks
83
+ type: grid
84
+ scopeProfileSlug: bookmark
85
+ description: Saved web references.
86
+
87
+ # No dedicated app — lands on the dashboard/feed (the universal data surface).
88
+ app:
89
+ kind: stored
90
+ cellKey: entity-detail
91
+
92
+ layout:
93
+ pinnedApps: [dashboard, data, chat]
94
+ defaultView: Feed
95
+ defaultApp: null
96
+ sidebarItems:
97
+ - kind: view
98
+ viewName: Feed
99
+ label: Feed
100
+ icon: layout-dashboard
101
+ - kind: view
102
+ viewName: Reading List
103
+ label: Reading List
104
+ icon: book-open
105
+ - kind: view
106
+ viewName: Bookmarks
107
+ label: Bookmarks
108
+ icon: bookmark
109
+
110
+ seedEntities:
111
+ - profileSlug: note
112
+ title: Welcome to your second brain
113
+ properties:
114
+ tags: [getting-started]