Hi everyone,
I’m currently working on a project where I need to integrate two Frappe apps: Frappe Education and Frappe LMS.
The main goal is to make the LMS act as an extension module for managing online courses, while still keeping the academic and student data consistent across both systems.
What I want to achieve
-
Sync overlapping data between the two apps (e.g., Students, Courses, Instructors, Enrollments).
-
Use Frappe Education for academic management (classes, grading, attendance, etc.).
-
Use Frappe LMS for online content delivery, quizzes, and tracking course progress.
-
Ensure both systems stay updated when data changes in one of them.
Current approach
I’m planning to:
-
Approach 1 – Integration
I’m currently considering to:
-
Use Doc Events (
on_update,after_insert,on_trash, etc.) to trigger synchronization logic between both apps. -
Build custom REST APIs to handle integration with a Vue frontend, which will serve as the main interface for learners and instructors.
Approach 2 – Unified App
Alternatively, I’m also thinking about forking both apps and merging them into a single integrated app, where Education and LMS features coexist under one codebase.
This might make maintenance and data consistency easier, but could increase complexity in the long run when updating from upstream repositories.Are there better ways to handle this kind of integration
If someone has experience integrating Frappe LMS with another Frappe app, I’d love to hear how you handled the data consistency part.
-