EchoBoard
Self-hosted - Docker - Node.js + React

Feedback without
friction.

A self-hosted feedback platform where anyone can submit ideas, report bugs, and vote - without creating an account. Your community speaks freely. You keep the data. Nobody gets tracked.

No accounts required Zero tracking CC0 Public Domain
EchoBoard feedback boards overview with multiple product boards
0 Accounts required
AAA WCAG Accessibility
0 Identity tiers
CC0 Public domain
Feedback for everyone.
Accounts for no one.

Most feedback tools make people create accounts before they can say a word. EchoBoard flips that - anyone can show up and participate immediately. No email harvesting, no tracking, no dark patterns. Just a place to listen.

No barriers to entry

A browser cookie is your identity. Show up, post, vote, comment. No sign-up wall, no email, no password.

Your server, your data

Self-hosted means your feedback data never leaves your infrastructure. No third-party analytics, no cloud dependency.

Privacy by architecture

No email column in the database. Display names encrypted at rest. Lookups via blind indexes. Privacy isn't a feature - it's the foundation.

Truly free forever

CC0 licensed. No premium tier, no vendor lock-in, no strings. Fork it, modify it, run it forever.

Pick your level of commitment.

No one should be forced to create an account to share an idea. EchoBoard offers a spectrum - participate anonymously, or gradually opt into persistence. Your choice, every step of the way.

1

Just show up

A random token in a browser cookie. Immediate participation. No sign-up, no email, no nothing.

Default for everyone
2

Recovery phrase

A six-word phrase that lets you get back to your posts if you clear cookies or switch browsers. Hashed with bcrypt, expires in 90 days.

Optional persistence
3

Passkey

WebAuthn-based biometric or device PIN. Private key stays on your device. The server only stores a public key. No password to steal.

Full persistence

Show up and be heard.

Core

Post, vote, discuss.

Submit feature requests and bug reports with structured templates. Vote with configurable budgets. Comment with markdown, @mentions, emoji reactions, and file attachments.

Vote budgets
Markdown comments
File attachments
Discovery

Find what matters.

Full-text search across all boards. Similar post detection prevents duplicates before you submit.

Full-text search
Duplicate detection
Updates

Stay in the loop.

Push notifications when your post's status changes. RSS feeds per board. Subscribe to specific threads.

Push notifications
RSS feeds
Accessibility

Built for everyone.

WCAG 2.2 AAA. Full keyboard navigation, screen readers, 7:1 contrast, 44px touch targets, reduced motion support. Dark and light themes that follow your system preference.

7:1 contrast
Dark + light
Keyboard navigation
Screen reader support

Run the show. Your way.

Dashboard

Roadmap and changelog.

Kanban-style roadmap with custom status columns. Changelog with scheduled publishing. Give your community visibility into what you're building and what shipped.

Kanban roadmap
Changelog
Scheduled posts
Roles

Team without email.

Invite admins and moderators with a link. No email required - they pick a display name and secure with a passkey.

3 role tiers
Link invites
Moderation

Granular control.

Lock post edits, comments, threads, and voting independently. Merge duplicate posts with vote consolidation. Full edit history with rollback.

Granular locks
Edit rollback
Integration

Connect to your stack.

Webhooks fire on status changes, new posts, and comments. Embed widget for external sites. Export data as CSV or JSON.

Webhooks
Embed widget
Organization

Custom statuses and tags.

Define your own status workflows per board. Categorize with tags. Pin important posts. View counts track engagement.

Custom statuses
View counts

Extend it. No restart.

Upload a zip file. EchoBoard loads it instantly. Plugins can add API routes, react to events, store data, and access the full database. No server restart, no redeployment.

What plugins can do

  • Add custom API routes
  • React to events (new posts, status changes, comments)
  • Store scoped key-value data
  • Full database access via Prisma

Build things like

Slack notifications Discord bot Linear sync GitHub mirror Email digest Auto-triage Vote thresholds Analytics export Gitea sync

Trust is engineered.

Security isn't bolted on - it's in the architecture. Field-level encryption, proof-of-work spam prevention, and zero third-party scripts.

AES-256-GCM encryption

Display names and sensitive fields encrypted at rest. Lookups via HMAC-SHA256 blind indexes.

ALTCHA proof-of-work

No CAPTCHAs, no third-party scripts. Invisible computational challenge stops bots without annoying humans.

WebAuthn passkeys

Public-key cryptography. Private key stays on your device. No password database to breach.

Per-endpoint rate limiting

100/min for browsing, down to 3/15min for recovery codes. Exponential backoff on failed auth.

Security headers

HSTS, CSP, X-Content-Type-Options, X-Frame-Options, and Referrer-Policy out of the box.

Safe file uploads

Content validation via magic bytes. Path traversal blocked. Orphan cleanup for abandoned uploads.

See it in action.

Three steps to listening.

1

Deploy it

Clone the repo, set your .env, run docker compose up -d. Two containers - the app and PostgreSQL.

2

Create your first board

Visit /admin, create your admin account, set up your first feedback board with custom statuses and categories.

3

Share it

Give your community the link. They show up, they post, they vote. No sign-up friction. You start listening.

Solid foundations.

A Fastify API server with Prisma ORM and PostgreSQL. React frontend built with Vite. Deployed via Docker Compose. Automatic database migrations on startup.

Node.js Fastify React TypeScript Prisma PostgreSQL Docker Vite

Start listening.

Give your community a voice without asking them to create an account. Self-hosted, private, genuinely free.

Self-hosted Docker Compose CC0 Licensed