business-as-code 2.1.1 → 2.1.3

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 (52) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +8 -0
  3. package/LICENSE +21 -0
  4. package/dist/canvas/activities.d.ts +19 -0
  5. package/dist/canvas/activities.d.ts.map +1 -0
  6. package/dist/canvas/activities.js +20 -0
  7. package/dist/canvas/activities.js.map +1 -0
  8. package/dist/canvas/channels.d.ts +20 -0
  9. package/dist/canvas/channels.d.ts.map +1 -0
  10. package/dist/canvas/channels.js +21 -0
  11. package/dist/canvas/channels.js.map +1 -0
  12. package/dist/canvas/relationships.d.ts +20 -0
  13. package/dist/canvas/relationships.d.ts.map +1 -0
  14. package/dist/canvas/relationships.js +21 -0
  15. package/dist/canvas/relationships.js.map +1 -0
  16. package/dist/canvas/resources.d.ts +20 -0
  17. package/dist/canvas/resources.d.ts.map +1 -0
  18. package/dist/canvas/resources.js +30 -0
  19. package/dist/canvas/resources.js.map +1 -0
  20. package/dist/canvas/revenue.d.ts +22 -0
  21. package/dist/canvas/revenue.d.ts.map +1 -0
  22. package/dist/canvas/revenue.js +30 -0
  23. package/dist/canvas/revenue.js.map +1 -0
  24. package/dist/canvas/segments.d.ts +20 -0
  25. package/dist/canvas/segments.d.ts.map +1 -0
  26. package/dist/canvas/segments.js +28 -0
  27. package/dist/canvas/segments.js.map +1 -0
  28. package/dist/canvas/types.d.ts +232 -0
  29. package/dist/canvas/types.d.ts.map +1 -0
  30. package/dist/canvas/types.js +8 -0
  31. package/dist/canvas/types.js.map +1 -0
  32. package/dist/canvas/value.d.ts +20 -0
  33. package/dist/canvas/value.d.ts.map +1 -0
  34. package/dist/canvas/value.js +21 -0
  35. package/dist/canvas/value.js.map +1 -0
  36. package/dist/entities/planning.d.ts +0 -87
  37. package/package.json +13 -13
  38. package/src/canvas/activities.ts +32 -0
  39. package/src/canvas/canvas.ts +482 -0
  40. package/src/canvas/channels.ts +34 -0
  41. package/src/canvas/costs.ts +43 -0
  42. package/src/canvas/economics.ts +99 -0
  43. package/src/canvas/index.ts +206 -0
  44. package/src/canvas/partnerships.ts +34 -0
  45. package/src/canvas/projections.ts +141 -0
  46. package/src/canvas/relationships.ts +34 -0
  47. package/src/canvas/resources.ts +43 -0
  48. package/src/canvas/revenue.ts +56 -0
  49. package/src/canvas/segments.ts +42 -0
  50. package/src/canvas/types.ts +363 -0
  51. package/src/canvas/value.ts +34 -0
  52. package/tests/canvas.test.ts +842 -0
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Business Model Canvas Types
3
+ *
4
+ * TypeScript types for the 9 building blocks of the Business Model Canvas
5
+ * plus unit economics and financial projections.
6
+ */
7
+
8
+ // =============================================================================
9
+ // Customer Segments
10
+ // =============================================================================
11
+
12
+ export type CustomerSegmentType =
13
+ | 'mass-market'
14
+ | 'niche'
15
+ | 'segmented'
16
+ | 'diversified'
17
+ | 'multi-sided'
18
+
19
+ export interface CustomerSegment {
20
+ name: string
21
+ description?: string
22
+ type: CustomerSegmentType
23
+ characteristics?: string[]
24
+ size?: number
25
+ revenuePerCustomer?: number
26
+ expectedPenetration?: number
27
+ potential?: number
28
+ }
29
+
30
+ // =============================================================================
31
+ // Value Propositions
32
+ // =============================================================================
33
+
34
+ export type ValueType =
35
+ | 'newness'
36
+ | 'performance'
37
+ | 'customization'
38
+ | 'getting-job-done'
39
+ | 'design'
40
+ | 'brand-status'
41
+ | 'price'
42
+ | 'cost-reduction'
43
+ | 'risk-reduction'
44
+ | 'accessibility'
45
+ | 'convenience'
46
+
47
+ export interface ValueProposition {
48
+ name: string
49
+ description?: string
50
+ valueType?: ValueType
51
+ benefits: string[]
52
+ targetSegments?: string[]
53
+ quantifiedValue?: string
54
+ segmentFit?: Record<string, number>
55
+ }
56
+
57
+ // =============================================================================
58
+ // Channels
59
+ // =============================================================================
60
+
61
+ export type ChannelType = 'direct' | 'indirect' | 'partner' | 'digital'
62
+
63
+ export type ChannelPhase =
64
+ | 'awareness'
65
+ | 'evaluation'
66
+ | 'purchase'
67
+ | 'delivery'
68
+ | 'support'
69
+
70
+ export interface Channel {
71
+ name: string
72
+ type: ChannelType
73
+ phases?: ChannelPhase[]
74
+ costPerAcquisition?: number
75
+ partnerType?: string
76
+ revenueShare?: number
77
+ conversionRate?: number
78
+ }
79
+
80
+ // =============================================================================
81
+ // Customer Relationships
82
+ // =============================================================================
83
+
84
+ export type RelationshipType =
85
+ | 'personal-assistance'
86
+ | 'dedicated-assistance'
87
+ | 'self-service'
88
+ | 'automated'
89
+ | 'community'
90
+ | 'co-creation'
91
+
92
+ export interface CustomerRelationship {
93
+ name: string
94
+ type: RelationshipType
95
+ segment?: string
96
+ touchFrequency?: string
97
+ automationLevel?: number
98
+ supportChannels?: string[]
99
+ platforms?: string[]
100
+ }
101
+
102
+ // =============================================================================
103
+ // Revenue Streams
104
+ // =============================================================================
105
+
106
+ export type RevenueType = 'recurring' | 'one-time' | 'transaction'
107
+
108
+ export type PricingModel =
109
+ | 'subscription'
110
+ | 'usage-based'
111
+ | 'tiered'
112
+ | 'freemium'
113
+ | 'fixed'
114
+ | 'dynamic'
115
+ | 'auction'
116
+ | 'licensing'
117
+
118
+ export interface PricingTier {
119
+ name: string
120
+ price: number
121
+ features?: string[]
122
+ }
123
+
124
+ export interface RevenueStream {
125
+ name: string
126
+ type: RevenueType
127
+ pricingModel: PricingModel
128
+ price?: number
129
+ billingCycle?: 'monthly' | 'quarterly' | 'annual'
130
+ pricePerUnit?: number
131
+ unitName?: string
132
+ tiers?: PricingTier[]
133
+ activeCustomers?: number
134
+ annualRevenue?: number
135
+ }
136
+
137
+ // =============================================================================
138
+ // Key Resources
139
+ // =============================================================================
140
+
141
+ export type ResourceType = 'physical' | 'intellectual' | 'human' | 'financial'
142
+
143
+ export interface KeyResource {
144
+ name: string
145
+ type: ResourceType
146
+ cost?: number
147
+ depreciation?: string
148
+ protectionType?: string
149
+ headcount?: number
150
+ averageCost?: number
151
+ totalCost?: number
152
+ }
153
+
154
+ // =============================================================================
155
+ // Key Activities
156
+ // =============================================================================
157
+
158
+ export type ActivityCategory = 'production' | 'problem-solving' | 'platform'
159
+
160
+ export interface KeyActivity {
161
+ name: string
162
+ category: ActivityCategory
163
+ description?: string
164
+ resources?: string[]
165
+ metrics?: string[]
166
+ uptime?: number
167
+ }
168
+
169
+ // =============================================================================
170
+ // Key Partnerships
171
+ // =============================================================================
172
+
173
+ export type PartnershipType =
174
+ | 'strategic-alliance'
175
+ | 'coopetition'
176
+ | 'joint-venture'
177
+ | 'buyer-supplier'
178
+
179
+ export interface KeyPartnership {
180
+ name: string
181
+ type: PartnershipType
182
+ purpose?: string
183
+ benefits?: string[]
184
+ contractValue?: number
185
+ contractTerm?: number
186
+ sharedActivities?: string[]
187
+ }
188
+
189
+ // =============================================================================
190
+ // Cost Structure
191
+ // =============================================================================
192
+
193
+ export type CostCategory = 'fixed' | 'variable' | 'semi-variable'
194
+
195
+ export interface CostItem {
196
+ name: string
197
+ category: CostCategory
198
+ amount?: number
199
+ period?: 'monthly' | 'quarterly' | 'annual'
200
+ unitCost?: number
201
+ unitName?: string
202
+ volumeEstimate?: number
203
+ estimatedTotal?: number
204
+ }
205
+
206
+ // =============================================================================
207
+ // Business Model Canvas
208
+ // =============================================================================
209
+
210
+ export interface BusinessModelCanvas {
211
+ name: string
212
+ customerSegments: CustomerSegment[]
213
+ valuePropositions: ValueProposition[]
214
+ channels: Channel[]
215
+ customerRelationships: CustomerRelationship[]
216
+ revenueStreams: RevenueStream[]
217
+ keyResources: KeyResource[]
218
+ keyActivities: KeyActivity[]
219
+ keyPartnerships: KeyPartnership[]
220
+ costStructure: CostItem[]
221
+ metadata?: Record<string, unknown>
222
+ }
223
+
224
+ export interface CanvasValidation {
225
+ isComplete: boolean
226
+ missingBlocks: string[]
227
+ warnings: string[]
228
+ }
229
+
230
+ export interface CanvasSummary {
231
+ totalAddressableMarket: number
232
+ projectedAnnualRevenue: number
233
+ totalAnnualCosts: number
234
+ projectedProfit: number
235
+ }
236
+
237
+ // =============================================================================
238
+ // Unit Economics
239
+ // =============================================================================
240
+
241
+ export interface UnitEconomics {
242
+ ltv: number
243
+ cac: number
244
+ ltvCacRatio: number
245
+ paybackMonths: number
246
+ }
247
+
248
+ export interface LTVInput {
249
+ averageRevenuePerUser: number
250
+ grossMargin: number
251
+ churnRate: number
252
+ }
253
+
254
+ export interface CACInput {
255
+ marketingSpend: number
256
+ salesSpend: number
257
+ newCustomers: number
258
+ }
259
+
260
+ export interface UnitEconomicsInput extends LTVInput, CACInput {}
261
+
262
+ export interface Margins {
263
+ grossMargin: number
264
+ grossProfit: number
265
+ operatingMargin: number
266
+ operatingIncome: number
267
+ netMargin: number
268
+ netIncome: number
269
+ }
270
+
271
+ export interface MarginsInput {
272
+ revenue: number
273
+ cogs: number
274
+ operatingExpenses: number
275
+ taxes?: number
276
+ }
277
+
278
+ // =============================================================================
279
+ // Financial Projections
280
+ // =============================================================================
281
+
282
+ export interface MonthlyRevenue {
283
+ month: number
284
+ mrr: number
285
+ arr: number
286
+ }
287
+
288
+ export interface RevenueProjection {
289
+ months: MonthlyRevenue[]
290
+ endingMRR: number
291
+ endingARR: number
292
+ }
293
+
294
+ export interface MonthlyCost {
295
+ month: number
296
+ fixedCosts: number
297
+ variableCosts: number
298
+ totalCost: number
299
+ }
300
+
301
+ export interface CostProjection {
302
+ months: MonthlyCost[]
303
+ totalCosts: number
304
+ }
305
+
306
+ export interface MonthlyProfitability {
307
+ month: number
308
+ revenue: number
309
+ costs: number
310
+ profit: number
311
+ cumulativeProfit: number
312
+ }
313
+
314
+ export interface ProfitabilityProjection {
315
+ months: MonthlyProfitability[]
316
+ breakEvenMonth: number | undefined
317
+ totalProfit: number
318
+ }
319
+
320
+ export interface RevenueProjectionInput {
321
+ startingMRR: number
322
+ monthlyGrowthRate: number
323
+ months: number
324
+ }
325
+
326
+ export interface CostProjectionInput {
327
+ fixedCosts: number
328
+ variableCostPerUser: number
329
+ startingUsers: number
330
+ monthlyUserGrowth: number
331
+ months: number
332
+ }
333
+
334
+ export interface ProfitabilityProjectionInput {
335
+ startingMRR: number
336
+ monthlyGrowthRate: number
337
+ fixedCosts: number
338
+ grossMargin: number
339
+ months: number
340
+ }
341
+
342
+ // =============================================================================
343
+ // Canvas Analysis
344
+ // =============================================================================
345
+
346
+ export interface CanvasStrengthAnalysis {
347
+ overallScore: number
348
+ strengths: string[]
349
+ weaknesses: string[]
350
+ blockScores: Record<string, number>
351
+ }
352
+
353
+ export interface CanvasGaps {
354
+ criticalGaps: string[]
355
+ warnings: string[]
356
+ recommendations: string[]
357
+ }
358
+
359
+ export interface FinancialProjection {
360
+ revenue: RevenueProjection
361
+ costs: CostProjection
362
+ profitability: ProfitabilityProjection
363
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Value Propositions
3
+ *
4
+ * Functions for creating and working with value propositions.
5
+ */
6
+
7
+ import type { ValueProposition, ValueType } from './types.js'
8
+
9
+ export interface CreateValuePropositionInput {
10
+ name: string
11
+ description?: string
12
+ valueType?: ValueType
13
+ benefits?: string[]
14
+ targetSegments?: string[]
15
+ quantifiedValue?: string
16
+ segmentFit?: Record<string, number>
17
+ }
18
+
19
+ /**
20
+ * Create a value proposition
21
+ */
22
+ export function createValueProposition(input: CreateValuePropositionInput): ValueProposition {
23
+ const { name, description, valueType, benefits = [], targetSegments, quantifiedValue, segmentFit } = input
24
+
25
+ return {
26
+ name,
27
+ description,
28
+ valueType,
29
+ benefits,
30
+ targetSegments,
31
+ quantifiedValue,
32
+ segmentFit,
33
+ }
34
+ }