This document describes the interactive learning experience implementation for the platform.
The learning experience provides a comprehensive, interactive environment for students to engage with course content through video lessons, progress tracking, and structured learning paths.
- Multiple courses with unique content
- Lessons organized in sequential order
- Progress tracking per course
- Locked/unlocked lesson system
- Desktop View: Sidebar navigation with lesson list
- Mobile View: Collapsible lesson navigation
- Video Player: Integrated video content with controls
- Progress Tracking: Visual indicators for completed lessons
- Introduction to blockchain technology
- Cryptographic foundations
- Distributed ledger technology
- Consensus mechanisms
- Smart contracts basics
- Blockchain networks
- Security and vulnerabilities
- Future of blockchain
- Introduction to Stellar
- Soroban basics
- Writing your first contract
- Contract testing
- Advanced contract patterns
- Production deployment
- What is DeFi?
- Liquidity pools
- Stellar DEX
- Lending protocols
- Yield farming
- Risk management
- Building a DeFi app
- NFT fundamentals
- Token standards
- Minting NFTs
- NFT marketplace
- Royalties & licensing
Visit /learning-demo to see all available courses with descriptions and quick access links.
Access any course directly via /courses/{courseId}/learn:
/courses/blockchain-fundamentals/learn/courses/stellar-smart-contracts/learn/courses/defi-fundamentals/learn/courses/nft-development/learn
- Desktop navigation for lessons
- Shows completion status
- Displays lesson duration
- Locks future lessons until prerequisites are completed
- Mobile-friendly lesson navigation
- Sheet-based UI for compact screens
- Same functionality as desktop sidebar
- Video player integration
- Lesson description and metadata
- Navigation controls (Previous/Next)
- Completion button
- Course introduction and description
- Instructor information
- Lesson list with durations
- "Start Learning" call-to-action
- Responsive video player
- Custom controls
- Progress tracking
- Playback speed control
The system uses CourseProgressContext to manage:
- Current lesson ID
- Completed lessons array
- Progress percentage
- Lesson unlocking logic
Progress is stored in localStorage and persists across sessions.
- First lesson is always unlocked
- Subsequent lessons unlock when the previous lesson is completed
- Users cannot skip ahead without completing prerequisites
- Completed lessons can be revisited anytime
- Desktop (lg+): Sidebar always visible
- Tablet (md-lg): Collapsible sidebar
- Mobile (<md): Sheet-based navigation
- Quiz integration after lessons
- Code playground integration
- Discussion forums per lesson
- Downloadable resources
- Certificate generation
- Bookmarking functionality
- Note-taking feature
- Lesson search and filtering
- Framework: Next.js 14 with App Router
- UI Components: shadcn/ui
- State Management: React Context API
- Storage: localStorage for progress
- Styling: Tailwind CSS
- Icons: Lucide React
All course data is currently stored in src/lib/mock-course-data.ts. In production, this should be replaced with API calls to fetch course data from a database.
Currently using a demo video (/videos/demo-video.mp4) for all lessons. Replace with actual lesson videos in production.
Progress is stored in localStorage. Consider implementing:
- Backend API for progress syncing
- User authentication integration
- Cross-device progress sync
- Analytics tracking
- Visit
/learning-demoto see all courses - Click "Start Learning" on any course
- Watch the video and click "Mark as Complete"
- Notice the next lesson unlocks automatically
- Navigate between lessons using sidebar or navigation buttons
- Test on mobile to see responsive behavior
- Refresh the page to verify progress persistence
Edit src/lib/mock-course-data.ts and add a new course object to the mockCourses record.
Update the Lesson type in src/types/lesson.ts to add new fields or modify existing ones.
All components use Tailwind CSS and can be customized via the theme configuration or component-level classes.