A Professional Learning Management System for Coding Education
ProCode EduPulse transforms passive YouTube viewers into active students by providing a structured, interactive learning environment. Built entirely with Vanilla JavaScript β no frameworks, no build tools, just pure web fundamentals.
| YouTube Alone | ProCode EduPulse |
|---|---|
| Linear video playback | Structured courses with progress tracking |
| No interactivity | In-browser code editor with live preview |
| No assessment | Quizzes + automated coding challenges |
| No personalization | AI-powered hints & timestamped notes |
| No portfolio | Auto-compiled project portfolio |
- YouTube Integration β Videos embedded alongside lesson notes, cheat sheets, and resources
- Interactive Code Playground β CodeMirror 6 editor with syntax highlighting and live preview
- Progress Tracking β Persistent progress bars, completion status, and quiz scores
- Quizzes β Multiple-choice assessments with explanations and scoring
- Coding Challenges β Automated DOM-based validation for hands-on practice
- AI-Powered Hints β Context-aware clues via Gemini API (configurable)
- Project Portfolio β Auto-compiled from completed challenges, downloadable as ZIP
- Timestamped Notes β Personal notes linked to video timestamps, click to seek
- Dark/Light Mode β Dev-friendly UI optimized for long coding sessions
| Layer | Technology |
|---|---|
| Structure | HTML5, Semantic Elements |
| Styling | CSS3, Custom Properties, Glassmorphism |
| Logic | Vanilla JavaScript (ES Modules) |
| Code Editor | CodeMirror 6 (via ESM CDN) |
| Video | YouTube IFrame API |
| AI Hints | Google Gemini API |
| ZIP Download | JSZip (via ESM CDN) |
| Persistence | localStorage |
procode-edu-pulse-lms/
βββ index.html # Main entry point (SPA)
βββ README.md
βββ .gitignore
βββ logo.png # Brand logo
βββ html.png # Course thumbnail
β
βββ css/
β βββ variables.css # Design tokens & themes
β βββ global.css # Reset, typography, utilities
β βββ components.css # Buttons, cards, modals, badges
β βββ navbar.css # Navigation bar
β βββ landing.css # Landing page styles
β βββ lesson.css # Lesson page styles
β
βββ js/
β βββ app.js # Router, page renderers, bootstrap
β βββ components/
β β βββ navbar.js # Navigation component
β β βββ sidebar.js # Course sidebar
β β βββ video-player.js # YouTube embed controller
β β βββ code-editor.js # CodeMirror integration
β β βββ quiz.js # Quiz engine
β β βββ challenge.js # Coding challenge validator
β β βββ notes.js # Timestamped notes
β β βββ portfolio.js # Portfolio builder
β β βββ progress-bar.js # Progress bar
β β βββ theme-toggle.js # Dark/light mode
β βββ services/
β β βββ storage.js # localStorage persistence
β β βββ validation.js # Code validation engine
β β βββ ai-service.js # Gemini AI integration
β βββ utils/
β βββ dom.js # DOM helpers, toast, animations
β βββ router.js # Hash-based SPA router
β
βββ data/
βββ courses.json # Course catalog
βββ lessons.json # Lesson content & metadata
βββ quizzes.json # Quiz questions
βββ challenges.json # Coding challenges & validators
- A modern web browser (Chrome, Firefox, Edge, Safari)
- A local dev server (e.g., VS Code Live Server extension)
# Clone the repository
git clone https://github.com/soghayarmahmoud/procode-edu-pulse-lms.git
# Navigate to the project
cd procode-edu-pulse-lms
# Open with Live Server (VS Code)
# Right-click index.html β "Open with Live Server"
# Or use any static server
npx serve .- Get a Google Gemini API key
- Go to Profile β Settings β AI Hints
- Paste your API key and save
- Landing page with course catalog
- Lesson page with video + code editor
- Quiz system with scoring
- Coding challenges with validation
- Progress tracking (localStorage)
- Dark/Light mode
- AI-powered hint system
- Timestamped note-taking
- Project portfolio with ZIP download
- Cheat sheets and resources
- Mobile responsive design
- User authentication (Supabase/Firebase)
- Cloud-based progress sync
- Discussion forums per lesson
- Leaderboard & achievements
- More courses (React, Node.js, Python)
- Instructor dashboard
- Certificate generation
βββββββββββββββββββββββ βββββββββββββββββββββββ
β procode_profile β β procode_progress β
βββββββββββββββββββββββ€ βββββββββββββββββββββββ€
β name: string β β [courseId]: { β
β avatar: string β β completedLessons[] β
β joinDate: ISO date β β quizScores: {} β
β theme: dark|light β β lastAccessed: date β
βββββββββββββββββββββββ β } β
βββββββββββββββββββββββ
βββββββββββββββββββββββ βββββββββββββββββββββββ
β procode_notes β β procode_submissions β
βββββββββββββββββββββββ€ βββββββββββββββββββββββ€
β [lessonId]: [{ β β [challengeId]: { β
β id, timestamp, β β code: string β
β text, createdAt β β passed: boolean β
β }] β β submittedAt: date β
βββββββββββββββββββββββ β } β
βββββββββββββββββββββββ
The validation engine supports multiple rule types:
| Rule Type | Description | Example |
|---|---|---|
dom-query |
Check if a CSS selector exists in DOM | "selector": "h1" |
dom-count |
Count elements matching selector | "selector": "ul > li", "count": 3 |
text-contains |
Check if code contains text | "text": "Hello World" |
regex |
Pattern match with regex | "pattern": "<h1>.*</h1>" |
css-property |
Verify CSS property value | "property": "color", "value": "red" |
attribute |
Check element attributes | "selector": "a", "attribute": "href" |
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Add course entry to
data/courses.json - Add lessons to
data/lessons.json - Add quizzes to
data/quizzes.json - Add challenges to
data/challenges.json
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β€οΈ by soghayarmahmoud
