DEV Community

M0N0S0DIUM
M0N0S0DIUM

Posted on

I built a text pipeline API: 28 transforms, one endpoint, 1K free/day

I was tired of importing 47KB of string utilities across three services just to slugify a URL, camelCase a property, and base64-encode the result.

So I built TextForge: 28 text transformations behind one REST endpoint.

The problem: Every service had its own copy of slugify, camelCase, base64, extractEmails, etc. Version drift, bundle bloat, inconsistent behavior.

The solution: One API, composable pipelines, predictable JSON.

curl -X POST https://textforge.co/v1/run \
  -H "Content-Type: application/json" \
  -d '{"input":"user@example.com","pipeline":["extractemails","slugify","base64encode"]}'
Enter fullscreen mode Exit fullscreen mode
{
  "success": true,
  "result": "dXNlckBleGFtcGxlLmNvbQ==",
  "steps": [
    {"step":1,"action":"extractemails","result":["user@example.com"]},
    {"step":2,"action":"slugify","result":"user-example-com"},
    {"step":3,"action":"base64encode","result":"dXNlci1leGFtcGxlLWNvbQ=="}
  ],
  "execution_time_ms": 3
}
Enter fullscreen mode Exit fullscreen mode

28 transforms: case conversions (camel, snake, kebab, pascal, constant, sentence, title), encoding (base64, HTML, URL, leet, morse), extraction (emails, URLs, numbers), cleaning (trim, remove special, multiple spaces), analysis (word count, palindrome, hash), generation (random strings).

Pricing: Free = 1,000 req/day, no key. Pro = $2.99/mo for 50k/day, webhooks, batch (100 items), API keys, analytics.

Stack: Express + PostgreSQL + Redis on Railway. OpenAPI 3.0 at /api-docs. Dashboard at /dashboard.

Built it because the alternative was maintaining string-utils v2.3.1 across five repos. Now it's one HTTP call.

https://textforge.co

Feedback welcome — especially on transforms you'd add.

Top comments (0)