An AI-powered learning management system that provides personalized learning experiences through interactive AI companions. Transform your education journey with voice-enabled lessons across multiple subjects.
-
AI Learning Companions: Create and interact with personalized AI tutors across various subjects including Mathematics, Language, Science, History, Coding, Economics
-
Voice-Enabled Sessions: Engage in natural voice conversations with your companions using Vapi AI for an immersive learning experience
-
Personalized Learning: Create custom companions with specific topics, teaching styles, and voice preferences
-
Session History: Track your learning progress with detailed session history and resume previous lessons
-
Companion Library: Browse and discover companions created by the community, with powerful search and filter capabilities
-
Subscription Management: Flexible pricing plans with companion creation limits based on your subscription tier
-
User Profiles: Personalized dashboards showing your learning stats, created companions, and recent sessions
- Framework: Next.js 16
- Authentication & Billing: Clerk
- Database: Supabase
- Voice AI: Vapi AI
- UI Components: shadcn/ui
- Styling: Tailwind CSS 4
- Language: TypeScript
- Error Tracking: Sentry
- Node.js 20+
- pnpm, npm, or yarn
- Clone the repository:
git clone https://github.com/mohammadtanim24h/echo-learn.git
cd echo-learn- Install dependencies:
pnpm install- Set up environment variables:
Create a
.envfile in the root directory with the following variables:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/
NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/
# Supabase Database
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your_supabase_publishable_key
# Vapi AI (Voice Integration)
NEXT_PUBLIC_VAPI_WEB_TOKEN=your_vapi_web_token
# Sentry (Error Tracking - Optional)
SENTRY_DSN=your_sentry_dsn
SENTRY_AUTH_TOKEN=your_sentry_auth_token
SENTRY_ORG=your_sentry_org_name
SENTRY_PROJECT=your_sentry_project_name-
Set up your database:
Create the necessary tables in Supabase according to the Database Schema provided below (
companionsandsession_history).The application uses two main tables in Supabase:
-
companions: Stores AI companion configurations
id,name,subject,topic,voice,style,duration,author
-
session_history: Tracks user learning sessions
companion_id,user_id,created_at
-
-
Run the development server:
pnpm dev- Open http://localhost:3000 in your browser.
echo-learn/
├── app/ # Next.js app router pages
│ ├── companions/ # Companion library and session pages
│ ├── my-journey/ # User profile and learning history
│ ├── subscription/ # Pricing and subscription management
│ └── sign-in/ # Authentication pages
├── components/ # React components
│ ├── ui/ # Base UI components
│ ├── Companion.tsx # Main companion interaction component
│ ├── CompanionCard.tsx # Companion display card
│ └── Navbar.tsx # Navigation bar
├── lib/ # Utility functions and actions
│ ├── actions/ # Server actions for database operations
│ ├── supabase.ts # Supabase client configuration
│ └── utils.ts # Helper utilities
├── types/ # TypeScript type definitions
└── public/ # Static assets