AI-powered education platform combining OpenMAIC and su-edu for interactive learning experiences.
This project integrates:
- OpenMAIC: AI content generation engine for lessons, quizzes, and interactive content
- su-edu/learn-together: Learner-facing application for studying with flashcards, quizzes, and progress tracking
ai-edu/
├── apps/
│ ├── openmaic/ # AI content generation (Next.js 16 + React 19)
│ └── learner/ # Learning application (Next.js 14 + Tauri)
├── packages/
│ ├── @ai-edu/types/ # Shared TypeScript types
│ ├── @ai-edu/schemas/ # Zod schemas and validation
│ ├── @ai-edu/textbook-parser/ # Textbook parsing utilities
│ └── @ai-edu/tsconfig/ # Shared TypeScript configurations
├── OpenMAIC/ # Original OpenMAIC codebase
├── su-edu/ # Original su-edu codebase
└── tasks/ # Project tasks and planning
- Node.js >= 20.9.0
- pnpm >= 10.28.0
# Install dependencies for all packages
pnpm install
# Build shared packages
pnpm run --filter @ai-edu/* build# Run OpenMAIC only
pnpm dev:openmaic
# Run learner app only
pnpm dev:learner
# Run all apps
pnpm dev:all# Build all apps
pnpm build:all- Textbook Ingestion: Parse PDFs into structured chapter JSON
- AI Generation: Use OpenMAIC to generate lessons, flashcards, quizzes
- Learning Experience: Consume content through the learner app
- Input: PDF files from textbooks
- Output: Structured chapter JSON files
- Chapter summaries
- Learning objectives
- Key concepts and vocabulary
- Slide lessons
- Quiz questions
- Interactive scenes
- Discussion prompts
- Chapter browsing
- Flashcards
- Quizzes
- Progress tracking
- Tauri wrapper for offline support
- Local content caching
Core TypeScript interfaces for the entire platform.
import type { Chapter, LearningPackage, UserProgress } from '@ai-edu/types';Zod schemas for runtime validation.
import { validateChapter, ChapterSchema } from '@ai-edu/schemas';
const result = validateChapter(data);
if (result.success) {
const chapter: Chapter = result.data;
}Utilities for parsing textbook content.
import { ChapterParser, TextbookInfoParser } from '@ai-edu/textbook-parser';
const parser = new ChapterParser(sourceInfo);
const result = parser.parseChapter(rawText, chapterNumber, grade, subject, semester);