Available now Web app · self-hosted on your server

👏 Bravowall

Collect testimonials, moderate them, embed a Wall of Love anywhere — self-hosted.

Senja charges $19/month — $228 a year, forever — to display quotes your customers wrote for free. Bravowall covers the whole loop: hosted collection forms, a moderation queue, a wall-of-love embed that can't break your site, and PNG card exports for social. One-time $29, on your own box.

$19/mo forever $29once
Bravowall screenshot

Bravowall, as it actually looks — a real screenshot, not a mockup.

What's in the box

Features

Collection forms

A hosted page per product at /collect/your-slug: name, company, photo upload, 1–5 stars, testimonial text, optional YouTube/Loom/Vimeo link, consent checkbox.

Moderation queue

Everything lands as pending. Approve, reject, feature, or fix typos before publishing — the original text is always kept.

Wall of Love embed

One script tag renders a masonry wall inside shadow DOM: your site's CSS can't break it, its styles never leak out. Theme, accent, max items via data attributes.

PNG card export

Turn any testimonial into a polished 1080×1080 or 1600×900 image card, rendered server-side with sharp — quote auto-sizing, stars, avatar, your accent color.

CSV import

Migrate from Senja or Testimonial.to exports in one upload, with per-row error reporting.

Snippets & counters

Copy-paste standalone HTML per testimonial, plus a count API for "loved by N customers" badges.

Spam protection

Honeypot field plus a 10-submissions-per-hour-per-IP rate limit on the public form.

100% yours

SQLite on disk, avatars on disk, no telemetry, no external services. Desktop app or $5 VPS via Docker.

The receipt

Bravowall vs Senja

Senja at $19/mo runs roughly $228/year — $456 over two years. Bravowall is $29, once.

BravowallSenja
Price$29 once$19/mo Starter, $39/mo Pro ($228–468/yr)
Your dataSQLite file you ownTheir cloud
Testimonials & spacesUnlimitedLimited by plan
Wall embedShadow-DOM script tagScript tag
Image cardsServer-side PNG exportYes
CSV importYes — from Senja exportsNo
Works offline / air-gappedYes (desktop mode)No
Source codeMIT, on GitHubClosed

Senja Starter is $228/year. Bravowall pays for itself in about 6 weeks — then it's free, forever.

Setup

Three steps, no subscription

STEP 01

Buy once on Whop

One-time $29 for the packaged Windows installer plus priority support — no subscription, ever.

STEP 02

Run it your way

Desktop app for zero-server use, or docker compose up on a $5 VPS when the collection form needs to be public.

STEP 03

Collect, approve, embed

Share your /collect link, approve the good ones, and paste one script tag anywhere you want the wall.

FAQ

Honest answers

Is it really free on GitHub?

Yes — the full source is MIT at github.com/bensblueprints/bravowall and always will be. The $29 buys the packaged installer, 1-click setup and updates instead of a terminal session.

Can visitors record video testimonials?

No — that's a deliberate non-goal, and it's Senja's genuine edge. Bravowall embeds video links (YouTube, Loom, Vimeo) instead of recording and hosting video itself. If in-form video recording is essential, Senja earns its fee there.

Will the embed break my site's styling?

It can't. The wall renders inside shadow DOM, so your CSS can't reach in and its styles can't leak out. Masonry layout is pure CSS columns — no layout JavaScript.

Can I migrate from Senja or Testimonial.to?

Yes. CSV import handles their export files in one upload, with per-row error reporting so nothing silently disappears.

Does it import posts from X or LinkedIn?

No — scraping social platforms violates their Terms of Service, so we skipped it on purpose. Paste-in and CSV import cover the same ground legitimately.

Deep-dive comparisons:

Own Bravowall forever

$29 once. Deploy on your own server — your data never leaves it. No renewal, no account with us, no meter. Or build it yourself from the MIT source — it's the same app.