Vibecode Grow or Die

track this build4 phases, 12 steps, beginner friendly
KINDA · weekend project
price $24.08/moyou'd save $288.96/yrbuild time weekend for one stack, ongoing work for trustworthy connectorscategory 📊 analyticsreplaced by 0 people

An agent can build the honest personal version: a first-party tracker, a Stripe webhook, an OpenAI usage wrapper, and a SQLite join keyed by your own account ID. That is enough to show which customers make money. The paid product starts earning its fee when the inputs stop being tidy. Analytics exports drift, refunds arrive late, model prices change, streaming calls fail after consuming tokens, and anonymous visitors do not naturally become the same people who paid. A weekend build can give one founder a useful ledger for one stack. Matching Grow or Die's connector coverage, SDKs, missing-data discipline, retention, and production reliability is ongoing analytics infrastructure, not a prompt.

the project pack5 files · written for this build, step by step
README.md
# Grow or Die · indie build

A one-product profit dashboard whose hard problems are recording model usage that the provider only reports when asked, absorbing payment events that arrive duplicated and out of order, and carrying unknown data through every calculation instead of rounding it to zero.

Estimated effort: **weekend**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Runtime | Node 22 with TypeScript and Fastify, server-rendered pages, one process | a dashboard for one person does not need a build pipeline and a client framework |
| Storage | SQLite in one file, append-only ledgers, no destructive updates | every number on the page must be traceable to rows that were never rewritten |
| Payments | Stripe webhooks with signature verification and event-id idempotency | delivery is at least once and order is not guaranteed, which the schema has to assume |
| Model usage | A thin wrapper returning the provider response unchanged, recording usage beside it | if the wrapper changes the response people stop using it and the data stops arriving |
| Prices | A versioned catalogue with effective dates, cost computed on the server | prices change and yesterday's calls must keep yesterday's cost |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Runs the dashboard, the tracker endpoint and the webhook receiver.
  - Get it: nodejs.org or your version manager.
  - Verify: node --version prints v22 or higher
- [ ] **A Stripe account with webhooks and a signing secret** · free to set up; transaction fees apply to real payments
  - Why: Revenue arrives as events, and the whole ledger design exists because those events repeat and arrive out of order.
  - Get it: Create a webhook endpoint for the events you care about and copy the signing secret.
  - Verify: The command line tool forwards a test event that your endpoint verifies
- [ ] **A model provider key for the usage wrapper** · pay per token
  - Why: The wrapper is the only place token counts can be observed, and the streaming behaviour is the reason this phase exists.
  - Get it: A key with a spend limit set in the provider console.
  - Verify: A streamed call records the same token counts as the same call unstreamed
- [ ] **Your own stable account identifier** · free
  - Why: Every join in this build is on this column, and choosing it after the tracker ships means reprocessing everything.
  - Get it: Decide what an account is in your product, how the identifier is generated, and where your application knows it.
  - Verify: The identify call is wired into your product and the column never contains an address
- [ ] **A price catalogue you maintain by hand** · free
  - Why: Costs are computed from it and nobody is going to tell you when a figure changes.
  - Get it: Copy the current published prices for the models you use, with the date and the source URL, into the catalogue file.
  - Verify: Every model appearing in usage has a price entry covering that date

## Quick start

Follow Phase 1 in `BUILD_PLAN.md`; it creates the project.

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Hosted analytics connectors.
- Automatic price discovery.
- Cross-device identity stitching.
- Multi-currency reporting.
- ready-made GA4, PostHog, Stripe, and Lemon Squeezy connectors
- maintained OpenAI and Anthropic pricing rules, including cached tokens
- seven language SDKs with streaming, failure, timeout, and cancellation tracking
- careful unknown, unpriced, unmatched, and incomplete data states
- managed retention, backups, source health, and production reliability

If one of those is essential to you, that is the reason to keep paying for Grow or Die, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

A profit number is useful only when every input means the same customer and reporting window. Paying avoids maintaining analytics OAuth, payment webhooks, provider usage edge cases, model pricing, identity joins, retention, and the boring rule that missing data must stay missing.

what you lose

xready-made GA4, PostHog, Stripe, and Lemon Squeezy connectors

xmaintained OpenAI and Anthropic pricing rules, including cached tokens

xseven language SDKs with streaming, failure, timeout, and cancellation tracking

xcareful unknown, unpriced, unmatched, and incomplete data states

xmanaged retention, backups, source health, and production reliability

prior art · use these instead of building, if you'd ratherPostHogOpen-source product analytics and LLM observability that covers two large pieces of the build↗OpenMeterOpen-source usage metering infrastructure for turning model calls into auditable usage facts↗
share on X ↗"I just replaced Grow or Die ($24.08/mo) with one prompt"
the numbers

Grow or Die pricing

founder$24.08/mo · $289 billed annually, equivalent to $24.08 per month · $288.96/yr

free tierThere is no permanent free tier; the Founder plan starts with a 7-day free trial.

verified 2026-08-10 · source ↗

questions
Is Grow or Die free?

There is no permanent free tier; the Founder plan starts with a 7-day free trial. Paid is Founder at $24.08/mo (checked 2026-08-10).

Vibecode Grow or Die

Kinda. The core of Grow or Die is buildable in a weekend with the prompt on this page, but there are real gaps: ready-made GA4, PostHog, Stripe, and Lemon Squeezy connectors, maintained OpenAI and Anthropic pricing rules, including cached tokens. Read the honest list above before committing.

How much does Grow or Die cost?

Grow or Die costs about $24.08/month (Founder, checked 2026-08-10), which is $288.96 per year.

What do I lose by replacing Grow or Die?

Honestly: ready-made GA4, PostHog, Stripe, and Lemon Squeezy connectors; maintained OpenAI and Anthropic pricing rules, including cached tokens; seven language SDKs with streaming, failure, timeout, and cancellation tracking; careful unknown, unpriced, unmatched, and incomplete data states; managed retention, backups, source health, and production reliability. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to Grow or Die?

Yes: PostHog (Open-source product analytics and LLM observability that covers two large pieces of the build), OpenMeter (Open-source usage metering infrastructure for turning model calls into auditable usage facts). Using prior art is also vibecoding; the prompt is for when you want it exactly your way.