Project Info
Veda is an AI-powered learning platform where anyone can create a course just by uploading their documents and chatting with an AI — and anyone can learn from it through interactive, voice-narrated lessons that teach you like a real tutor. No video production. No slide decks. Just upload your knowledge, and Veda turns it into a structured, voice-driven learning experience. Built as a full-stack Dart monorepo with Serverpod, Flutter, Gemini AI, RAG-powered retrieval, and ElevenLabs text-to-speech.
Inspiration
We noticed a fundamental disconnect in online education. Creating a course is absurdly hard — you need to script lectures, record videos, edit slides, structure a syllabus. And on the other side, consuming courses is passive — you watch videos, maybe take a quiz, and hope something sticks. We asked ourselves: what if the barrier to teaching was as low as uploading a PDF? What if learning felt like having a private tutor who speaks to you, explains concepts at your pace, and answers your questions on the spot? The name Veda comes from the Sanskrit word for "knowledge." The oldest organized knowledge systems in human history were oral — a teacher speaking directly to a student. We wanted to bring that back, powered by modern AI. We were also inspired by the idea that expertise is trapped — professors have research papers, engineers have documentation, specialists have manuals. All of that knowledge just sits in files. Veda unlocks it and makes it teachable. What It Does Veda is a two-sided AI learning platform with distinct creator and learner experiences: For Creators (Web) Upload knowledge files (PDFs, DOCX, TXT) — Veda extracts the text and generates semantic embeddings using Gemini's embedding model for RAG-powered retrieval. Chat with AI to build your course — In CREATE mode, you have a conversation with Gemini AI that has tool-calling capabilities. The AI can create modules, generate topics, write descriptions, update course metadata, and even generate course images — all through natural conversation. Auto-generate course structure — Upload your files, and Veda can automatically generate a complete table of contents with modules and topics by analyzing your knowledge base using RAG. Preview your course in TEACH mode — Switch to teaching mode, select a module, and hear your course delivered as a voice-narrated lecture with real-time word highlighting. For Learners (Mobile) Browse and discover — Search for courses, coaches, and topics. Explore a curated dashboard with enrolled courses, popular coaches, and topic-based discovery. Enroll and learn — Enroll in public courses, track progress across modules, and pick up where you left off. Interactive teaching sessions — Each module is delivered as a live AI-generated lecture with text-to-speech narration. The AI retrieves relevant knowledge from the course's uploaded files to deliver accurate, contextual explanations. Ask questions mid-lesson — After a lecture, use speech-to-text to ask follow-up questions. The AI answers with RAG context and maintains conversation history. Choose your learning style — Select between Quick (concise), Explanative (detailed), or Lecture (comprehensive) teaching modes that control the depth and length of AI-generated content. Track progress — Module-level progress tracking, course completion percentages, and a dedicated Learn tab showing all enrolled courses. How We Built It AI Stack Gemini 3.0 Flash & pro — Powers course creation (with function calling/tool use), teaching content generation, and Q&A. Gemini Embedding Model (gemini-embedding-001) — Generates 3072-dimensional vectors for semantic search across knowledge files. pgvector — PostgreSQL extension with HNSW indexing for fast cosine-similarity searches across course knowledge bases. ElevenLabs TTS (eleven_turbo_v2) — Converts AI-generated lectures into natural speech with expressive audio tags ([excited], [serious], [emphasizes], [pauses]). RAG Pipeline Creator uploads a document → stored in S3-compatible cloud storage Text is extracted and truncated to 10,000 characters Gemini generates a 3072-dimensional embedding Embedding is stored in PostgreSQL with an HNSW index At teaching time, the system retrieves the top 5 most relevant knowledge chunks using cosine similarity Retrieved context is injected into the teaching prompt for accurate, grounded responses Course Creation via Tool Calling In CREATE mode, Gemini has access to 7 tools: update_course — Modify title, description, visibility, video URL create_module / create_topic / add_topic_to_module — Build course structure generate_course_image / generate_banner_image / generate_module_image — AI-generated visuals The AI decides which tools to call based on the conversation, making course creation feel like talking to a knowledgeable assistant. Design System We built a custom Neo-Minimalist design system inspired by architectural blueprints and Swiss design: Pure black/white palette with zinc grays — zero color noise JetBrains Mono for system labels, Inter for headings and body Sharp rectangular aesthetic — zero border radius throughout 2px white borders as the primary visual element Grayscale image treatment for consistency Challenges We Ran Into RAG Quality and Embedding Precision Getting useful results from semantic search was harder than expected. Early on, embeddings from long documents returned irrelevant chunks. We had to experiment with text truncation strategies, similarity thresholds, and the number of retrieved chunks to balance relevance vs. coverage. Coordinating AI Tool Calling with Real Database Operations When Gemini calls a tool like create_module, that's a real database write happening in the middle of a chat response. Managing the transactional flow — parsing the AI's tool call, executing it against the database, returning the result to the AI, and updating the Flutter UI in real-time — required careful orchestration between the endpoint, service layer, and client. Audio Synchronization with Word Highlighting Syncing ElevenLabs TTS audio playback with real-time word highlighting was a significant technical challenge. We had to map audio position to word indices, handle variable speech rates, and keep highlighting smooth without jank — all while supporting pause/resume and adjacent-word highlighting. Full-Stack Dart at Scale Building everything in Dart — server, client, and frontend — is powerful for type safety but meant we couldn't fall back on mature ecosystem solutions from Node.js or Python. We worked through Serverpod's patterns for auth, file storage, migrations, and pgvector integration, often being early adopters of these patterns. Cross-Platform Consistency The same Flutter codebase serves a web-based creator tool (3-panel course architect) and a mobile-first learner experience. Designing responsive layouts and navigation flows that work across both paradigms without platform-specific code was an ongoing challenge. Accomplishments That We're Proud Of End-to-end course creation through conversation — You can go from a blank course to a fully structured, image-rich, publishable course just by chatting with an AI. No forms, no drag-and-drop builders. Just natural language. End-to-end course creation through conversation — You can go from a blank course to a fully structured, image-rich, publishable course just by chatting with an AI. No forms, no drag-and-drop builders. Just natural language. RAG-powered teaching that actually works — The AI doesn't hallucinate content. It retrieves real knowledge from uploaded documents and weaves it into coherent lectures. The teaching quality directly reflects the quality of uploaded materials. RAG-powered teaching that actually works — The AI doesn't hallucinate content. It retrieves real knowledge from uploaded documents and weaves it into coherent lectures. The teaching quality directly reflects the quality of uploaded materials. Voice-narrated learning with real-time word highlighting — It genuinely feels like having a tutor read to you. The synchronized highlighting keeps you engaged and lets you follow along at the AI's pace. Voice-narrated learning with real-time word highlighting — It genuinely feels like having a tutor read to you. The synchronized highlighting keeps you engaged and lets you follow along at the AI's pace. Full-stack type safety in one language — From PostgreSQL model definitions to Flutter widgets, everything is Dart. A change to a model automatically propagates through generated code to every layer of the stack. Zero JSON parsing bugs. Full-stack type safety in one language — From PostgreSQL model definitions to Flutter widgets, everything is Dart. A change to a model automatically propagates through generated code to every layer of the stack. Zero JSON parsing bugs. A design system that actually feels different — The Neo-Minimalist black/white aesthetic isn't just a theme — it's an intentional design philosophy that reduces visual noise and keeps focus on content. A design system that actually feels different — The Neo-Minimalist black/white aesthetic isn't just a theme — it's an intentional design philosophy that reduces visual noise and keeps focus on content. Course creation + consumption in one platform — Most edtech tools are either authoring tools OR learning platforms. Veda is both, connected by the same AI backbone. Course creation + consumption in one platform — Most edtech tools are either authoring tools OR learning platforms. Veda is both, connected by the same AI backbone. What We Learned RAG is only as good as your chunking and retrieval strategy. Raw document embeddings aren't magic. The quality of teaching output depends heavily on how you segment, embed, and retrieve knowledge. RAG is only as good as your chunking and retrieval strategy. Raw document embeddings aren't magic. The quality of teaching output depends heavily on how you segment, embed, and retrieve knowledge. AI tool calling transforms what's possible in UIs. Instead of building complex form-based interfaces for course creation, we let the AI decide what needs to happen based on conversation context. This dramatically simplified the creator experience. AI tool calling transforms what's possible in UIs. Instead of building complex form-based interfaces for course creation, we let the AI decide what needs to happen based on conversation context. This dramatically simplified the creator experience. Text-to-speech changes how people engage with content. Adding voice narration isn't just an accessibility feature — it fundamentally changes the learning experience. People pay attention differently when they're listening vs. reading. Text-to-speech changes how people engage with content. Adding voice narration isn't just an accessibility feature — it fundamentally changes the learning experience. People pay attention differently when they're listening vs. reading. Serverpod's code generation model is powerful but demands discipline. The generated client-server contract eliminates entire categories of bugs, but you have to respect the generation workflow and never touch generated files. Serverpod's code generation model is powerful but demands discipline. The generated client-server contract eliminates entire categories of bugs, but you have to respect the generation workflow and never touch generated files. Design constraints breed creativity. Limiting ourselves to a black/white palette forced us to communicate hierarchy through typography, spacing, and borders rather than color — and the result is more focused and legible. Design constraints breed creativity. Limiting ourselves to a black/white palette forced us to communicate hierarchy through typography, spacing, and borders rather than color — and the result is more focused and legible. What's Next for Veda Collaborative course creation — Multiple creators contributing to and co-editing the same course in real time. Collaborative course creation — Multiple creators contributing to and co-editing the same course in real time. Adaptive learning paths — AI that adjusts teaching depth, pace, and examples based on how the learner responds to questions and how quickly they progress through modules. Adaptive learning paths — AI that adjusts teaching depth, pace, and examples based on how the learner responds to questions and how quickly they progress through modules. Quiz and assessment generation — Auto-generated quizzes from course content with AI-graded free-response answers. Quiz and assessment generation — Auto-generated quizzes from course content with AI-graded free-response answers. Community features — Discussion threads per module, peer Q&A, and learner-to-learner interaction. Community features — Discussion threads per module, peer Q&A, and learner-to-learner interaction. Creator analytics — Dashboards showing enrollment trends, completion rates, and which modules learners struggle with most. Creator analytics — Dashboards showing enrollment trends, completion rates, and which modules learners struggle with most. Offline learning — Download courses and audio for offline consumption with progress syncing when back online. Offline learning — Download courses and audio for offline consumption with progress syncing when back online. Multi-language support — AI-translated courses and TTS in multiple languages, making knowledge accessible regardless of language barriers. Multi-language support — AI-translated courses and TTS in multiple languages, making knowledge accessible regardless of language barriers. Live mentoring sessions — Real-time audio/video sessions between coaches and learners, integrated directly into the course experience. Live mentoring sessions — Real-time audio/video sessions between coaches and learners, integrated directly into the course experience.
VEDA
AI-powered learning platform — upload documents, chat with AI to create courses, learn through voice-narrated interactive lessons.
Built as a full-stack Dart monorepo: Serverpod backend, Flutter frontend, Gemini AI for course creation & teaching, pgvector for RAG retrieval, ElevenLabs for text-to-speech.
📄 Documentation
| Document | Description |
|---|---|
| PROJECT_STORY.md | Project narrative — inspiration, what it does, how we built it, challenges, accomplishments, and what's next. |
| PROPOSAL.md | Written proposal — problem statement, target audience, and monetization strategy (freemium tiers, revenue share, Veda Pass subscriptions, enterprise licensing). |
| TECHNICAL_DOCS.md | Deep technical architecture — course creation with tool calling, file upload → embedding → pgvector pipeline, RAG retrieval, teaching & Q&A architecture, RevenueCat integration. |
Project Structure
veda/
├── veda_server/ Serverpod 3.2.3 backend (PostgreSQL + pgvector + Redis)
├── veda_client/ Auto-generated client SDK (type-safe RPC)
├── veda_flutter/ Flutter app (iOS, Android, macOS, Windows, Linux, Web)
└── veda_desgin/ Static HTML design references
Prerequisites
- Dart SDK
^3.8.0 - Flutter SDK
^3.32.0 - Docker (for PostgreSQL + Redis)
- API Keys:
- Google Gemini — AI chat, embeddings, course creation
- ElevenLabs — Text-to-speech
- Gmail App Password — Email OTP verification (generate here)
- AWS S3 credentials — File storage (optional, can use local storage)
Setup & Run
1. Clone the repository
git clone https://github.com/kanakapalli/veda.git
cd veda
2. Start database services
cd veda_server
docker compose up -d
This starts:
- PostgreSQL 16 (with pgvector) on port
8090 - Redis 6.2 on port
8091
3. Configure API keys
Edit veda_server/config/passwords.yaml and add your keys:
shared:
geminiApiKey: 'YOUR_GEMINI_API_KEY'
elevenlabsApiKey: 'YOUR_ELEVENLABS_API_KEY'
AWSAccessKeyId: 'YOUR_AWS_ACCESS_KEY'
AWSSecretKey: 'YOUR_AWS_SECRET_KEY'
smtpUsername: 'your-email@gmail.com'
smtpPassword: 'YOUR_GMAIL_APP_PASSWORD'
smtpFromEmail: 'your-email@gmail.com'
4. Configure server host
Edit veda_server/config/development.yaml — set publicHost to your local IP:
apiServer:
port: 8080
publicHost: YOUR_LOCAL_IP # e.g., 192.168.1.100
publicPort: 8080
publicScheme: http
Find your IP: ifconfig | grep "inet " | grep -v 127.0.0.1
5. Start the server
cd veda_server
dart pub get
dart bin/main.dart --apply-migrations
The server runs on:
8080— API server8081— Insights dashboard8082— Web server
--apply-migrations creates the database tables and pgvector indexes on first run.
6. Configure Flutter client
Edit veda_flutter/assets/config.json to point to your server:
{
"apiUrl": "http://YOUR_LOCAL_IP:8080"
}
7. Run the Flutter app
cd veda_flutter
flutter pub get
flutter run
Platform-specific:
# iOS
flutter run -d ios
# Android
flutter run -d android
# macOS
flutter run -d macos
# Web (connects to server at config.json URL)
flutter run -d chrome
# Or build web and serve from Serverpod:
cd veda_flutter
flutter build web --base-href /app/ --wasm --output ../veda_server/web/app
# Then access at http://YOUR_LOCAL_IP:8082/app/
Generate Client SDK
After modifying server endpoints or models, regenerate the client SDK:
cd veda_server
serverpod generate
This updates veda_client/ with new protocol types and endpoint stubs.
Run Tests
# Start test database services
cd veda_server
docker compose up -d postgres_test redis_test
# Run server tests
dart test
Key Commands Reference
| Command | Location | Purpose |
|---|---|---|
docker compose up -d | veda_server/ | Start PostgreSQL + Redis |
dart bin/main.dart --apply-migrations | veda_server/ | Start server + apply DB migrations |
serverpod generate | veda_server/ | Regenerate client SDK after model/endpoint changes |
flutter run | veda_flutter/ | Run Flutter app on connected device |
dart analyze | any package | Check for compile errors |
dart format . | any package | Format code |
Architecture at a Glance
Creator flow (Web): Upload files → files embedded as 3072-dim vectors in pgvector → chat with Gemini (9 tool-calling functions) to build course structure → AI generates TOC from knowledge base → preview with TTS lectures
Learner flow (Mobile): Browse/search courses → enroll → select module & teaching mode → server retrieves top-5 relevant knowledge chunks via cosine similarity → Gemini generates lecture → ElevenLabs converts to speech → word-by-word highlighted playback → ask follow-up questions via STT
See TECHNICAL_DOCS.md for the full architecture deep-dive.
License
Private repository. All rights reserved.
Analysis
View
Metric
No commits on this project resolved to a GitHub account.
Technology
- CIn code
- C++In code
- CSSIn code
- DartIn code
- HTMLIn code
- KotlinIn code
- SQLIn code
- SwiftIn code
- AWSClaimed
8 of 9 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
2.1 MB
Source files
239
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
kanakapalli/veda
409 files · 17.2 MB · @ 8bf933e
Structure
Interface
82 files · 20%Screens, components and styles rendered to the user.
+16 moreAPI & routing
2 files · 0%Request entry points: routes, handlers and controllers.
Application logic
159 files · 39%Domain rules, services and shared utilities.
+6 moreData & schema
26 files · 6%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Dart77%
- SQL8%
- HTML8%
- Markdown4%
- YAML1%
- C++1%
- Other (5)1%
Share of indexed source by file size. Binary and vendored files are excluded.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.