@nexttylabs/echo
v0.20.0
Published
<div align="center">
Readme
Echo
Open-source product feedback platform for modern teams.
Collect feedback, spot patterns, and ship what matters.
Why Echo
Echo helps product teams centralize user feedback, identify themes, and make confident roadmap decisions without losing control of data or workflow.
Quickstart
Docker (recommended)
# 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
Local development
# 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
Core workflow
- 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.
Features
- 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
Use cases
- Product teams: prioritize roadmap decisions with data
- Support teams: capture customer feedback and context
- Engineering teams: track requests from idea to shipping
Tech stack
- 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)
Project structure
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 documentationConfiguration
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="[email protected]"
SMTP_PASS="your-app-password"
# AI (optional)
OPENAI_API_KEY="your-openai-api-key"Database
# Generate migration files
bun run db:generate
# Run migrations
bun run db:migrate
# Reset database (development environment)
bun run db:resetTesting
# Run unit tests
bun test
# Run E2E tests
bun run test:e2e
# Run tests with coverage
bun run test:coverageGet involved
- Join the conversation in our Discord
- Review or open issues
- Contribute via pull requests
Contributing
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
Roadmap
- 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
License
This project is licensed under the GNU AGPL v3.
Acknowledgments
- 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
