Vibecode Tally

track this build8 phases, 18 steps, beginner friendly
YES · one-shottable
price $29/moyou'd save $348/yrbuild time weekendcategory 📝 formsreplaced by 0 people

A form builder that stores responses and sends webhooks/email is a classic one-sitting/weekend app.

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

A personal form builder on your own server: create forms and fields in an admin, publish each at a public URL that works without JavaScript, store answers in SQLite with file uploads on disk, get an email or webhook per response, and export CSV. Your respondents' data stays in your file.

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 Express and better-sqlite3 | many routes and forms; a thin framework earns its place here |
| Rendering | Server-rendered HTML, no client framework | public forms must submit with JavaScript disabled |
| Uploads | Disk under uploads/<form-slug>/ | one server, one disk, simple backups |
| Hosting | A VPS behind Caddy | uploads need persistent disk |

## Before you start

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

- [ ] **Node.js 22 or newer** · free
  - Why: Everything in this build runs on it: the server, the scripts, the tests.
  - Get it: Download the LTS installer from nodejs.org, or install with your package manager (brew install node, or nvm install 22). Restart the terminal afterwards.
  - Verify: node --version prints v22 or higher
- [ ] **A terminal and a code editor** · free
  - Why: Every step below is a command you type or a file you edit.
  - Get it: VS Code (code.visualstudio.com), Cursor or Zed. Open a folder for the project and use the editor's built-in terminal.
  - Verify: You can open a folder and run a command in its terminal
- [ ] **Git** · free
  - Why: History for your code, and the way most hosts deploy.
  - Get it: Install from git-scm.com or with your package manager, then run git init in the project folder once it exists.
  - Verify: git --version prints a version
- [ ] **One long random admin token** · free
  - Why: The admin is protected by a single token, no user accounts.
  - Get it: openssl rand -base64 32 into .env as ADMIN_TOKEN. Store it in your password manager.
- [ ] **SMTP credentials for response notifications (optional)** (optional) · free tiers exist
  - Why: Phase 7 emails you each response. Any SMTP provider works; without one, use the webhook or just read the admin.
  - Get it: Fastmail, Postmark, Resend or your mail host: create an app password or SMTP credential, note host, port, user, password.
- [ ] **A webhook URL to receive responses (optional)** (optional) · free
  - Why: The other notification path: a Zapier or Make hook, or webhook.site while testing.
  - Get it: Create one at webhook.site to test with; replace with the real target later.
- [ ] **A small always-on server (VPS)** (optional) · about $5 a month
  - Why: This needs one process running all the time with a public address. Uploads need disk that persists across deploys.
  - Get it: Hetzner Cloud (from about 4 EUR), DigitalOcean or Fly.io. Ubuntu 24.04, the smallest size. You need SSH access and a public IP. Only needed for the deploy phase; develop locally first.
- [ ] **A domain or subdomain** (optional) · roughly $10 a year, or free on an existing domain
  - Why: A public address you own, so links you share never break when a provider changes.
  - Get it: Register at Cloudflare Registrar, Porkbun or Namecheap, or use a subdomain of one you already own. You add one DNS record in the deploy phase.
- [ ] **Caddy on the server** (optional) · free
  - Why: Automatic HTTPS in front of the Node process. Without TLS the browser features this relies on (and your visitors' trust) do not work.
  - Get it: On the VPS: follow the install steps at caddyserver.com/docs/install for Ubuntu. One Caddyfile with your domain and a reverse_proxy line is the whole config.
  - Verify: caddy version prints a version on the server

## Quick start

```sh
mkdir forms && cd forms && git init && npm init -y && npm pkg set type=module
npm install express@4 better-sqlite3@13
mkdir -p data/uploads && cp .env.example .env
```

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

## Honest limits

This build deliberately does not replace:

- Conditional logic, partial submissions, payments.
- A template gallery.
- Team workspaces and custom domains per form.
- beautiful editor
- unlimited free usage
- partial submissions
- custom domains
- integrations
- team workspaces
- anti-spam

If one of those is essential to you, that is the reason to keep paying for Tally, 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

They pay for low-friction forms, branding removal, and integrations.

what you lose

xbeautiful editor

xunlimited free usage

xpartial submissions

xcustom domains

xintegrations

xteam workspaces

xanti-spam

share on X ↗"I just replaced Tally ($29/mo) with one prompt"
the escape hatch

Don't feel like building it? These folks already made it free.

HeyFormTally's conversational cousin, minus the document-like editor8.9kjul 2026open sourceOpnFormOpen-source forms with unlimited respondents; the free self-hosted builder team stops at two3.5kaug 2026open source

no votes, no pay-to-list · just what's real

the numbers

Tally pricing

planmonthlyannual (per mo)what you get
free$0/workspace$0/workspaceUnlimited forms/submissions/e-signatures; 10 MB/file. Fair-use examples: 50,000 submissions/month, 100 GB uploads/month, 500 GB total storage or 50,000 emails/month.
pro$29/workspace$24.17/workspaceUnlimited team members, unlimited forms/submissions under fair use and 30-day version history; removes the 10 MB upload cap.
business$89/workspace$74.17/workspaceUnlimited team members, unlimited forms/submissions under fair use and 90-day version history.

free tierUnlimited forms, submissions and e-signatures; 10 MB/file. Fair-use review examples begin with 50,000 submissions/month, 100 GB of uploads/month, 500 GB total storage or 50,000 email notifications/month.

billingmonthly + annual (2 months free, about 17%); annual paid upfront and auto-renews; no paid-plan trial

hidden costsConsistent use around 50,000 submissions/month, 100 GB uploads/month, 500 GB total storage or 50,000 emails/month can trigger a custom plan billed quarterly on top of the existing subscription.

verified 2026-08-11 · source ↗

questions
Is Tally free?

The free plan covers unlimited forms and submissions under fair use. Paid is Pro at $29/mo (checked 2026-08-07).

Vibecode Tally

Yes. A competent AI coding agent (Claude Code, Codex, Cursor) can build a usable personal Tally replacement in one session with the prompt on this page. It runs on your own machine or server with no subscription.

How much does Tally cost?

Tally costs about $29/month (Pro, checked 2026-08-07), which is $348 per year. That's what you save by replacing it with one prompt.

What do I lose by replacing Tally?

Honestly: beautiful editor; unlimited free usage; partial submissions; custom domains; integrations; team workspaces; anti-spam. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to Tally?

Yes: HeyForm (Tally's conversational cousin, minus the document-like editor) OpnForm (Open-source forms with unlimited respondents; the free self-hosted builder team stops at two) The prompt is for when you want it exactly your way.