Coursenva helps learners discover top free online courses across the web, generate step-by-step career roadmaps, export study guides as PDFs, and get real-time guidance from an interactive AI assistant.
freecourse.mp4
Demonstration of natural language course discovery, AI roadmap generation, multi-page PDF export, and streaming assistant interaction.
- Framework: Next.js 16.2.12 (App Router, Turbopack)
- UI Library: React 19.2.8
- Language: TypeScript 5.8 (Strict Mode Enabled)
- Styling: Tailwind CSS 4.0 (
@themevariables, CSS module isolation) - Icons: Lucide React 0.546.0
- LLM Integration: Vercel AI SDK (
ai),@ai-sdk/google,@mistralai/mistralai - Search Ingestion:
@tavily/core, Google Serper REST API - Document Generation:
jspdf,html2canvas
- Code Formatting & Linting: Prettier, ESLint 9 (Flat Config),
@typescript-eslint - Git Hooks: Husky 9,
lint-staged
- Node.js:
v20.9.0or higher - Package Manager:
npmv10.0.0+ orbunv1.1.0+ - API Keys: At least one LLM key (
MISTRAL_API_KEYorGEMINI_API_KEY) and one search key (TAVILY_API_KEYorSERPER_API_KEY)
-
Clone the Repository:
git clone https://github.com/kuldeeprajput-dev/ai-course-finder.git cd ai-course-finder -
Install Dependencies:
npm install
-
Configure Environment Variables: Copy the template file to
.env.local:cp .env.example .env.local
-
Launch Local Development Server:
npm run dev
Access the workspace at
http://localhost:3000.
Configure server-side environment variables inside .env.local:
# Generative AI Providers
GEMINI_API_KEY=your_gemini_api_key_here
MISTRAL_API_KEY=your_mistral_api_key_here
# Web Search Grounding Providers
TAVILY_API_KEY=your_tavily_api_key_here
SERPER_API_KEY=your_serper_api_key_here| Variable | Scope | Primary Purpose | Fallback Behavior |
|---|---|---|---|
GEMINI_API_KEY |
Server-only | Primary course discovery and roadmap generation. | Falls back to MISTRAL_API_KEY if key is unconfigured or rate-limited. |
MISTRAL_API_KEY |
Server-only | Primary streaming chat assistant and secondary search generator. | Required for /api/chat streaming functionality. |
TAVILY_API_KEY |
Server-only | Primary web search grounding and course recommendation provider. | Falls back to SERPER_API_KEY if search query fails. |
SERPER_API_KEY |
Server-only | Secondary Google Search API fallback provider. | Utilized automatically when Tavily quota is exhausted. |
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this project helpful, please consider giving it a ⭐ star on GitHub!