vibebusiness 1.2.83 → 1.2.86
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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +21 -21
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/kpis/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/card/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/implement/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/transition/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/implementations/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/kpis/refresh/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/[id]/publish/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/goals/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/goals/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/goals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/ideas/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/ideas/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page.js +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/investors/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/investors/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/public/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/public/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +1 -1
- package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/social.html +1 -1
- package/.next/standalone/.next/server/app/social.rsc +1 -1
- package/.next/standalone/.next/server/app/updates/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/updates/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/updates/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/updates/new.html +1 -1
- package/.next/standalone/.next/server/app/updates/new.rsc +1 -1
- package/.next/standalone/.next/server/app/updates/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/updates/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +18 -18
- package/.next/standalone/.next/server/chunks/6299.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/data/goals.json +10 -2
- package/.next/standalone/data/social.json +19 -4
- package/.next/standalone/data/social.json.backup +179 -0
- package/.next/standalone/data/videos/ai-gets-business-feed.mp4 +0 -0
- package/.next/standalone/data/videos/idea-graveyard-feed.mp4 +0 -0
- package/.next/standalone/data/videos/lonely-founder-feed.mp4 +0 -0
- package/.next/standalone/data/videos/staging/ai-gets-business.json +55 -0
- package/.next/standalone/data/videos/staging/idea-graveyard.json +61 -0
- package/.next/standalone/data/videos/staging/lonely-founder.json +60 -0
- package/.next/standalone/data/videos/staging/while-you-slept-v2-fast.json +67 -0
- package/.next/standalone/data/videos/staging/while-you-slept-v3-dynamic.json +67 -0
- package/.next/standalone/data/videos/while-you-slept-v2-fast-feed.mp4 +0 -0
- package/.next/standalone/data/videos/while-you-slept-v3-dynamic-feed.mp4 +0 -0
- package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/1.pack +0 -0
- package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/3.pack +0 -0
- package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/index.pack +0 -0
- package/.next/standalone/node_modules/.cache/webpack/remotion-production-4.0.428/c99d23d3548030c8ff8de678c71eeb15/index.pack.old +0 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/scripts/analyze.ts +7 -4
- package/.next/static/chunks/app/page-d325a95479e7c453.js +1 -0
- package/dist/bin/vibebusiness.js +8 -0
- package/dist/scripts/analyze.js +7 -4
- package/dist/scripts/heartbeat.js +10 -1
- package/package.json +1 -1
- package/scripts/lib/video/compositions/DemoVideo.tsx +134 -50
- package/scripts/lib/video/compositions/Root.tsx +21 -2
- package/.next/static/chunks/app/page-3635a292b3d471c0.js +0 -1
- /package/.next/static/{wJT1h-ifHTtYVlXZG2PFS → fBNMzUSuIGwJGs9aNW81h}/_buildManifest.js +0 -0
- /package/.next/static/{wJT1h-ifHTtYVlXZG2PFS → fBNMzUSuIGwJGs9aNW81h}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
{
|
|
2
|
+
"last_updated": "2026-02-23T18:33:09.360Z",
|
|
3
|
+
"platform": "x",
|
|
4
|
+
"username": "@luisgmey",
|
|
5
|
+
"credentials_valid": true,
|
|
6
|
+
"drafts": [
|
|
7
|
+
{
|
|
8
|
+
"id": "draft-a53d0edc",
|
|
9
|
+
"text": "6 months ago I had 47 product ideas and shipped 0 of them.\n\nThis week I shipped 6 updates without writing a single line of code.\n\nI built an AI product manager that runs on autopilot.\n\nHere's exactly how it works 🧵",
|
|
10
|
+
"source": "thread",
|
|
11
|
+
"source_ref": null,
|
|
12
|
+
"status": "published",
|
|
13
|
+
"created_at": "2026-02-22T21:40:50.506Z",
|
|
14
|
+
"published_at": "2026-02-23T02:19:56.184Z",
|
|
15
|
+
"tweet_id": "2025757480148471873",
|
|
16
|
+
"tweet_url": "https://x.com/i/status/2025757480148471873",
|
|
17
|
+
"is_thread": true,
|
|
18
|
+
"thread_tweets": [
|
|
19
|
+
"6 months ago I had 47 product ideas and shipped 0 of them.\n\nThis week I shipped 6 updates without writing a single line of code.\n\nI built an AI product manager that runs on autopilot.\n\nHere's exactly how it works 🧵",
|
|
20
|
+
"The real indie hacker problem isn't building.\n\nIt's deciding *what* to build.\n\n20 ideas → 0 shipped. Every week.\n\nAnalysis paralysis kills more products than bad code.\n\nI was stuck here for 18 months.",
|
|
21
|
+
"So I built VibeBusiness.\n\nAn autonomous AI that:\n→ Analyzes your codebase\n→ Reviews your metrics\n→ Decides what to build next\n→ Implements it\n→ Ships it\n→ Verifies the results\n\nThe full PM loop. Zero humans required.",
|
|
22
|
+
"It runs on a heartbeat pattern.\n\nEvery few hours it checks:\n• What's broken?\n• What's growing?\n• What would move the needle most?\n\nThen it acts. Creates branches. Opens PRs. Ships code.\n\nThis is what 'AI-native' actually means.",
|
|
23
|
+
"This week alone it shipped:\n→ Stripe payment integration\n→ OG meta tags for link previews\n→ Social proof section\n→ npm README update\n→ Hero copy improvements\n\nAll from one command: `vibebusiness heartbeat`",
|
|
24
|
+
"It's live on npm right now.\n\n`npm install -g vibebusiness`\n\nConnects to your repo in 60 seconds.\n\nI need 20 indie hackers to beta test.\n\nShip code solo and struggle with prioritization? DM me. 👋\n\n#buildinpublic",
|
|
25
|
+
"What's the #1 thing blocking you from shipping more?\n\nA) Too many ideas, can't prioritize\nB) Not enough coding time\nC) Stuck in planning/research hell\nD) Fear of shipping something broken\n\nDrop your answer 👇"
|
|
26
|
+
],
|
|
27
|
+
"scheduled_date": "2026-02-23",
|
|
28
|
+
"thread_tweet_ids": [
|
|
29
|
+
"2025757480148471873",
|
|
30
|
+
"2025757481171898631",
|
|
31
|
+
"2025757482304311582",
|
|
32
|
+
"2025757483331965181",
|
|
33
|
+
"2025757484418236637",
|
|
34
|
+
"2025757485512958117",
|
|
35
|
+
"2025757486553153776"
|
|
36
|
+
],
|
|
37
|
+
"self_reply_id": "2025757490470605165"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "draft-301d9eae",
|
|
41
|
+
"text": "Hot take: most AI coding tools just make you faster at the wrong things.\n\nFaster at writing code ≠ faster at shipping.\n\nVibeBusiness skips 'how do I build this?' and starts with 'what should I build next?'\n\nDifferent layer. Way bigger leverage.\n\n#buildinpublic",
|
|
42
|
+
"source": "insight",
|
|
43
|
+
"source_ref": null,
|
|
44
|
+
"status": "draft",
|
|
45
|
+
"created_at": "2026-02-22T21:40:50.506Z",
|
|
46
|
+
"published_at": null,
|
|
47
|
+
"tweet_id": null,
|
|
48
|
+
"tweet_url": null,
|
|
49
|
+
"media_paths": null,
|
|
50
|
+
"scheduled_date": "2026-02-24"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "draft-3da42b09",
|
|
54
|
+
"text": "Stripe just went live in VibeBusiness. 🎉\n\nThe AI now factors in:\n→ Your MRR and churn\n→ Who's paying (and who's dropping off)\n→ Where the funnel breaks\n\nMost tools show you the data.\nThis one decides what to build based on it.\n\nDay 4 of 90. #buildinpublic",
|
|
55
|
+
"source": "insight",
|
|
56
|
+
"source_ref": null,
|
|
57
|
+
"status": "draft",
|
|
58
|
+
"created_at": "2026-02-22T21:40:50.506Z",
|
|
59
|
+
"published_at": null,
|
|
60
|
+
"tweet_id": null,
|
|
61
|
+
"tweet_url": null,
|
|
62
|
+
"media_paths": null,
|
|
63
|
+
"scheduled_date": "2026-02-25"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "draft-138c8256",
|
|
67
|
+
"text": "I run `vibebusiness heartbeat` 3x per day.\n\nEach time: AI scans my codebase, checks metrics, picks the highest-leverage task, and ships it.\n\nHere's what one heartbeat actually looks like — step by step 🧵",
|
|
68
|
+
"source": "thread",
|
|
69
|
+
"source_ref": null,
|
|
70
|
+
"status": "draft",
|
|
71
|
+
"created_at": "2026-02-22T21:40:50.506Z",
|
|
72
|
+
"published_at": null,
|
|
73
|
+
"tweet_id": null,
|
|
74
|
+
"tweet_url": null,
|
|
75
|
+
"is_thread": true,
|
|
76
|
+
"thread_tweets": [
|
|
77
|
+
"I run `vibebusiness heartbeat` 3x per day.\n\nEach time: AI scans my codebase, checks metrics, picks the highest-leverage task, and ships it.\n\nHere's what one heartbeat actually looks like — step by step 🧵",
|
|
78
|
+
"Step 1: Read state.\n\nThe AI reads TODO.md, STATUS.md, MEMORY.md, and all data files.\n\nIt knows:\n• What's been done\n• What's blocked\n• Current metrics\n• What's been tried before\n\nContext is everything.",
|
|
79
|
+
"Step 2: Reason.\n\nClaude asks:\n→ What's the most important thing right now?\n→ Can I execute this autonomously?\n→ What's the expected impact?\n\nIt outputs a structured decision with a confidence score.\n\nNo vibes. Just logic.",
|
|
80
|
+
"Step 3: Execute.\n\nIf autonomous → implements directly\nIf human-needed → flags to Blocked\n\nNo wasted cycles. No hallucinated shell commands.\n\nThere's a 3-layer safety gate to stop the AI from acting on things it can't actually do.",
|
|
81
|
+
"Step 4: Verify + update state.\n\nAfter shipping, it updates STATUS.md.\n\nNext heartbeat starts with full context.\n\nThis is continuous improvement — without a PM, a standup, or a quarterly OKR session.",
|
|
82
|
+
"The hardest part wasn't the code.\n\nIt was teaching the AI to know when NOT to act.\n\nMost AI agents fail here — they try everything and hallucinate through blockers.\n\nWhat's your biggest fear about autonomous AI agents? 👇\n\n#buildinpublic"
|
|
83
|
+
],
|
|
84
|
+
"scheduled_date": "2026-02-26"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "draft-1dffa7b2",
|
|
88
|
+
"text": "Week 1 of building VibeBusiness in public: done.\n\nShipped:\n✅ Stripe payments live\n✅ npm package published\n✅ Landing page + OG tags\n✅ Social proof section\n\nNext milestone: 20 beta users.\n\nSolo dev who can't prioritize what to build? I want you.\n\nWhat's your stack? 👇 #buildinpu...",
|
|
89
|
+
"source": "insight",
|
|
90
|
+
"source_ref": null,
|
|
91
|
+
"status": "draft",
|
|
92
|
+
"created_at": "2026-02-22T21:40:50.506Z",
|
|
93
|
+
"published_at": null,
|
|
94
|
+
"tweet_id": null,
|
|
95
|
+
"tweet_url": null,
|
|
96
|
+
"media_paths": null,
|
|
97
|
+
"scheduled_date": "2026-02-27"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "draft-aab9b760",
|
|
101
|
+
"text": "Just shipped: Update npm README with landing page URL, value prop, and install instructions. The npm README is the #1 acquisition surface for CLI tools — add the landing URL, one-liner value prop, and copy-paste install instructions now that the landing page is live. #buildinp...",
|
|
102
|
+
"source": "ship",
|
|
103
|
+
"source_ref": "idea-readme-landing-url",
|
|
104
|
+
"status": "draft",
|
|
105
|
+
"created_at": "2026-02-23T16:29:54.275Z",
|
|
106
|
+
"published_at": null,
|
|
107
|
+
"tweet_id": null,
|
|
108
|
+
"tweet_url": null,
|
|
109
|
+
"media_paths": null
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "draft-872eedce",
|
|
113
|
+
"text": "Hot take: AI coding tools are solving the wrong problem. You don't need better code. You need to research → decide → ship → measure. That's the full loop competitors leave empty. Which step breaks your workflow? #buildinpublic",
|
|
114
|
+
"source": "update",
|
|
115
|
+
"source_ref": null,
|
|
116
|
+
"status": "draft",
|
|
117
|
+
"created_at": "2026-02-23T17:31:44.849Z",
|
|
118
|
+
"published_at": null,
|
|
119
|
+
"tweet_id": null,
|
|
120
|
+
"tweet_url": null,
|
|
121
|
+
"media_paths": null
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "draft-6f24fde6",
|
|
125
|
+
"text": "5 ships in one week by analyzing my own codebase with VibeBusiness. OG cards, Stripe ready, landing page optimization, npm docs, social proof. The irony: autonomous AI improving itself. #buildinpublic",
|
|
126
|
+
"source": "digest",
|
|
127
|
+
"source_ref": null,
|
|
128
|
+
"status": "draft",
|
|
129
|
+
"created_at": "2026-02-23T17:33:48.602Z",
|
|
130
|
+
"published_at": null,
|
|
131
|
+
"tweet_id": null,
|
|
132
|
+
"tweet_url": null,
|
|
133
|
+
"media_paths": null
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"id": "draft-d0e06c85",
|
|
137
|
+
"text": "you can now turn your ideas into paid products in 60 seconds. added stripe integration, og tags, npm readme overhaul, and more. #buildinpublic",
|
|
138
|
+
"source": "digest",
|
|
139
|
+
"source_ref": null,
|
|
140
|
+
"status": "draft",
|
|
141
|
+
"created_at": "2026-02-23T17:36:45.426Z",
|
|
142
|
+
"published_at": null,
|
|
143
|
+
"tweet_id": null,
|
|
144
|
+
"tweet_url": null,
|
|
145
|
+
"media_paths": null
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "draft-c54d247c",
|
|
149
|
+
"text": "Hot take: indie hackers don't have a shipping problem.\n\nWe have a prioritization problem.\n\nThe backlog is always full. The judgment about what actually matters? That's the broken part.\n\n#buildinpublic",
|
|
150
|
+
"source": "insight",
|
|
151
|
+
"source_ref": null,
|
|
152
|
+
"status": "draft",
|
|
153
|
+
"created_at": "2026-02-23T18:31:22.616Z",
|
|
154
|
+
"published_at": null,
|
|
155
|
+
"tweet_id": null,
|
|
156
|
+
"tweet_url": null,
|
|
157
|
+
"media_paths": null
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "draft-56a9f5f5",
|
|
161
|
+
"text": "The bottleneck isn't your code velocity.\n\nIt's the 2-3 hours every Sunday you spend deciding WHAT to build next.\n\nShip speed is capped by decision speed.\n\nMost builders optimize the wrong constraint.",
|
|
162
|
+
"source": "insight",
|
|
163
|
+
"source_ref": null,
|
|
164
|
+
"status": "draft",
|
|
165
|
+
"created_at": "2026-02-23T18:33:09.360Z",
|
|
166
|
+
"published_at": null,
|
|
167
|
+
"tweet_id": null,
|
|
168
|
+
"tweet_url": null,
|
|
169
|
+
"media_paths": null
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"metrics": {
|
|
173
|
+
"followers_count": 335,
|
|
174
|
+
"post_streak_days": 1,
|
|
175
|
+
"total_posts": 1,
|
|
176
|
+
"last_post_date": "2026-02-23"
|
|
177
|
+
},
|
|
178
|
+
"last_find_replies_at": "2026-02-23T03:31:19.001Z"
|
|
179
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "ai-gets-business",
|
|
3
|
+
"title": "AI That Gets Business",
|
|
4
|
+
"variation": "v1",
|
|
5
|
+
"variant": "dynamic",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"type": "cover",
|
|
9
|
+
"title": "Lost in Translation",
|
|
10
|
+
"subtitle": "Generic AI vs. VibeBusiness",
|
|
11
|
+
"background_style": "dark-gradient"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "terminal",
|
|
15
|
+
"title": "Generic AI (ChatGPT)",
|
|
16
|
+
"content": "YOU: \"What should I build next?\"\n\nAI: \"Here are 10 feature ideas:\n1. Dark mode\n2. Mobile app\n3. Social login\n[...]\"",
|
|
17
|
+
"background_style": "terminal"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "key_point",
|
|
21
|
+
"title": "AI MODELS DON'T GET YOUR BUSINESS",
|
|
22
|
+
"content": "They don't know your metrics, your users, or your strategy.",
|
|
23
|
+
"background_style": "dark-glow"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "terminal",
|
|
27
|
+
"title": "VibeBusiness",
|
|
28
|
+
"content": "YOU: \"What should I build next?\"\n\nVIBE: Reading MEMORY.md...\nAnalyzing Stripe revenue, PostHog behavior...\n\n→ 72% trial churn at onboarding step 3\n→ Last 4 features added 0 activation lift\n\nShip onboarding redesign. Pause feature work.",
|
|
29
|
+
"background_style": "terminal"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "notification",
|
|
33
|
+
"title": "Context Matters",
|
|
34
|
+
"content": "VibeBusiness knows your metrics, history, and strategy",
|
|
35
|
+
"background_style": "notification"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"type": "cta",
|
|
39
|
+
"title": "Context changes everything.",
|
|
40
|
+
"cta_text": "npx vibebusiness",
|
|
41
|
+
"background_style": "gradient"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"audio": {
|
|
45
|
+
"src": "tech-innovation.mp3",
|
|
46
|
+
"volume": 0.25,
|
|
47
|
+
"fadeInSeconds": 0.5,
|
|
48
|
+
"fadeOutSeconds": 1.0
|
|
49
|
+
},
|
|
50
|
+
"theme": {
|
|
51
|
+
"background_style": "terminal-dark",
|
|
52
|
+
"primary_color": "#10b981",
|
|
53
|
+
"text_color": "#ffffff"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "idea-graveyard",
|
|
3
|
+
"title": "The 20-Idea Graveyard",
|
|
4
|
+
"variation": "v1",
|
|
5
|
+
"variant": "dynamic",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"type": "cover",
|
|
9
|
+
"title": "You have 20 ideas",
|
|
10
|
+
"subtitle": "All of them are buried",
|
|
11
|
+
"background_style": "dark-gradient"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "kanban",
|
|
15
|
+
"title": "Your Graveyard",
|
|
16
|
+
"items": [
|
|
17
|
+
"Ideas\n(20)",
|
|
18
|
+
"Research\n(0)",
|
|
19
|
+
"Building\n(0)",
|
|
20
|
+
"Shipped\n(0)"
|
|
21
|
+
],
|
|
22
|
+
"background_style": "kanban"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "key_point",
|
|
26
|
+
"title": "THE TRUTH",
|
|
27
|
+
"content": "You're not building. You're deciding what to build.",
|
|
28
|
+
"background_style": "dark-glow"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "terminal",
|
|
32
|
+
"title": "VibeBusiness Analyzing",
|
|
33
|
+
"content": "$ vibe analyze --all-ideas\n\nScanning 20 ideas...\nScoring by impact × confidence × effort...\n\n✓ Top 3 ideas identified",
|
|
34
|
+
"background_style": "terminal"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "pipeline",
|
|
38
|
+
"title": "From Buried to Shipped",
|
|
39
|
+
"content": "20 ideas → Research → Score → Top 3 → Ship",
|
|
40
|
+
"label": "+34% activation",
|
|
41
|
+
"background_style": "pipeline"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"type": "cta",
|
|
45
|
+
"title": "Stop collecting ideas. Start shipping them.",
|
|
46
|
+
"cta_text": "npx vibebusiness",
|
|
47
|
+
"background_style": "gradient"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"audio": {
|
|
51
|
+
"src": "tech-innovation.mp3",
|
|
52
|
+
"volume": 0.25,
|
|
53
|
+
"fadeInSeconds": 0.3,
|
|
54
|
+
"fadeOutSeconds": 0.8
|
|
55
|
+
},
|
|
56
|
+
"theme": {
|
|
57
|
+
"background_style": "terminal-dark",
|
|
58
|
+
"primary_color": "#10b981",
|
|
59
|
+
"text_color": "#ffffff"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "lonely-founder",
|
|
3
|
+
"title": "The Lonely Founder",
|
|
4
|
+
"variation": "v1",
|
|
5
|
+
"variant": "dynamic",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"type": "cover",
|
|
9
|
+
"title": "2:34 AM. You're still awake.",
|
|
10
|
+
"subtitle": "Making decisions. Alone.",
|
|
11
|
+
"background_style": "dark-gradient"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "quote",
|
|
15
|
+
"content": "Should I build this feature? Or that one? Who do I even ask?",
|
|
16
|
+
"author": "Every solo founder",
|
|
17
|
+
"background_style": "dark-minimal"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "key_point",
|
|
21
|
+
"title": "NO CO-FOUNDER. NO PM. NO MENTOR.",
|
|
22
|
+
"content": "Every strategic decision falls on you.",
|
|
23
|
+
"background_style": "dark-glow"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "terminal",
|
|
27
|
+
"title": "VibeBusiness",
|
|
28
|
+
"content": "$ vibe chat \"should I build mobile app or improve onboarding?\"\n\nAnalyzing your metrics...\n\n→ 72% of trials don't complete onboarding\n→ Mobile app has 0 demand signals\n\nShip onboarding fixes first.",
|
|
29
|
+
"background_style": "terminal"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "kanban",
|
|
33
|
+
"title": "Your Board",
|
|
34
|
+
"items": [
|
|
35
|
+
"Doing\nFix onboarding",
|
|
36
|
+
"Ready\n(0)",
|
|
37
|
+
"Backlog\n(12)",
|
|
38
|
+
"Ideas\n(20)"
|
|
39
|
+
],
|
|
40
|
+
"background_style": "kanban"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "cta",
|
|
44
|
+
"title": "You're not alone anymore.",
|
|
45
|
+
"cta_text": "npx vibebusiness",
|
|
46
|
+
"background_style": "gradient"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"audio": {
|
|
50
|
+
"src": "tech-innovation.mp3",
|
|
51
|
+
"volume": 0.2,
|
|
52
|
+
"fadeInSeconds": 0.5,
|
|
53
|
+
"fadeOutSeconds": 1.0
|
|
54
|
+
},
|
|
55
|
+
"theme": {
|
|
56
|
+
"background_style": "terminal-dark",
|
|
57
|
+
"primary_color": "#10b981",
|
|
58
|
+
"text_color": "#ffffff"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "while-you-slept-v2-fast",
|
|
3
|
+
"title": "While You Slept (Fast)",
|
|
4
|
+
"variation": "v2-fast",
|
|
5
|
+
"variant": "fast",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"type": "cover",
|
|
9
|
+
"title": "11:47 PM",
|
|
10
|
+
"subtitle": "You close the laptop.",
|
|
11
|
+
"background_style": "dark-gradient"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "terminal",
|
|
15
|
+
"title": "Heartbeat Running",
|
|
16
|
+
"content": "Scanning competitors...\nBenchmarking metrics...\nDetecting opportunities...",
|
|
17
|
+
"background_style": "terminal"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "key_point",
|
|
21
|
+
"title": "3:17 AM",
|
|
22
|
+
"content": "VibeBusiness is working",
|
|
23
|
+
"background_style": "dark-glow"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "notification",
|
|
27
|
+
"title": "6:30 AM",
|
|
28
|
+
"content": "7 new ideas ready for review",
|
|
29
|
+
"background_style": "notification"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "kanban",
|
|
33
|
+
"title": "Your Kanban Board",
|
|
34
|
+
"items": [
|
|
35
|
+
"Inbox\n(12)",
|
|
36
|
+
"Researching\n(3)",
|
|
37
|
+
"Ready\n(7)",
|
|
38
|
+
"In Progress\n(4)"
|
|
39
|
+
],
|
|
40
|
+
"background_style": "kanban"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "pipeline",
|
|
44
|
+
"title": "Full Lifecycle",
|
|
45
|
+
"content": "Approve → Branch → PR → Merged → Verified",
|
|
46
|
+
"label": "+12% conversion",
|
|
47
|
+
"background_style": "pipeline"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"type": "cta",
|
|
51
|
+
"title": "Stop guessing. Start shipping.",
|
|
52
|
+
"cta_text": "npm install -g vibebusiness",
|
|
53
|
+
"background_style": "gradient"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"audio": {
|
|
57
|
+
"src": "tech-innovation.mp3",
|
|
58
|
+
"volume": 0.3,
|
|
59
|
+
"fadeInSeconds": 0.3,
|
|
60
|
+
"fadeOutSeconds": 0.8
|
|
61
|
+
},
|
|
62
|
+
"theme": {
|
|
63
|
+
"background_style": "terminal-dark",
|
|
64
|
+
"primary_color": "#10b981",
|
|
65
|
+
"text_color": "#ffffff"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "while-you-slept-v3-dynamic",
|
|
3
|
+
"title": "While You Slept (Dynamic)",
|
|
4
|
+
"variation": "v3-dynamic",
|
|
5
|
+
"variant": "dynamic",
|
|
6
|
+
"slides": [
|
|
7
|
+
{
|
|
8
|
+
"type": "cover",
|
|
9
|
+
"title": "11:47 PM",
|
|
10
|
+
"subtitle": "You close the laptop.",
|
|
11
|
+
"background_style": "dark-gradient"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "terminal",
|
|
15
|
+
"title": "Heartbeat Running",
|
|
16
|
+
"content": "Scanning competitors...\nBenchmarking metrics...\nDetecting opportunities...",
|
|
17
|
+
"background_style": "terminal"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "key_point",
|
|
21
|
+
"title": "3:17 AM",
|
|
22
|
+
"content": "VibeBusiness is working",
|
|
23
|
+
"background_style": "dark-glow"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "notification",
|
|
27
|
+
"title": "6:30 AM",
|
|
28
|
+
"content": "7 new ideas ready for review",
|
|
29
|
+
"background_style": "notification"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "kanban",
|
|
33
|
+
"title": "Your Kanban Board",
|
|
34
|
+
"items": [
|
|
35
|
+
"Inbox\n(12)",
|
|
36
|
+
"Researching\n(3)",
|
|
37
|
+
"Ready\n(7)",
|
|
38
|
+
"In Progress\n(4)"
|
|
39
|
+
],
|
|
40
|
+
"background_style": "kanban"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "pipeline",
|
|
44
|
+
"title": "Full Lifecycle",
|
|
45
|
+
"content": "Approve → Branch → PR → Merged → Verified",
|
|
46
|
+
"label": "+12% conversion",
|
|
47
|
+
"background_style": "pipeline"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"type": "cta",
|
|
51
|
+
"title": "Stop guessing. Start shipping.",
|
|
52
|
+
"cta_text": "npm install -g vibebusiness",
|
|
53
|
+
"background_style": "gradient"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"audio": {
|
|
57
|
+
"src": "tech-innovation.mp3",
|
|
58
|
+
"volume": 0.25,
|
|
59
|
+
"fadeInSeconds": 0.5,
|
|
60
|
+
"fadeOutSeconds": 1.0
|
|
61
|
+
},
|
|
62
|
+
"theme": {
|
|
63
|
+
"background_style": "terminal-dark",
|
|
64
|
+
"primary_color": "#10b981",
|
|
65
|
+
"text_color": "#ffffff"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -19,7 +19,7 @@ import * as fs from 'fs';
|
|
|
19
19
|
import * as path from 'path';
|
|
20
20
|
import { v4 as uuidv4 } from 'uuid';
|
|
21
21
|
import { getAnalysisPrompt } from '../src/lib/prompts';
|
|
22
|
-
import type { AnalystConfig as ImportedAnalystConfig, BusinessConfig } from '../src/lib/types';
|
|
22
|
+
import type { AnalystConfig as ImportedAnalystConfig, BusinessConfig, Priority, SizeEstimate } from '../src/lib/types';
|
|
23
23
|
import { atomicWriteFileSync } from './lib/json-lock';
|
|
24
24
|
import { requireClaudeCLI } from './lib/ai-provider';
|
|
25
25
|
import { logError, logWarn } from './lib/logger';
|
|
@@ -488,9 +488,12 @@ export function parseIdeas(response: string, sessionId: string): BusinessIdea[]
|
|
|
488
488
|
title: idea.title || 'Untitled Idea',
|
|
489
489
|
summary: idea.summary || '',
|
|
490
490
|
category: idea.category || 'product',
|
|
491
|
-
priority: idea.priority
|
|
492
|
-
effort: idea.effort
|
|
493
|
-
impact:
|
|
491
|
+
priority: (['critical', 'high', 'medium', 'low'] as const).includes(idea.priority as Priority) ? idea.priority as Priority : 'medium',
|
|
492
|
+
effort: (['xs', 's', 'm', 'l', 'xl'] as const).includes(idea.effort as SizeEstimate) ? idea.effort as SizeEstimate : 'm',
|
|
493
|
+
impact: (['xs', 's', 'm', 'l', 'xl'] as const).includes(idea.impact as SizeEstimate) ? idea.impact as SizeEstimate : (() => {
|
|
494
|
+
if (idea.impact) logError('analyze:parseIdeas', new Error(`invalid impact "${idea.impact}" for idea "${idea.title}" — defaulting to "m"`));
|
|
495
|
+
return 'm' as SizeEstimate;
|
|
496
|
+
})(),
|
|
494
497
|
context: idea.context || '',
|
|
495
498
|
rationale: idea.rationale || '',
|
|
496
499
|
implementation_plan: idea.implementation_plan || '',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{7075:function(e,t,s){Promise.resolve().then(s.bind(s,4067)),Promise.resolve().then(s.bind(s,1259)),Promise.resolve().then(s.bind(s,8825))},4067:function(e,t,s){"use strict";s.d(t,{default:function(){return o}});var a=s(7437),r=s(9376),l=s(6221),i=s(9801),n=s(4372),c=s(6076),d=s(8623);function o(e){let{stats:t}=e,s=(0,r.useRouter)();return(0,a.jsx)("header",{className:"px-6 py-4 bg-white border-b border-slate-200",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"text-2xl font-bold text-slate-900",children:"Idea Dashboard"}),(0,a.jsxs)("div",{className:"flex items-center gap-6 mt-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-slate-600",children:[(0,a.jsx)(l.Z,{className:"w-4 h-4"}),(0,a.jsxs)("span",{children:[t.total," total"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-amber-600",children:[(0,a.jsx)(i.Z,{className:"w-4 h-4"}),(0,a.jsxs)("span",{children:[t.inbox," in inbox"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-violet-600",children:[(0,a.jsx)(n.Z,{className:"w-4 h-4"}),(0,a.jsxs)("span",{children:[t.inProgress," in progress"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-emerald-600",children:[(0,a.jsx)(c.Z,{className:"w-4 h-4"}),(0,a.jsxs)("span",{children:[t.shipped," shipped"]})]})]})]}),(0,a.jsx)(d.Z,{onAnalysisComplete:()=>{s.refresh()}})]})})}},1259:function(e,t,s){"use strict";s.d(t,{default:function(){return f}});var a=s(7437),r=s(7648),l=s(9376),i=s(5466),n=s(2048),c=s(8896),d=s(8220),o=s(2718),x=s(5621),m=s(8728),u=s(2222),h=s(2023),b=s(1994),g=s(257);let p=[{href:"/",label:"Dashboard",icon:(0,a.jsx)(i.Z,{className:"w-5 h-5"})},{href:"/roadmap",label:"Roadmap",icon:(0,a.jsx)(n.Z,{className:"w-5 h-5"})},{href:"/goals",label:"Goals",icon:(0,a.jsx)(c.Z,{className:"w-5 h-5"})},{href:"/hypotheses",label:"Hypotheses",icon:(0,a.jsx)(d.Z,{className:"w-5 h-5"})},{href:"/social",label:"Social",icon:(0,a.jsx)(o.Z,{className:"w-5 h-5"})},{href:"/sessions",label:"Sessions",icon:(0,a.jsx)(x.Z,{className:"w-5 h-5"})},{href:"/settings",label:"Settings",icon:(0,a.jsx)(m.Z,{className:"w-5 h-5"})}];function f(e){let{children:t}=e,s=(0,l.usePathname)();return(0,a.jsxs)("div",{className:"min-h-screen flex",children:[(0,a.jsxs)("aside",{className:"w-64 bg-slate-900 text-white flex flex-col",children:[(0,a.jsx)("div",{className:"p-4 border-b border-slate-700",children:(0,a.jsxs)(r.default,{href:"/",className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:"w-10 h-10 bg-emerald-500 rounded-lg flex items-center justify-center",children:(0,a.jsx)(u.Z,{className:"w-6 h-6 text-white"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"font-bold text-lg leading-tight",children:"Analyst"}),(0,a.jsx)("p",{className:"text-xs text-slate-400",children:g.env.NEXT_PUBLIC_PRODUCT_NAME||"Business"})]})]})}),(0,a.jsx)("nav",{className:"flex-1 p-4",children:(0,a.jsx)("ul",{className:"space-y-1",children:p.map(e=>{let t="/"===e.href?"/"===s:s.startsWith(e.href);return(0,a.jsx)("li",{children:(0,a.jsxs)(r.default,{href:e.href,className:(0,b.Z)("flex items-center gap-3 px-3 py-2 rounded-lg transition-colors",t?"bg-slate-800 text-white":"text-slate-400 hover:text-white hover:bg-slate-800"),children:[e.icon,(0,a.jsx)("span",{children:e.label})]})},e.href)})})}),(0,a.jsx)("div",{className:"p-4 border-t border-slate-700",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs text-slate-500",children:[(0,a.jsx)(h.Z,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Powered by Claude"})]})})]}),(0,a.jsx)("main",{className:"flex-1 overflow-auto",children:t})]})}},8623:function(e,t,s){"use strict";s.d(t,{Z:function(){return o}});var a=s(7437),r=s(2265),l=s(1817),i=s(3276),n=s(1671),c=s(9322),d=s(1994);function o(e){let{onAnalysisComplete:t}=e,[s,o]=(0,r.useState)(!1),[x,m]=(0,r.useState)(!1),[u,h]=(0,r.useState)(null),b=async e=>{m(!0),h(null);try{let s=await fetch("/api/analyze",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:e})}),a=await s.json();a.success?(h({success:!0,message:"Generated ".concat(a.ideas_count," new ideas")}),null==t||t()):h({success:!1,message:a.error||"Analysis failed"})}catch(e){h({success:!1,message:"Failed to start analysis"})}finally{m(!1),setTimeout(()=>{h(null),o(!1)},3e3)}};return(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("button",{onClick:()=>o(!s),disabled:x,className:(0,d.Z)("btn btn-primary gap-2",x&&"opacity-75 cursor-wait"),children:x?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.Z,{className:"w-4 h-4 animate-spin"}),(0,a.jsx)("span",{children:"Analyzing..."})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.Z,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Analyze Now"})]})}),s&&!x&&(0,a.jsxs)("div",{className:"absolute right-0 mt-2 w-56 bg-white rounded-lg shadow-lg border border-slate-200 py-2 z-10 animate-slide-in",children:[(0,a.jsxs)("button",{onClick:()=>b("quick"),className:"w-full px-4 py-2 text-left hover:bg-slate-50 transition-colors",children:[(0,a.jsx)("div",{className:"font-medium text-slate-900",children:"Quick Scan"}),(0,a.jsx)("div",{className:"text-xs text-slate-500",children:"Recent changes, TODOs, errors"})]}),(0,a.jsxs)("button",{onClick:()=>b("deep"),className:"w-full px-4 py-2 text-left hover:bg-slate-50 transition-colors",children:[(0,a.jsx)("div",{className:"font-medium text-slate-900",children:"Deep Review"}),(0,a.jsx)("div",{className:"text-xs text-slate-500",children:"Architecture, tech debt, security"})]}),(0,a.jsxs)("button",{onClick:()=>b("metrics"),className:"w-full px-4 py-2 text-left hover:bg-slate-50 transition-colors",children:[(0,a.jsx)("div",{className:"font-medium text-slate-900",children:"Metrics Review"}),(0,a.jsx)("div",{className:"text-xs text-slate-500",children:"Funnels, conversions, drop-offs"})]}),(0,a.jsxs)("button",{onClick:()=>b("seo"),className:"w-full px-4 py-2 text-left hover:bg-slate-50 transition-colors",children:[(0,a.jsx)("div",{className:"font-medium text-slate-900",children:"SEO Audit"}),(0,a.jsx)("div",{className:"text-xs text-slate-500",children:"Blog performance, technical SEO"})]})]}),u&&(0,a.jsx)("div",{className:(0,d.Z)("absolute right-0 mt-2 px-4 py-3 rounded-lg shadow-lg animate-slide-in",u.success?"bg-emerald-50 border border-emerald-200":"bg-red-50 border border-red-200"),children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[u.success?(0,a.jsx)(n.Z,{className:"w-4 h-4 text-emerald-600"}):(0,a.jsx)(c.Z,{className:"w-4 h-4 text-red-600"}),(0,a.jsx)("span",{className:(0,d.Z)("text-sm font-medium",u.success?"text-emerald-800":"text-red-800"),children:u.message})]})})]})}},8825:function(e,t,s){"use strict";s.d(t,{default:function(){return C}});var a=s(7437),r=s(2265),l=s(3247),i=s(740),n=s(2489),c=s(1994),d=s(7648),o=s(9322),x=s(265),m=s(6858),u=s(5051),h=s(1239),b=s(3417),g=s(8896),p=s(4286),f=s(6646),j=s(6153);function v(e){let{priority:t}=e;switch(t){case"critical":return(0,a.jsx)(o.Z,{className:"w-3 h-3"});case"high":return(0,a.jsx)(x.Z,{className:"w-3 h-3"});case"medium":return(0,a.jsx)(m.Z,{className:"w-3 h-3"});case"low":return(0,a.jsx)(u.Z,{className:"w-3 h-3"});default:return null}}function N(e){var t,s;let{size:r,label:l}=e;return(0,a.jsx)("span",{className:"size-badge",title:l,children:null!==(s=null!==(t=j.bi[r])&&void 0!==t?t:r)&&void 0!==s?s:"—"})}function y(e){var t,s,r,l,i;let{idea:n,compact:o=!1}=e,m=null!==(t=n.comments)&&void 0!==t?t:[],u=null!==(s=n.tags)&&void 0!==s?s:[],y=m.length>0;return(0,a.jsx)(d.default,{href:"/ideas/".concat(n.id),children:(0,a.jsxs)("div",{className:"idea-card",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsxs)("span",{className:(0,c.Z)("priority-badge",null!==(r=j.Gs[n.priority])&&void 0!==r?r:"bg-slate-100 text-slate-600"),children:[(0,a.jsx)(v,{priority:n.priority}),(0,a.jsx)("span",{className:"ml-1",children:null!==(i=null!==(l=j.rF[n.priority])&&void 0!==l?l:n.priority)&&void 0!==i?i:"—"})]}),(0,a.jsx)("span",{className:(0,c.Z)("category-badge",j.pG[n.category]),children:j.Hs[n.category]})]}),(0,a.jsx)("h3",{className:"font-medium text-slate-900 text-sm leading-snug mb-1",children:n.title}),!o&&(0,a.jsx)("p",{className:"text-xs text-slate-500 line-clamp-2 mb-2",children:n.summary}),(0,a.jsxs)("div",{className:"flex items-center justify-between mt-2 pt-2 border-t border-slate-100",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1",title:"Effort",children:[(0,a.jsx)(h.Z,{className:"w-3 h-3 text-slate-400"}),(0,a.jsx)(N,{size:n.effort,label:"Effort"})]}),(0,a.jsx)("span",{className:"text-slate-300",children:"/"}),(0,a.jsxs)("div",{className:"flex items-center gap-1",title:"Impact",children:[(0,a.jsx)(x.Z,{className:"w-3 h-3 text-slate-400"}),(0,a.jsx)(N,{size:n.impact,label:"Impact"})]})]}),y&&(0,a.jsxs)("div",{className:"flex items-center gap-1 text-slate-400",children:[(0,a.jsx)(b.Z,{className:"w-3 h-3"}),(0,a.jsx)("span",{className:"text-xs",children:m.length})]})]}),n.goal_id&&(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-2 text-emerald-600",children:[(0,a.jsx)(g.Z,{className:"w-3 h-3"}),(0,a.jsx)("span",{className:"text-[10px]",children:"Goal aligned"})]}),"shipped"===n.stage&&n.verification&&"pending"!==n.verification.status&&(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,a.jsx)(p.Z,{className:"w-3 h-3"}),(0,a.jsx)("span",{className:(0,c.Z)("text-[10px] px-1 py-0.5 rounded",j.aR[n.verification.status]),children:j.Wb[n.verification.status]})]}),n.verification_status&&(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,a.jsx)(f.Z,{className:"w-3 h-3"}),(0,a.jsx)("span",{className:(0,c.Z)("text-[10px] px-1 py-0.5 rounded","proceed"===n.verification_status&&"bg-green-100 text-green-700","extend"===n.verification_status&&"bg-blue-100 text-blue-700","investigate"===n.verification_status&&"bg-yellow-100 text-yellow-700","stop"===n.verification_status&&"bg-red-100 text-red-700"),children:n.verification_status.toUpperCase()})]}),!o&&u.length>0&&(0,a.jsxs)("div",{className:"flex flex-wrap gap-1 mt-2",children:[u.slice(0,3).map(e=>(0,a.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 bg-slate-100 text-slate-500 rounded",children:e},e)),u.length>3&&(0,a.jsxs)("span",{className:"text-[10px] text-slate-400",children:["+",u.length-3]})]})]})})}var w=s(8623);let Z=["product","ux_design","growth","performance","tech_debt","security","infrastructure","content","analytics","integration"],_=["critical","high","medium","low"],k=["xs","s","m","l","xl"];function C(e){let{ideas:t}=e,[s,d]=(0,r.useState)({categories:[],priorities:[],efforts:[],search:""}),[o,x]=(0,r.useState)(!1),[m,u]=(0,r.useState)(null),h=(0,r.useMemo)(()=>{let e={all:t.length};return t.forEach(t=>{e[t.category]=(e[t.category]||0)+1}),e},[t]),b=(0,r.useMemo)(()=>t.filter(e=>{if(m&&e.category!==m)return!1;if(s.search){let t=s.search.toLowerCase();if(!(e.title.toLowerCase().includes(t)||e.summary.toLowerCase().includes(t)||e.tags.some(e=>e.toLowerCase().includes(t))))return!1}return(!(s.categories.length>0)||!!s.categories.includes(e.category))&&(!(s.priorities.length>0)||!!s.priorities.includes(e.priority))&&(!(s.efforts.length>0)||!!s.efforts.includes(e.effort))}),[t,s,m]),g=(0,r.useMemo)(()=>{let e={};return j.G.forEach(t=>{e[t]=[]}),b.forEach(t=>{j.G.includes(t.stage)&&e[t.stage].push(t)}),e},[b]),p=s.categories.length+s.priorities.length+s.efforts.length,f=null!==m||""!==s.search||p>0,v=(e,t)=>{d(s=>{let a=s[e],r=a.includes(t)?a.filter(e=>e!==t):[...a,t];return{...s,[e]:r}})};return(0,a.jsxs)("div",{className:"h-full flex flex-col",children:[(0,a.jsx)("div",{className:"px-6 py-3 bg-slate-50 border-b border-slate-200 overflow-x-auto",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)("button",{onClick:()=>u(null),className:(0,c.Z)("px-3 py-1.5 text-sm font-medium rounded-full whitespace-nowrap transition-colors",null===m?"bg-slate-800 text-white":"bg-white text-slate-600 hover:bg-slate-100 border border-slate-200"),children:["All",(0,a.jsxs)("span",{className:"ml-1.5 text-xs opacity-70",children:["(",h.all,")"]})]}),Z.map(e=>(0,a.jsxs)("button",{onClick:()=>u(e),className:(0,c.Z)("px-3 py-1.5 text-sm font-medium rounded-full whitespace-nowrap transition-colors",m===e?j.pG[e]:"bg-white text-slate-600 hover:bg-slate-100 border border-slate-200"),children:[j.Hs[e],h[e]>0&&(0,a.jsxs)("span",{className:"ml-1.5 text-xs opacity-70",children:["(",h[e],")"]})]},e))]})}),(0,a.jsxs)("div",{className:"px-6 py-4 bg-white border-b border-slate-200",children:[(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,a.jsx)(l.Z,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-400"}),(0,a.jsx)("input",{type:"text",placeholder:"Search ideas...",value:s.search,onChange:e=>d(t=>({...t,search:e.target.value})),className:"input pl-10"})]}),(0,a.jsxs)("button",{onClick:()=>x(!o),className:(0,c.Z)("btn btn-secondary gap-2",o&&"bg-slate-200"),children:[(0,a.jsx)(i.Z,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Filters"}),p>0&&(0,a.jsx)("span",{className:"px-1.5 py-0.5 bg-emerald-500 text-white text-xs rounded-full",children:p})]}),p>0&&(0,a.jsxs)("button",{onClick:()=>{d({categories:[],priorities:[],efforts:[],search:""})},className:"btn btn-ghost gap-1 text-sm",children:[(0,a.jsx)(n.Z,{className:"w-4 h-4"}),"Clear"]})]}),o&&(0,a.jsxs)("div",{className:"mt-4 flex flex-wrap gap-6 animate-slide-in",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-slate-500 mb-2",children:"Category"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1",children:Z.map(e=>(0,a.jsx)("button",{onClick:()=>v("categories",e),className:(0,c.Z)("px-2 py-1 text-xs rounded border transition-colors",s.categories.includes(e)?"bg-emerald-100 border-emerald-300 text-emerald-800":"bg-white border-slate-200 text-slate-600 hover:border-slate-300"),children:j.Hs[e]},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-slate-500 mb-2",children:"Priority"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1",children:_.map(e=>(0,a.jsx)("button",{onClick:()=>v("priorities",e),className:(0,c.Z)("px-2 py-1 text-xs rounded border transition-colors",s.priorities.includes(e)?"bg-emerald-100 border-emerald-300 text-emerald-800":"bg-white border-slate-200 text-slate-600 hover:border-slate-300"),children:j.rF[e]},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-slate-500 mb-2",children:"Effort"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1",children:k.map(e=>(0,a.jsx)("button",{onClick:()=>v("efforts",e),className:(0,c.Z)("px-2 py-1 text-xs rounded border transition-colors",s.efforts.includes(e)?"bg-emerald-100 border-emerald-300 text-emerald-800":"bg-white border-slate-200 text-slate-600 hover:border-slate-300"),children:j.bi[e]},e))})]})]})]}),0!==t.length||f?(0,a.jsx)("div",{className:"flex-1 overflow-x-auto p-6",children:(0,a.jsx)("div",{className:"flex gap-4 h-full min-w-max",children:j.G.map(e=>(0,a.jsxs)("div",{className:"w-72 flex flex-col",children:[(0,a.jsxs)("div",{className:"kanban-column-header",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:(0,c.Z)("stage-indicator",j.lv[e])}),(0,a.jsx)("span",{className:"font-medium text-slate-700",children:j.yb[e]})]}),(0,a.jsx)("span",{className:"text-sm text-slate-400",children:g[e].length})]}),(0,a.jsx)("div",{className:"kanban-column flex-1 overflow-y-auto",children:0===g[e].length?(0,a.jsx)("div",{className:"text-center py-8 text-slate-400 text-sm",children:"No ideas"}):g[e].map(e=>(0,a.jsx)(y,{idea:e},e.id))})]},e))})}):(0,a.jsx)("div",{className:"flex-1 flex items-center justify-center p-6",children:(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center h-96 text-center gap-6",children:[(0,a.jsx)("div",{className:"text-6xl",children:"\uD83E\uDD16"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-2xl font-bold text-gray-900 mb-2",children:"Your AI analyst is ready"}),(0,a.jsx)("p",{className:"text-gray-500 max-w-md",children:"Run your first vibe cycle to generate prioritized improvement ideas for your codebase."})]}),(0,a.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,a.jsx)(w.Z,{}),(0,a.jsxs)("p",{className:"text-sm text-gray-400",children:["Or run: ",(0,a.jsx)("code",{className:"bg-gray-100 px-2 py-0.5 rounded",children:"vibebusiness analyze --type=quick"})]})]}),(0,a.jsxs)("div",{className:"mt-4 opacity-40 pointer-events-none border border-dashed border-gray-300 rounded-lg p-4 w-72 text-left",children:[(0,a.jsx)("div",{className:"text-xs font-medium text-gray-400 uppercase mb-1",children:"Example idea"}),(0,a.jsx)("div",{className:"font-medium text-gray-700 text-sm",children:"Add empty-state onboarding UI to Kanban"}),(0,a.jsx)("div",{className:"text-xs text-gray-400 mt-1",children:"ux_design \xb7 XS effort \xb7 high impact"})]})]})})]})}},6153:function(e,t,s){"use strict";s.d(t,{G:function(){return n},GK:function(){return _},Gs:function(){return o},Hs:function(){return a},PN:function(){return h},PW:function(){return w},Q_:function(){return b},R$:function(){return N},Vr:function(){return x},Wb:function(){return u},aR:function(){return m},bi:function(){return c},en:function(){return v},i2:function(){return j},kT:function(){return g},l5:function(){return p},lE:function(){return y},lv:function(){return i},pG:function(){return r},rF:function(){return d},tV:function(){return f},tl:function(){return Z},xP:function(){return k},yb:function(){return l}});let a={product:"Product",ux_design:"UX/Design",growth:"Growth",performance:"Performance",tech_debt:"Tech Debt",security:"Security",infrastructure:"Infrastructure",content:"Content",analytics:"Analytics",integration:"Integration"},r={product:"bg-blue-100 text-blue-800",ux_design:"bg-purple-100 text-purple-800",growth:"bg-green-100 text-green-800",performance:"bg-orange-100 text-orange-800",tech_debt:"bg-yellow-100 text-yellow-800",security:"bg-red-100 text-red-800",infrastructure:"bg-gray-100 text-gray-800",content:"bg-pink-100 text-pink-800",analytics:"bg-cyan-100 text-cyan-800",integration:"bg-indigo-100 text-indigo-800"},l={inbox:"Inbox",under_review:"Under Review",approved:"Approved",in_progress:"In Progress",testing:"Testing",shipped:"Shipped",deferred:"Deferred",rejected:"Rejected",rolled_back:"Rolled Back"},i={inbox:"bg-amber-500",under_review:"bg-blue-500",approved:"bg-emerald-500",in_progress:"bg-violet-500",testing:"bg-cyan-500",shipped:"bg-green-500",deferred:"bg-gray-500",rejected:"bg-red-500",rolled_back:"bg-orange-500"},n=["inbox","under_review","approved","in_progress","testing","shipped"],c={xs:"XS",s:"S",m:"M",l:"L",xl:"XL"},d={critical:"Critical",high:"High",medium:"Medium",low:"Low"},o={critical:"bg-red-100 text-red-800 border-red-300",high:"bg-orange-100 text-orange-800 border-orange-300",medium:"bg-yellow-100 text-yellow-800 border-yellow-300",low:"bg-gray-100 text-gray-800 border-gray-300"},x={codebase_analysis:"Codebase Analysis",metrics_review:"Metrics Review",market_research:"Market Research",seo_audit:"SEO Audit",manual:"Manual"},m={pending:"bg-slate-100 text-slate-700",validated:"bg-emerald-100 text-emerald-800",needs_investigation:"bg-amber-100 text-amber-800",inconclusive:"bg-slate-100 text-slate-600",invalidated:"bg-red-100 text-red-800"},u={pending:"Pending",validated:"Validated",needs_investigation:"Needs Investigation",inconclusive:"Inconclusive",invalidated:"Invalidated"},h={ship:"Ship",update:"Update",milestone:"Milestone",digest:"Digest",manual:"Manual",thread:"Thread",insight:"Insight"},b={ship:"bg-green-100 text-green-800",update:"bg-blue-100 text-blue-800",milestone:"bg-amber-100 text-amber-800",digest:"bg-purple-100 text-purple-800",manual:"bg-slate-100 text-slate-800",thread:"bg-indigo-100 text-indigo-800",insight:"bg-cyan-100 text-cyan-800"},g={acquisition:"Acquisition",activation:"Activation",retention:"Retention",revenue:"Revenue",referral:"Referral"},p={acquisition:"bg-blue-100 text-blue-800",activation:"bg-emerald-100 text-emerald-800",retention:"bg-purple-100 text-purple-800",revenue:"bg-amber-100 text-amber-800",referral:"bg-pink-100 text-pink-800"},f={on_track:"On Track",at_risk:"At Risk",behind:"Behind",achieved:"Achieved"},j={on_track:"bg-emerald-100 text-emerald-800 border-emerald-300",at_risk:"bg-amber-100 text-amber-800 border-amber-300",behind:"bg-red-100 text-red-800 border-red-300",achieved:"bg-blue-100 text-blue-800 border-blue-300"},v={manual:"Manual",rest_api:"REST API",posthog:"PostHog",firestore:"Firestore",stripe:"Stripe",whatsapp:"WhatsApp"},N={stated:"Stated",testing:"Testing",validated:"Validated",invalidated:"Invalidated",deferred:"Deferred"},y={stated:"bg-slate-100 text-slate-800 border-slate-300",testing:"bg-amber-100 text-amber-800 border-amber-300",validated:"bg-emerald-100 text-emerald-800 border-emerald-300",invalidated:"bg-red-100 text-red-800 border-red-300",deferred:"bg-slate-100 text-slate-500 border-slate-200"},w={acquisition:"Acquisition",engagement:"Engagement",conversion:"Conversion",monetization:"Monetization"},Z={acquisition:"bg-blue-100 text-blue-800",engagement:"bg-purple-100 text-purple-800",conversion:"bg-amber-100 text-amber-800",monetization:"bg-emerald-100 text-emerald-800"},_={planned:"Planned",active:"Active",completed:"Completed",paused:"Paused"},k={planned:"bg-slate-100 text-slate-700 border-slate-300",active:"bg-blue-100 text-blue-800 border-blue-300",completed:"bg-emerald-100 text-emerald-800 border-emerald-300",paused:"bg-amber-100 text-amber-800 border-amber-300"}}},function(e){e.O(0,[972,851,971,117,744],function(){return e(e.s=7075)}),_N_E=e.O()}]);
|
package/dist/bin/vibebusiness.js
CHANGED
|
@@ -599,8 +599,16 @@ async function writeJsonFile(filePath, data) {
|
|
|
599
599
|
}
|
|
600
600
|
async function getIdeas() {
|
|
601
601
|
const store = await readJsonFile(getFilePath("ideas.json"), { ideas: [] });
|
|
602
|
+
const VALID_PRIORITIES = ["critical", "high", "medium", "low"];
|
|
603
|
+
const VALID_SIZES = ["xs", "s", "m", "l", "xl"];
|
|
602
604
|
return store.ideas.map((idea) => ({
|
|
603
605
|
...idea,
|
|
606
|
+
stage: idea.stage ?? idea.status ?? "inbox",
|
|
607
|
+
priority: VALID_PRIORITIES.includes(idea.priority) ? idea.priority : "medium",
|
|
608
|
+
impact: VALID_SIZES.includes(idea.impact) ? idea.impact : "m",
|
|
609
|
+
effort: VALID_SIZES.includes(idea.effort) ? idea.effort : "s",
|
|
610
|
+
comments: idea.comments ?? [],
|
|
611
|
+
tags: idea.tags ?? [],
|
|
604
612
|
epic_id: idea.epic_id ?? null,
|
|
605
613
|
implementation: {
|
|
606
614
|
...idea.implementation,
|