Open-source product feedback platform for modern teams.
Collect feedback, spot patterns, and ship what matters.
Echo helps product teams centralize user feedback, identify themes, and make confident roadmap decisions without losing control of data or workflow.
# Clone the repository
git clone https://github.com/nexttylabs/echo.git
cd echo
# Copy environment variables
cp .env.example .env
# Start services
docker-compose up -dVisit http://localhost:3000
# Install dependencies
bun install
# Copy environment variables
cp .env.example .env.local
# Run database migrations
bun run db:migrate
# Start development server
bun devVisit http://localhost:3000
- Create a project and customize your public feedback portal.
- Collect feedback (embedded portal, admin entry, or API).
- Triage, prioritize, and share progress with your users.
- Feedback collection: embedded portal, voting, attachments
- Management workflow: statuses, filters, and prioritization
- AI assist: basic auto-classification and duplicate hints
- Team collaboration: invitations and role-based access control
- Self-hosting: run on your infrastructure with Docker
- API-ready: integrate with existing product workflows
- Product teams: prioritize roadmap decisions with data
- Support teams: capture customer feedback and context
- Engineering teams: track requests from idea to shipping
- Frontend: Next.js 16 + React 19 + TypeScript
- UI: Shadcn/ui + Tailwind CSS v4
- Backend: Next.js API Routes
- Database: PostgreSQL + Drizzle ORM
- Deployment: Docker + Docker Compose
- Testing: Playwright (E2E) + Vitest (Unit)
echo/
|-- app/ # Next.js App Router
| |-- (auth)/ # Authentication pages
| |-- (dashboard)/ # Dashboard pages
| |-- api/ # API routes
| `-- portal/ # Public feedback portal
|-- components/ # React components
| |-- ui/ # Shadcn/ui base components
| |-- forms/ # Form components
| `-- feedback/ # Feedback-related components
|-- lib/ # Utility functions and config
|-- db/ # Database schema and migrations
|-- public/ # Static assets
`-- docs/ # Project documentation
Create a .env file and set the following values:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/echo"
# Authentication
BETTER_AUTH_SECRET="your-secret-key"
BETTER_AUTH_URL="http://localhost:3000"
# Email (optional)
SMTP_HOST="smtp.gmail.com"
SMTP_PORT=587
SMTP_USER="your-email@gmail.com"
SMTP_PASS="your-app-password"
# AI (optional)
OPENAI_API_KEY="your-openai-api-key"# Generate migration files
bun run db:generate
# Run migrations
bun run db:migrate
# Reset database (development environment)
bun run db:reset# Run unit tests
bun test
# Run E2E tests
bun run test:e2e
# Run tests with coverage
bun run test:coverage- Join the conversation in our Discord
- Review or open issues
- Contribute via pull requests
We welcome contributions from the community.
- Fork the project
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- v1.0 (current): feedback collection, auth, Docker, basic AI classification
- v1.1 (planned): comments, email notifications, public roadmap
- v1.2 (future): advanced AI, white-labeling, SSO, mobile
This project is licensed under the GNU AGPL v3.
- Next.js - React framework
- Shadcn/ui - UI components
- Drizzle ORM - TypeScript ORM
- Tailwind CSS - Utility-first CSS
Star the repo if Echo helps your team.
Made by the nexttylabs Team