The open-source AI learning platform that turns any topic into a project-based curriculum.
Created by Enterprise DNA -- a leading data and AI education company.
What is it? • Built with AI • Features • Tech Stack • Quick Start • Self-Hosting • Architecture • Dev with AI • Contributing • License
AI Learning Path Generator is an open-source web app that turns a topic -- anything from "PyTorch fundamentals" to "Renaissance painting" -- into a full, personalized, project-based learning path. It's the fastest way to go from "I want to learn X" to "here are the 10 lessons, the deep-dives, the mental models, the audio walkthrough, and the practice projects."
Describe what you want to learn, pick your pace and depth, and the app generates:
- A complete learning path with ordered steps and milestones
- Lesson content for each step, generated on demand
- Visual mental model diagrams that capture the core concepts
- Deep-dive topics for anything you want to explore further
- An AI tutor chat that answers questions in the context of the current step
- Audio narration of each lesson (text-to-speech) plus a realtime voice mode
- Presentation and podcast modes for the same content, for different learning styles
- A community feed of auto-generated daily learning paths you can browse
- Personalized recommendations that adapt as you complete steps
All content is saved to your own Supabase project. You own every generated lesson, image, and audio file.
Most "AI learning" products give you a summary and walk away. AI Learning Path Generator is different:
- Project-based by default -- Every path is structured around things you actually build or analyse, not passive reading
- Multi-modal content -- Text lessons, visual mental models, audio narration, and a realtime voice tutor all generated from the same plan
- Adaptive -- Paths adapt to your pace, preferred format (text/audio/visual), and the prompts you've been asking
- 21 specialized AI edge functions -- Each content type has its own Supabase Edge Function with a tuned prompt
- Self-hostable -- Bring your own OpenAI / OpenRouter / Replicate keys, run it on your own Supabase project, own every artifact
- Open source -- MIT licensed, built end-to-end with AI coding tools, easy to fork and adapt
This entire application was built using AI-assisted development tools. Enterprise DNA believes in the future of AI-augmented software development, and this project is a reference for what's possible. Every layer -- from the Supabase edge functions to the React UI -- was written collaboratively with AI coding agents.
| Tool | Role |
|---|---|
| Claude Code by Anthropic | Primary development tool. Claude Code acted as the AI coding agent, building features end-to-end across the full stack -- from edge functions to React components to page layouts. |
| Cursor | AI-powered IDE used throughout development for code navigation, inline edits, and rapid iteration. |
| GitHub Copilot | AI pair programming assistant for code completion and pattern matching. |
Enterprise DNA is committed to demonstrating that AI tools are not just productivity boosters -- they are a new way to build software. This project serves as a reference implementation for AI-assisted full-stack development.
- Free-form topic input -- describe what you want to learn
- Guided Learning Journey Wizard that walks you through topic, skill level, depth, and format
- Full learning plan generated with ordered steps, durations, and prerequisites
- Paths saved per user to your Projects page
- Public Community feed of auto-generated paths refreshed hourly
- Lesson content generated the moment you open a step (no pre-generation cost)
- Deep-dive topics: click any concept to expand it into a standalone mini-lesson
- Related topics suggestions at the bottom of each step
- Mental model image generation (via Replicate) for visual learners
- Presentation-mode slides with hero images per step
- Real-time chat-tutor edge function that answers questions in the context of the current step
- Streams responses into the lesson UI
- Prompt insights track what you're struggling with and feed the personalization engine
- Text-to-speech narration of every step (OpenAI TTS)
- Realtime speech mode for conversational learning via WebRTC
- Audio page that lets you listen to a full path end-to-end
- Podcast mode that turns a path into episodic audio content
- Learning DNA profile built from your interactions
- Skill gap analysis
- Adaptive difficulty that tracks your completion and accuracy
- Predictive recommendations for "what to learn next"
- Prompt insights that surface patterns in what you ask
- Projects page lists every path you've started
- Per-step completion tracking
- Journey dashboard with overall progress
- Pick up where you left off across devices
- Email + password via Supabase Auth
- Password reset flow with email confirmation
- Protected routes for personalized views
- Profile page with account information and preferences
- Brand gradient design system (#6654f5 / #b84d8f / #f2b347)
- Responsive mobile-first layouts
- Dark mode ready via
next-themes - Rich form controls via shadcn/ui + Radix
- Toast notifications via Sonner
- Smooth transitions via Framer Motion
| Layer | Technology |
|---|---|
| Framework | Vite + React 18 |
| Language | TypeScript 5 |
| UI Library | shadcn/ui + Radix UI |
| Styling | Tailwind CSS 3 + tailwindcss-animate |
| Animation | Framer Motion |
| Icons | Lucide React |
| Charts | Recharts |
| Database | Supabase (PostgreSQL + Row Level Security) |
| Auth | Supabase Auth (email/password) |
| AI Runtime | Supabase Edge Functions (Deno) |
| Text AI | OpenRouter primary, OpenAI fallback |
| Image AI | Replicate for mental model and presentation images |
| Voice AI | OpenAI TTS + Realtime Speech |
| State | Zustand + TanStack Query |
| Forms | React Hook Form + Zod |
| Routing | React Router DOM v6 |
| Markdown | react-markdown + react-syntax-highlighter + remark-gfm + rehype-raw |
| Deployment | Static hosting (Netlify / Vercel / Cloudflare Pages) + Supabase backend |
- Node.js 18+ and npm (or bun)
- A Supabase account (free tier works)
- An OpenAI API key (pay-as-you-go) -- and optionally an OpenRouter key for primary model routing
- A Replicate API token for mental model image generation (optional but recommended)
git clone https://github.com/Enterprise-DNA-OS/ai-learning-path-generator.git
cd ai-learning-path-generator
npm install- Sign in at supabase.com and click New Project
- Wait for the project to provision (~2 minutes)
- From Settings -> API, copy:
- Project URL ->
VITE_SUPABASE_URL - anon / public key ->
VITE_SUPABASE_ANON_KEY
- Project URL ->
cp .env.example .envEdit .env with your Supabase credentials:
VITE_SUPABASE_URL=https://your-project-ref.supabase.co
VITE_SUPABASE_ANON_KEY=your-supabase-anon-keyInstall the Supabase CLI and link your project:
npm install -g supabase
npx supabase login
npx supabase link --project-ref your-project-refDeploy all 21 edge functions:
npx supabase functions deployAI API keys live in Supabase secrets (not in .env). Set your keys:
npx supabase secrets set OPENAI_API_KEY=sk-your-openai-key
npx supabase secrets set OPENROUTER_API_KEY=sk-or-your-openrouter-key # optional, enables primary model routing
npx supabase secrets set REPLICATE_API_TOKEN=r8_your-replicate-token # enables image generationnpx supabase db pushThis runs the migrations in supabase/migrations/ against your linked project.
npm run devOpen http://localhost:3333, sign up, and start your first learning path.
AI Learning Path Generator can be deployed anywhere that hosts a static Vite build.
- Push your fork to GitHub
- Connect the repo to Netlify
- Set Build command:
npm run build - Set Publish directory:
dist - Add environment variables under Site settings -> Environment variables:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
npm run build
vercel deploy --prodSet VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY in the Vercel project settings.
npm run build produces a dist/ folder you can host anywhere:
- Cloudflare Pages
- GitHub Pages
- S3 + CloudFront
- Any static host
- Update environment variables in your hosting platform
- Supabase Auth settings -- add your production domain to the allowed redirect URLs under Authentication -> URL Configuration
- Enable HTTPS -- required for Supabase Auth
- Set Supabase secrets --
OPENAI_API_KEY, optionalOPENROUTER_API_KEY, andREPLICATE_API_TOKENfor image generation - Enable pg_cron and pg_net extensions in Supabase if you want hourly community topic generation
- Monitor edge function logs in your Supabase dashboard
src/
App.tsx Root routes + providers
main.tsx Entry point
components/
ai/ AI tutor widgets
audio/ Audio playback + TTS
audio-page/ Full-path audio mode
auth/ AuthForm + ProtectedRoute
common/ VideoBackground, loaders, shared primitives
community/ Community feed UI
content/ Lesson content renderer + deep-dive UI
home/ Landing page sections
journey/ Learning Journey Wizard
learning/ LearningStep view
learning-command-center/ Command palette + widgets
navigation/ MainNav, UserNav
onboarding/ Onboarding flows
personalization/ Learning DNA, skill gaps
plan/ Plan view
podcast/ Podcast mode
presentation/ Presentation mode
profile/ Profile editor
projects/ Project cards + list
theme/ Theme provider
ui/ shadcn/ui primitives
contexts/
PersonalizationDiscoveryContext.tsx
hooks/
analytics/ Learning analytics
audio/ TTS + playback hooks
auth/ useAuth + AuthProvider
capability/ Feature capability flags
community/ Community feed hooks
content/ Content mode + generation hooks
journey/ Learning journey state
learning-steps/ Step progression hooks
navigation/ Route helpers
personalization/ Learning DNA hooks
podcast/ Podcast mode hooks
profile/ User profile CRUD
projects/ Projects CRUD
realtime-speech/ Realtime voice hooks
recommendations/ Predictive recs
ui/ Toast, modal, dialog wrappers
integrations/
supabase/ Supabase client + generated types
lib/ Helpers and utilities
pages/
HomePage.tsx Landing page
SignIn.tsx Login
SignUp.tsx Signup
SignUpSuccess.tsx Post-signup verification screen
ForgotPassword.tsx Password reset
AuthPage.tsx Shared auth layout
ProjectsPage.tsx User learning paths
Community.tsx Public community paths
PlanPage.tsx Learning plan view
ContentPage.tsx Lesson content view
AudioPage.tsx Audio-mode view
PodcastPage.tsx Podcast-mode view
SettingsPage.tsx User settings
ProfilePage.tsx User profile
AdminGenerateTopics.tsx Admin utility
NotFound.tsx 404
store/
learningCommandStore.ts Zustand store for the learning command center
styles/ Shared CSS
utils/ Helper functions
supabase/
config.toml Function + auth configuration
migrations/ SQL migrations
functions/
_shared/ CORS, auth, AI provider, utils
chat-tutor/ Realtime tutor chat
generate-ai-insight/ Per-user AI insights
generate-daily-community-topics/
generate-deep-dive-content/
generate-deep-dive-topics/
generate-learning-content/
generate-learning-journey/
generate-mental-model-images/ Replicate image generation
generate-path-mental-models/
generate-presentation-image/ Replicate image generation
generate-related-topics/
get-predictive-recommendations/
get-prompt-insights/
get-recommended-topics/
get-skill-gaps/
get-user-learning-profile/
learning-modes-transform/
openai-tts/
realtime-speech/
text-to-speech/
User opens a learning step
-> React component calls supabase.functions.invoke("generate-learning-content", { body })
-> Edge Function (Deno runtime) loads AI config
-> Primary model via OpenRouter
-> Fallback model via OpenRouter
-> Final fallback: direct OpenAI
<- Structured response
<- Rendered in the UI and saved to Supabase
All AI calls flow through Supabase Edge Functions. API keys live in Supabase secrets -- they never touch the browser. The _shared/ai-provider module wraps model routing so any function can just call createAIClient().chat(...).
The app uses a set of Postgres tables in Supabase, protected by Row Level Security:
- Learning paths -- one row per generated path, with topic, level, and ownership
- Learning steps -- ordered steps belonging to a path
- Generated content -- lesson bodies, deep-dives, and related topics per step
- Mental model images -- Replicate-generated images tied to a step
- User profiles -- display name, preferences, timezone, learning DNA
- Community topics -- auto-generated public learning paths for the community feed
- Personalization signals -- prompt insights, skill gaps, predictive recommendations
Row Level Security is enforced on every user-facing table so users only see their own data.
This project is designed to work well with AI development tools. Two files make this explicit:
CLAUDE.md-- Project-wide instructions, conventions, and architecture overview. Claude Code reads this automatically.AGENTS.md-- Defines specialist agents with clear ownership boundaries.
Open the project folder in Claude Code. The agent will pick up CLAUDE.md and AGENTS.md automatically and follow the conventions.
Open the project in Cursor. The CLAUDE.md file serves as context for Cursor's AI features. Use inline edit (Cmd+K) for quick changes and the chat panel for larger refactors.
Copilot picks up patterns from the existing codebase (Supabase client usage, auth checks, Tailwind conventions). The consistent conventions in CLAUDE.md make Copilot suggestions more accurate.
We encourage contributors to use AI tools. If you submit a PR:
- Mention which AI tools you used -- we see it as a positive
- Follow the conventions in
CLAUDE.md - Use the specialist agent boundaries in
AGENTS.md - Run
npx tsc --noEmitandnpm run buildbefore submitting
See CONTRIBUTING.md for detailed guidelines.
TL;DR:
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes (AI tools welcome)
- Run
npx tsc --noEmitandnpm run buildto verify - Commit with a descriptive message
- Push to your fork and open a PR
MIT -- use it however you want.
- Built with Claude Code by Anthropic
- Developed in Cursor -- the AI-powered IDE
- AI pair programming by GitHub Copilot
- Text generation powered by OpenAI and OpenRouter
- Image generation powered by Replicate
- Database, auth, and edge functions by Supabase
- UI components from shadcn/ui and Radix UI
- Originally released as LearnFlow by Enterprise DNA
Built with pride by Enterprise DNA
Powered by AI-assisted development with Claude Code, Cursor, and GitHub Copilot