LearnKit
Modern WordPress LMS plugin for course creators who value simplicity, performance, and fair pricing. Create, deliver, and monetize online courses with a beautiful, intuitive interface.
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/welbinator/learnkit/releases/download/v0.9.5/learnkit-0.9.5.zipReadme
LearnKit - WordPress LMS Plugin
Modern WordPress LMS plugin for course creators who value simplicity, performance, and fair pricing.
Overview
LearnKit is a lightweight, performant WordPress Learning Management System (LMS) plugin built with modern standards and developer-friendly architecture. Create, deliver, and monetize online courses with a beautiful, intuitive interface.
Features (Sprint 1 - Foundation)
- ✅ Custom Post Types: Courses, Modules, Lessons
- ✅ Custom Database Tables: Enrollments, Progress, Certificates
- ✅ REST API: Complete API-first architecture (
/wp-json/learnkit/v1/) - ✅ React Admin Interface: Modern course builder UI
- ✅ WordPress Standards: WPCS compliant, security-focused
- ✅ Mobile-First: Responsive design throughout
Installation
Development Setup
-
Clone repository:
cd wp-content/plugins/ git clone https://github.com/welbinator/learnkit.git -
Install React dependencies:
cd learnkit/admin/react/ npm install npm run build -
Activate plugin:
- Go to WordPress Admin → Plugins
- Activate "LearnKit"
- Database tables will be created automatically
Production Installation
- Download latest release from GitHub
- Upload to
wp-content/plugins/ - Activate via WordPress admin
- Configure settings (coming in Sprint 5)
Requirements
- WordPress: 6.0 or higher
- PHP: 7.4 or higher
- MySQL: 5.6 or higher
- Node.js: 18+ (for development)
Architecture
Plugin Structure
learnkit/
├── learnkit.php # Main plugin file
├── includes/ # Core classes
│ ├── class-learnkit.php # Main plugin class
│ ├── class-learnkit-activator.php # Activation hooks
│ ├── class-learnkit-loader.php # Hook loader
│ ├── class-learnkit-post-types.php # CPT registration
│ └── class-learnkit-rest-api.php # REST API endpoints
├── admin/ # Admin functionality
│ ├── class-learnkit-admin.php # Admin class
│ └── react/ # React app source
│ ├── src/
│ ├── package.json
│ └── webpack.config.js
├── public/ # Public-facing functionality
│ └── class-learnkit-public.php
├── assets/ # Compiled assets
│ ├── css/
│ └── js/
└── README.md
Custom Post Types
lk_course: Course content (hierarchical)lk_module: Module organization within courseslk_lesson: Individual lesson content (uses Gutenberg)
Custom Database Tables
-- Enrollment tracking
wp_lk_enrollments (user_id, course_id, status, enrolled_date, completed_date)
-- Progress tracking
wp_lk_progress (user_id, lesson_id, course_id, completed, completed_date)
-- Certificate management
wp_lk_certificates (user_id, course_id, certificate_code, issued_date)
REST API Endpoints
Namespace: /wp-json/learnkit/v1/
Courses:
GET /courses- List all coursesGET /courses/:id- Get single coursePOST /courses- Create course (requiresedit_posts)PUT /courses/:id- Update courseDELETE /courses/:id- Delete course
Modules:
GET /modules- List modules (Sprint 2)
Lessons:
GET /lessons- List lessons (Sprint 2)
Enrollments:
GET /enrollments- List enrollments (Sprint 3, admin only)
Progress:
GET /progress- Get user progress (Sprint 3, authenticated)
React Admin Interface
- Build Tool: @wordpress/scripts (webpack + babel)
- UI Components: @wordpress/components
- State Management: React hooks
- API Integration: WordPress REST API with nonce authentication
Development
Code Quality Tools
# Install dependencies
composer install
# Run PHP Code Sniffer
composer phpcs
# Auto-fix PHP Code Sniffer issues
composer phpcbf
# Run PHP Mess Detector
composer phpmd
# Run all linting tools
composer lint
# Run PHPUnit tests
composer test
The project includes:
- PHPCS: WordPress Coding Standards enforcement
- PHPMD: Code complexity and quality analysis
- PHPUnit: Automated testing suite
- Pre-commit hooks: Automatic code quality checks
See CONTRIBUTING.md for detailed development workflow.
React Development Workflow
# Navigate to React app
cd admin/react/
# Install dependencies
npm install
# Start development server (hot reload)
npm start
# Build for production
npm run build
# Lint code
npm run lint:js
npm run lint:css
# Format code
npm run format
WordPress Development
The plugin follows WordPress Coding Standards (WPCS):
- PSR-4 Autoloading: Class-based architecture
- Hook System: Loader pattern for actions/filters
- Security: Nonces, capability checks, sanitization, escaping
- Performance: Efficient queries, custom tables for scale
- i18n Ready: All strings translatable
Testing the Plugin
- Activate plugin in WordPress admin
- Check database tables:
SHOW TABLES LIKE 'wp_lk_%'; - Test REST API:
curl https://learnkit.lndo.site/wp-json/learnkit/v1/courses - Access admin interface:
- Go to WordPress Admin → LearnKit
- Should see React app with API connection test
Sprint Roadmap
✅ Sprint 1: Foundation & Plugin Architecture (Complete)
- Plugin structure and activation
- Custom post types (courses, modules, lessons)
- Custom database tables (enrollments, progress, certificates)
- REST API foundation
- React build pipeline
- Admin menu structure
🔄 Sprint 2: Course Builder Basics (Next)
- Course CRUD interface
- Module management
- Lesson management
- Course structure tree view
- Drag-and-drop reordering
📋 Sprint 3: Content Delivery
- Lesson viewer (student-facing)
- Progress tracking
- Module sidebar navigation
- Mark Complete functionality
- Enrollment system
📋 Sprint 4: Student Experience Basics
- Student dashboard
- Course catalog
- Self-enrollment flow
- Certificate generator
- Progress indicators
📋 Sprint 5+: Advanced Features
- Quizzes and assessments
- WooCommerce integration
- Email notifications
- Drip content scheduling
- Reporting and analytics
Code Quality
Security Best Practices
- ✅ Input sanitization (
sanitize_text_field,wp_kses_post) - ✅ Output escaping (
esc_html,esc_url,esc_attr) - ✅ Nonce verification for forms and AJAX
- ✅ Capability checks (
current_user_can) - ✅ Prepared SQL statements (
$wpdb->prepare)
Performance Optimizations
- ✅ Custom tables for scalable data (enrollments, progress)
- ✅ Efficient queries (indexed columns)
- ✅ Conditional asset loading (only on relevant pages)
- ✅ Lazy loading for React components (Sprint 2+)
Contributing
- Fork the repository
- Create feature branch:
git checkout -b feature/my-feature - Commit changes:
git commit -m "Add feature" - Push to branch:
git push origin feature/my-feature - Submit pull request
Coding Standards
- Follow WordPress Coding Standards
- Use
npm run formatfor JavaScript - Document all functions with PHPDoc
- Write unit tests for new features (Sprint 2+)
Support
- Documentation: [Coming in Sprint 4]
- Issues: GitHub Issues
- Email: james.welbes@gmail.com
License
GPL v2 or later
Credits
Built by James Welbes
Status: Sprint 1 Complete ✅ | Next: Sprint 2 Course Builder
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v0.9.5 | Feb 28, 2026 | learnkit-0.9.5.zip | 1 |
| v0.9.4 | Feb 27, 2026 | learnkit-0.9.4.zip | 1 |
| v0.9.3 | Feb 27, 2026 | learnkit-0.9.3.zip | 2 |
| v0.9.2 | Feb 27, 2026 | learnkit-0.9.2.zip | 2 |
| v0.9.1 | Feb 26, 2026 | learnkit-0.9.1.zip | 4 |
| v0.9.0 | Feb 26, 2026 | learnkit-0.9.0.zip | 7 |
| v0.9.0-beta.1 | Feb 26, 2026 | learnkit-0.9.0-beta.1.zip | 2 |
| v0.8.8 | Feb 26, 2026 | learnkit-0.8.8.zip | 2 |
| v0.8.7 | Feb 25, 2026 | learnkit-0.8.7.zip | 0 |
| v0.8.7-beta.1 | Feb 25, 2026 | learnkit-0.8.7-beta.1.zip | 2 |
| v0.8.6 | Feb 25, 2026 | learnkit-0.8.6.zip | 1 |
| v0.8.5 | Feb 25, 2026 | learnkit-0.8.5.zip | 1 |
| v0.8.4 | Feb 25, 2026 | learnkit-0.8.4.zip | 2 |
| v0.8.3 | Feb 25, 2026 | learnkit-0.8.3.zip | 1 |
| v0.8.2 | Feb 25, 2026 | learnkit-0.8.2.zip | 1 |
| v0.8.1 | Feb 25, 2026 | learnkit-0.8.1.zip | 2 |
| v0.7.3 | Feb 25, 2026 | learnkit-0.7.3.zip | 2 |
| v0.7.2 | Feb 25, 2026 | learnkit-0.7.2.zip | 5 |
| v0.7.1 | Feb 24, 2026 | learnkit-0.7.1.zip | 5 |
| v0.7.0 | Feb 24, 2026 | learnkit-0.7.0.zip | 1 |
| v0.6.1 | Feb 24, 2026 | learnkit-0.6.1.zip | 1 |
| v0.6.0 | Feb 23, 2026 | learnkit-0.6.0.zip | 5 |
| v0.5.4 | Feb 23, 2026 | learnkit-0.5.4.zip | 1 |
| v0.5.3 | Feb 23, 2026 | learnkit-0.5.3.zip | 1 |
| v0.5.2 | Feb 23, 2026 | learnkit-0.5.2.zip | 1 |