Echo is an AI-powered customer support widget that enables real-time voice and text interactions for businesses. It consists of an embeddable widget, a management dashboard, and a robust backend system.
- AI Voice & Chat: Seamlessly switch between voice and text interactions using Vapi.
- Real-time Dashboard: Monitor conversations, manage settings, and view analytics.
- Monorepo Architecture: Built for scale using TurboRepo.
- Modern Stack: Powered by Next.js, Convex, and Tailwind CSS.
- Secure Authentication: Integrated with Clerk for user and organization management.
This project is a monorepo managed by TurboRepo:
apps/web: The management dashboard for business owners.- Stack: Next.js 15, Clerk Auth, Convex React Client.
- Port: 3000
apps/widget: The standalone widget application that is embedded on client sites.- Stack: Next.js, Vapi Web SDK.
- Port: 3001
apps/embed: A lightweight loader script for embedding the widget.- Stack: Vite.
- Port: 3002
packages/backend: The backend logic and database schema powered by Convex.packages/ui: Shared UI components based on shadcn/ui.packages/math: Shared utility functions.packages/eslint-config&packages/typescript-config: Shared configuration.
- Node.js (>= 20)
- pnpm (>= 9)
-
Clone the repository:
git clone https://github.com/BhushanLagare7/echo.git cd echo
-
Install dependencies:
pnpm install
You need to set up environment variables for the apps and backend.
apps/web/.env.local and apps/widget/.env.local:
NEXT_PUBLIC_CONVEX_URL=your_convex_url
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_key
CLERK_SECRET_KEY=your_clerk_secretpackages/backend (Convex Dashboard):
Ensure you have your Vapi keys and other secrets configured in your Convex dashboard environment variables.
Start all applications in development mode:
pnpm dev- Dashboard: http://localhost:3000 (Redirects to
/conversations) - Widget: http://localhost:3001
- Embed Script: http://localhost:3002
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.