Searching for Open Source React Native LMS frontend apps with low hosting cost LMS backend
- While there are general open-source React Native projects and open-source Learning Management Systems (LMS) with React web frontends, there is no single, prominent, ready-to-use open-source React Native LMS frontend project that is widely recognized as a complete product for mobile apps.
- Frappe LMS: This is a 100% open-source LMS application that integrates with the Frappe framework. The frontend is web-based, but its modular nature makes it possible to build a React Native client that consumes its API.
- MERN Stack Examples: Many GitHub repositories offer full-stack MERN (MongoDB, Express.js, React, Node.js) LMS examples. These are usually web applications, but can serve as architectural inspiration or a starting point for building a mobile version.
- In summary, you will likely need to build the frontend yourself using React Native/Expo, connecting it to a stable open-source LMS backend via an API.
- WordpressMobileApp, https://github.com/yakupafsin/WordpressMobileApp , MIT License: Wordpress Mobile App is a mobile application developed with Expo and React Native, designed to provide a user-friendly way to access and read content from your WordPress website. This README provides essential information for users and contributors.
- [No license file, it seems] ONA-OPENNEWSAPP, https://github.com/vikasbukhari/ONA-OPENNEWSAPP : ONA or Open News App is an open source React Native based application for WordPress News and Blog Websites. [It does not seem to have a license file, but its Readme says it is 'open source'. So perhaps it could be viewed as open source and be used freely for production sites. However, it may be best to get a specific OK from the authors before that is done (due to absence of Open Source License file)]
🧑💻 My Judgment: Is it worth exploring for you? — Yes, with cautious optimism
Given your stated needs:
-
relatively simple LMS
-
likely small–medium scale (you didn’t mention thousands of users)
-
willingness to self-host or manage backend
-
comfort with coding (you already know React, so adapting a React frontend is not impossible)
… I think Frappe LMS is a very reasonable candidate. It strikes a balance between being much lighter-weight than Moodle, but still offering a decent feature set (courses, lessons, quizzes, assignments, live classes).
However — you should treat it as a “starting point” rather than a final, polished solution. Expect to do some work: maybe bug-fixing, adding small missing features, or writing a custom React (or React Native) frontend. Don’t expect plug-and-play maturity that Moodle or Canvas might give for big institutions.
📊 On Reputation and Popularity — Where Frappe LMS stands today
-
The project is open source (AGPL-3.0) and publicly available on GitHub. GitHub
-
It seems modestly used: stars/forks are relatively low, and the community is small compared to giants like Moodle.
-
The Frappe team (same folks behind Frappe Framework / ERPNext) are reputable: Frappe/ERPNext is widely used. Wikipedia+1
-
The “story” behind Frappe LMS — built by open-source community (FOSS United) to serve as a simple education platform — gives it a philosophical appeal. Roshan Shahzad+1
-
There is some real-world usage (or at least testing and feedback): open issues in 2025 indicate people are still trying to use it. GitHub
So its reputation is decent, but not “mature institution-grade”. It is more like a “hobbyist / early-stage open source LMS” — good for small projects, but not (yet) a full-blown alternative to Moodle / Canvas / Open edX in large educational institutions.
🎯 Recommendation (Given Your Context)
-
Yes — clone the repo and spin up a local / Docker instance now. Try creating a couple of courses, lessons, quizzes, etc. See if the “feel” matches what you want (simplicity, clean UI, ease of content creation).
-
If you like it, plan a custom React Native (Expo) frontend. Use something like frappe-straw or directly use Frappe’s REST APIs. This plays to your strength (React) and gives you full control.
-
But be ready to do some development / bug-fixing / custom code. Don’t expect it to work out-of-the-box for a medium-to-large live deployment with many users.
-
And, as with any open-source project, keep an eye on maintenance / community activity / security issues. Given your background (tech-savvy), you should be able to manage that.
🎯 If hosting cost and minimal complexity are your top priorities
Then Moodle or Frappe LMS are your main candidates.
Simple rule:
-
Want ready structure + modern backend → choose Frappe LMS
-
Want extremely cheap, extremely stable → choose Moodle
Let me give you a clear picture now — including a direction that may “hit the sweet spot” for your simple LMS + low-cost NGO setup + React Native + Expo Web requirement.
✅ 1. Yes — for Moodle, ₹800/month is the realistic minimum
The ₹399/mo price is only a promotional term.
The real recurring price for a usable VPS Moodle setup is:
≈ ₹700–900 / month
(for 2–4 GB RAM VPS, which Moodle needs)
For an NGO, small group, or light usage…
₹800/month feels too high — especially when:
-
users are < 100
-
content is simple (text, images, maybe occasional video)
-
concurrency is low
-
no heavy quiz engine needed
So your hesitation is totally valid.
Moodle’s complexity → drives higher hosting cost.
✅ 2. WordPress as the LMS backend (simple course → lesson) is a great option
For your exact use case (simple hierarchy, NGO-friendly, low budget), WordPress is an excellent fit for these reasons:
✔ Can run on extremely cheap hosting (₹150–300/month shared hosting)
Even basic WordPress hosting is enough because:
-
content is light
-
user concurrency is tiny
-
you can offload videos to YouTube
-
database queries are simple
✔ WordPress has REST APIs built-in
No need for a plugin for basic posts, pages, categories, tags:
✔ You can structure course → lessons using:
-
categories
-
custom post types
-
custom fields
-
ACF (Advanced Custom Fields) plugin
-
simple taxonomy like:
-
Course = Category
-
Lesson = Post
-
✔ WordPress is extremely mature
You get:
-
user login
-
role management
-
media uploads
-
SEO
-
security updates
-
backups
-
plugins
✔ No backend coding required
Unless you want custom REST endpoints.
✔ Easy to host on free-tier or cheap-tier hosting
There are ₹100–200/month shared hosting plans in India that are perfectly adequate for your scale.
🎉 3. YES — that RN Expo WordPress Mobile App is perfect for your purpose
The project you found:
https://github.com/yakupafsin/WordpressMobileApp
Why this is a big win:
-
MIT license → you can fully use, modify, ship
-
Already consumes WordPress REST API
-
Already React Native + Expo
-
You know RN → you can adapt it quickly
-
You can extend the REST queries to fetch:
-
lessons by category
-
lesson metadata
-
progress tracking (store locally or in WP)
-
This solves 80% of your work automatically.
Adapting it to “Course → Lesson”
You can do:
Option A:
Course = WordPress Category
Lesson = WordPress Post
Option B:
Course = Custom Post Type course
Lesson = Custom Post Type lesson
Link using ACF relationships
Option C:
Use a dedicated LMS plugin like Sensei LMS (free) — but you may not need this.
✅ What is WordPress.com vs WordPress.org
-
WordPress.com is a hosted service by Automattic. They offer free and paid plans. Wikipedia+2Premium WordPress Support+2
-
WordPress.org is the free open-source WordPress software. You self-host it (on your own server / hosting). That gives you full control: you can install plugins, themes, custom code, etc. The Jerusalem Intercultural Center+2WordPress.com+2
🚫 Plugin / REST API restrictions on WordPress.com free plan
-
On WordPress.com free / Personal / Premium plans, you cannot install custom plugins. Premium WordPress Support+2WordPress.com+2
-
Only Business (or eCommerce/Enterprise) plans allow installing plugins / custom themes. WordPress.com+2Premium WordPress Support+2
-
As long as you stay on a free plan, you’re limited to built-in features; custom REST-API plugin or custom post-type plugins are not allowed. The Jerusalem Intercultural Center+1
So if you have 3 blogs on WordPress.com under the free plan — you will not be able to install “REST API plugin” or a “course → lesson” plugin.
You are exactly on the right track.
For a simple, low-cost LMS with React Native + Expo, Blogger is actually more capable and more practical than WordPress.com free plan — because:
✅ Blogger provides a full REST API even for free blogs
-
Blogger’s API v3 is fully available for all free Blogger blogs.
-
You can create, retrieve, update, delete posts via OAuth.
-
You can list posts by labels (your “course/lesson” mapping).
-
You can fetch posts in JSON (no plugin required).
-
You can store structured metadata inside the post body or JSON payload.
-
You have no hosting cost — everything is free.
WordPress.com free plan, by comparison, only exposes:
-
Limited read-only endpoints
-
No custom post types
-
No plugin-based API extensions
-
No ability to authenticate users for LMS-style functionality
-
API v1.1 only — too limited for structured course → lesson models
So for an NGO-style, low-budget LMS, Blogger wins.
🟦 Comparing Blogger API vs WordPress.com API (for free blogs)
| Feature | Blogger (Free) | WordPress.com Free |
|---|---|---|
| Full REST API | ✔ Yes (v3) | ❌ Very limited |
| Authentication | ✔ OAuth2 | ✔ OAuth2, but limited actions |
| Create/Update/Delete Posts | ✔ Yes | ❌ No (write operations restricted) |
| Custom metadata | ✔ Using Labels, JSON inside post | ❌ No custom fields / metadata |
| Plugin support | ❌ Not applicable | ❌ Plugins not allowed |
| Host cost | ₹0 | ₹0 but limited API |
| Ideal for LMS model | ✔ Can be adapted | ❌ Not suitable |
🟩 How Blogger can be used as a simple LMS backend
You can structure your LMS like this:
Course
-
Represented as a Blogger Label: e.g.,
course-python,course-vedic-science
Lessons
-
Individual posts under that label
-
Metadata (order, type, duration) stored in:
-
Post title:
Lesson 1 – Introduction -
Labels:
lesson,course-python -
JSON snippet inside post (at top/bottom)
-
Example JSON in the post:
Your React Native app can extract this using regex.
Benefits:
-
ZERO backend cost
-
Full read/write API
-
Easy for non-technical content creators
-
Unlimited posts
-
Perfect for small NGO-scale LMS
-
Works for 10–100 learners easily
🟦 Practical: What about authentication?
Blogger API supports:
-
OAuth2 via Google accounts
-
Your RN app can authenticate users using:
-
Expo AuthSession
-
Firebase Authentication (Google provider)
-
Or your own token storage after OAuth login
-
Learners will sign in with Google — which is fine for NGO setups.
🟩 Why Blogger is surprisingly good for your LMS use-case
✔ Free forever
✔ Reliable Google infrastructure
✔ Full API for both reading and writing
✔ Unlimited posts = unlimited lessons
✔ Posts with labels = natural Course/Lesson mapping
✔ Lightweight — no heavy Moodle / WordPress overhead
✔ Easy to integrate with React Native + Expo Web
✔ No hosting maintenance, no updates, no security issues
In your earlier discussions:
-
Moodle = too heavy
-
Frappe LMS = good, but needs backend + deployment
-
WordPress.com = too restricted
-
WordPress.org = requires hosting cost
-
Blogger = zero hosting, full API, enough features
So yes — Blogger may be the cleanest solution for your small, simple LMS.
✅ Why your plan makes sense
1. You get an immediate React Native LMS UI “template”
Even if the Moodle backend is temporary:
-
You instantly get screens for:
-
Login
-
Course list
-
Lessons
-
Tabs / navigation
-
Content rendering
-
Authentication flow
-
Possibly progress markers
-
Building that from scratch (proper UI + state flow + error handling) would take days or weeks.
Using this repo, you shortcut all of that.
2. You can test everything quickly using a local Moodle
You don’t need paid hosting.
You can do this:
-
Install Local Moodle using “Moodle in Docker” or “Bitnami Moodle” or “MAMP/XAMPP”.
-
Create a dummy admin account.
-
Load the “Standard Demo Course”.
-
Configure
.envin the RN app: -
Run the RN app and verify it displays:
-
login screen
-
course list
-
lessons
-
content pages
-
If the app renders a valid LMS UI, that alone is a huge win — because you won't waste time reinventing UI scaffolding.
3. After UI validation → switch to “dual backend mode”
You can absolutely design this:
Then your RN project structure becomes:
Your API interface can be unified:
Then implement this interface twice:
-
MoodleApi → uses existing Moodle endpoints.
-
BloggerApi → uses Blogger REST v3 + labels + posts.
And toggle via config:
This gives you:
-
RN UI immediately
-
Backend flexibility long term
-
A safe fallback if Blogger API ends up too limited
🔥 This is actually the smartest possible workflow
Without Moodle → you would be stuck designing UI + flows blindly
That is slow and error-prone.
With Moodle → you can instantly validate:
-
How a real LMS behaves
-
What minimal features are needed
-
How navigation flows should look
-
What screens you actually need
You use Moodle as a UI model, not as the final backend.
And it matches Moodle’s internal structure exactly.
Let me explain cleanly.
✅ What getSectionAndActivities() is doing
It calls:
core_course_get_contents
This Moodle API returns course sections and all modules inside them.
A typical response looks like:
[
{
id: 1,
name: "Topic 1",
modules: [
{ modname: "page", modicon: "...", content: ... },
{ modname: "resource", ... },
{ modname: "quiz", ... }
]
},
{
id: 2,
name: "Topic 2",
modules: [ ... ]
}
]
This list includes BOTH:
🟩 Course content (pages, lessons, files, videos)
AND
🟦 Moodle activities (quizzes, assignments, forums)
So in this repo:
👉 Activities = Course Content + Activities merged together
This is why the folder is named “Activities,” but its actual meaning is broader.
It displays all modules under each section/topic.
✅ Why they fetch module.modicon
This line:
const modicon = await fetch(module.modicon);
const {type} = await modicon.blob();
module.modicontype = type;
They are:
-
Downloading the icon file
-
Detecting the MIME type (
image/png,image/svg+xml, etc.) -
Saving it as
module.modicontype
→ This is needed for React Native to display remote SVG / PNG icons correctly.
📌 So what does the Activities screen show?
It shows a list of sections, and under each section, a list of modules:
Modules may include:
-
Page (lesson/content)
-
File
-
Folder
-
URL
-
Label
-
Assignment
-
Quiz
-
Forum
-
Feedback
-
BigBlueButton
-
SCORM package
-
etc.
So everything inside a course is returned here.
This is the same structure the official Moodle Mobile App uses.
🧩 This explains your confusion
You expected:
CourseContent/
Activities/
Participants/
But they instead used:
Activities/ → everything inside the course
Participants/ → list of enrolled users
So yes, the naming is misleading, but the functionality is correct.
📝 Summary
✔ core_course_get_contents returns all course sections and all content + activities inside them.
✔ Activities screen is actually a full course outline.
✔ Lessons/content (pages, files, videos) are included inside modules returned by this API.
✔ Activities screen = Moodle’s standard course structure viewer.
✅ Your assessments (and my comments)
1. hope-elearning-mobile — MIT
✔ Worth exploring
This is currently the most feature-rich RN e-learning app available under permissive open source.
-
Proper screens for courses, blogs, quizzes, categories.
-
UI looks modern.
-
A functioning RN navigation + component structure.
-
Since it's MIT, you can fully adapt it.
This could give you UI/UX structure, even if you replace the backend entirely with Blogger/WordPress/minimal API.
2. lms-app — MIT (but trivial / limited)
Yes, your observation is correct:
-
Very basic (course list → enroll only).
-
Code too small to serve as a real LMS base.
-
Best used only as an Expo + RN layout skeleton.
Given your needs, you can skip it.
3. lms-react-native + lms-api — NO LICENSE
Correct — “All rights reserved” unless stated otherwise.
Even though you understand this code well from the tutorial, you cannot legally use or adapt it for your project (except for learning).
So it’s off the table for any real work.
4. React-Native-Learning-App — No License
That means:
-
You cannot use the code legally
-
Repo is bare
-
Video doesn’t even play
Skip.
⭐ The two NEW repos you rediscovered from your own blog post:
These are the ones actually worth examining further.
5. EduardoRodriguesF/e-learning — MIT
👉 Very good candidate for small/simple LMS
Your instincts are spot on.
Why this one fits your current needs:
-
MIT License
-
Minimalistic and clean
-
Focus on videos (common for course platforms)
-
Easy to extend to “text lesson” pages
-
Could adopt Blogger/WordPress/Moodle API as backend
-
Lightweight → perfect for a small NGO with limited needs
Even if it's video-only initially, adding:
-
Lesson text
-
Course description
-
Quiz (MCQ)
-
Offline caching
…is straight-forward because the UI is simple.
This may end up being the best balance between simplicity and usefulness.
6. rightoneducation/righton-app — Apache 2.0
You are exactly right:
-
It is complicated
-
It includes React Native + React web app
-
More like a “full education platform” (with assessments, gamification, etc.)
-
Lack of screenshots means more digging needed
-
May not be suitable for your very simple course → lesson need
But Apache 2.0 is permissive, so:
-
Might be a good “code reference”
-
Can be used as a long-term inspiration
-
But not good as a starting base today
🎯 Final Recommendations (Ordered — based on your project goals)
1️⃣ Best Immediate Candidate to Explore: hope-elearning-mobile (MIT)
For highest functionality + good UI.
2️⃣ Best Simple, Minimal, Adaptable Candidate: EduardoRodriguesF/e-learning (MIT)
For small, simple course/lesson video-based app.
This one is ideal if you want:
-
Clean code
-
Easy modifications
-
Simple course/lesson UI
-
Ability to plug in Blogger or any simple backend
3️⃣ Secondary / Advanced Option: react-native-moodlemobile (MIT)
If you decide to go Moodle → then switch backend later.
This gives you full course → lesson → activities → participants workflow now.
4️⃣ Later Exploration Only: rightoneducation/righton-app (Apache 2.0)
Too complex now; but a possible long-term inspiration.
🧭 What I can help you do next
If you want, I can:
✔ Analyze each chosen repo folder-by-folder
(you paste directory tree → I describe architecture, screens, components, backend calls)
✔ Compare the architectures
Which one is easier to bend into your "simple backend" plan (Blogger → JSON → custom API)?
✔ Create a unified LMSApi Interface
Something like:
interface LMSApi {
login(): Promise<User>;
listCourses(): Promise<Course[]>;
getCourseSections(courseId: string): Promise<Section[]>;
getLessonContent(lessonId: string): Promise<Lesson>;
}
Then backend switching becomes trivial.
✔ Suggest how to progressively migrate the frontend to TypeScript
Starting from .js → .tsx (safe, minimal refactor).
If you’d like to start with one of the repos right now, tell me which one and I’ll walk you through its structure.
Comments
Post a Comment