croft: Data pipelines in TypeScript, on one DuckDB file

0
croft: Data pipelines in TypeScript, on one DuckDB file


Hey Product Hunt 👋

croft is a data pipeline tool for TypeScript developers.

A typical data stack is several tools glued together: dlt or Airbyte to load, dbt to transform, Airflow or Dagster to schedule, and a warehouse to host it all, mostly in Python and YAML. croft does those jobs in one CLI, in TypeScript:

• Ingest: an ingest() in a .ts file pulls from any API or CSV, incrementally and safe to rerun
• Transform: a .sql file or a TypeScript function per table, with checks that run before anything is saved
• Schedule: schedule: “every hour”, and everything downstream updates in order
• Serve: query the tables from any Bun or Node app, typed by table

Everything lives in one DuckDB file on your machine. No server, no account, no warehouse bill.

Two things I’m proud of:

1. Types across SQL and TypeScript. Every table gets a type generated from its real columns. Rename a column in SQL and croft flags the TypeScript that reads it, before anything runs.
2. It’s built for agents. Tell Claude Code what you want and it writes the pipeline, while croft checks every step, previews changes without touching your tables, and stops for your OK before anything could lose data.

It’s honest about scope: one machine, one DuckDB file. If your team already runs a warehouse with dbt, keep it.

Free and MIT. Try it in five minutes: bun add -g @zabaca/croft, then the Quickstart at croft.zabaca.com/docs/quickstart

I’d love to hear what you’d pipe into it, and what’s missing.

About The Author

Leave a Reply

Your email address will not be published. Required fields are marked *