Searching for Open Source React Native LMS frontend apps with low hosting cost LMS backend

27 & 28 Nov. 2025

Google search AI response for 'Open Source React Native LMS frontend' says:
  • 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.
Of course, Moodle (the very well known and respected Open Source LMS) itself can be used as an LMS backend by an RN frontend. Moodle mobile app, also Open Source, is not an RN or Android/iOS app but a "hybrid app". Google search AI says, "the Moodle mobile app is a hybrid app that uses web technologies (HTML, CSS, JavaScript/TypeScript) and runs within a webview container, with the Apache Cordova framework (also known as PhoneGap) used to access native device features and package the application for different platforms."

Search for lms in the 'Curated List of Open Source React Native Apps',  https://github.com/ReactNativeNews/React-Native-Apps gave 0 results. Neither was there suitable results for 'edu'. I had a quick browse through the list but could not find a suitable entry that could serve as an LMS frontend.

In the context of LMS implemented on Wordpress using plugins, the above list had two apps which may be interesting:
  • 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)]
In the context of LMS implemented on Blogger using templates (less capable than WordPress LMS it seems and fewer in number), in above list, I did not find any RN app related to Blogger blogs neither any generic blog app that may work with Blogger. Above ONA-OPENNEWSAPP app seems to be specific to WordPress blogs.

Extracts/points from CG chat, "Open Source RN LMS evaluation" on 28 Nov. 2025

Me: ... Do you think it is worth exploring frappe lms for my needs? What's the reputation of frappe lms ? How popular is it?

CG ...

🧑‍💻 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.

...

CG: ... 

🎯 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

...
CG: ...

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:

https://example.com/wp-json/wp/v2/posts

✔ 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.

...
CG ...Your understanding is correct: when you use a free plan on WordPress.com, you cannot install arbitrary plugins (or custom REST-API plugins), so your idea of using a free WordPress.com blog + React-Native frontend will not work (at least not in a flexible way). Here’s a detailed explanation, with sources.

✅ What is WordPress.com vs WordPress.org


🚫 Plugin / REST API restrictions on WordPress.com free plan

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)

FeatureBlogger (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:

<!-- LMS_META {"duration": "10min", "video": "https://youtube.com/..."} LMS_META -->

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.

...
Me: This is not a curated app:  react-native-moodlemobile , https://github.com/costvin15/react-native-moodlemobile - MIT license, has 38 starts. 
What do u think about it?
...
Me: The big advantage that I see with this is that I get a jump start on the RN app. To test, if I could simply create a login on Moodle and use some standard course it may have that would be great. Worst case, I could even have a bare minimum local Moodle setup.

If this RN app works with that, and I feel the functionality is reasonable (the screenshots are minimal and don't give enough idea of the app), then I could use this as a base, and then have a configuration variable that tells me whether to use Moodle or Blogger. Next I can implement the Blogger related stuff.
What do u say?

CG: ... Let me break down why your idea is solid and what the path looks like.

✅ 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:

  1. Install Local Moodle using “Moodle in Docker” or “Bitnami Moodle” or “MAMP/XAMPP”.

  2. Create a dummy admin account.

  3. Load the “Standard Demo Course”.

  4. Configure .env in the RN app:

    MOODLE_HOST=http://localhost:8080 MOODLE_SERVICE=moodle_mobile_app MOODLE_ADMIN_TOKEN=...
  5. 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:

BACKEND=MOODLE | BLOGGER

Then your RN project structure becomes:

src/ api/ moodleApi.ts bloggerApi.ts screens/ components/ utils/

Your API interface can be unified:

interface LMSApi { login(email, password) getCourses() getCourseLessons(courseId) getLessonContent(lessonId) }

Then implement this interface twice:

  • MoodleApi → uses existing Moodle endpoints.

  • BloggerApi → uses Blogger REST v3 + labels + posts.

And toggle via config:

import { BACKEND } from "../config"; const api = BACKEND === "MOODLE" ? MoodleApi : BloggerApi;

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.

...
Me: I browsed through src/screens on the GitHub repo. There are quite a few screens. One thing strange though - For each screen, like Login screen, there is a Login folder within which there are index.js, provider.js and styles.js files with index.js importing provider.js which has functions which it exports (like a util.js). I am more used to having Login.js and styles.js. Your comments please

...
Me: Oh I see! If it is a known even if uncommon pattern, then that's fine. I got confused by the provider.js name as that usually implies a component providing context (I may not be using correct words here) like say a StrapiProvider.
Also the code is .js whereas I prefer .ts as it reduces bugs being injected by wrong names and types. But that's not so big an issue, I think.
....
The CourseContext folder in screens has a View folder with index.js and two subfolders Activities and Participants. I expected to see a CourseContent kind of component. But I don't know Moodle. What could Activities component be in this case? Could it have the course content/lesson content?

...
Me: this is from the Activities/provider.js:
import {callMoodleWebService} from '../../../../api/helper';

export const getSectionAndActivities = async courseid => {
  const response = await callMoodleWebService('core_course_get_contents', {
    courseid,
  });

  for (const section of response) {
    for (const module of section.modules) {
      const modicon = await fetch(module.modicon);
      const {type} = await modicon.blob();
      module.modicontype = type;
    }
  }

  return response;
};

export default {getSectionAndActivities};
-----
this is from index.js:
  useEffect(() => {
    Provider.getSectionAndActivities(route.params.id).then(data => {
      setSections(data);
      setIsLoading(false);
    });
  }, [route.params.id]);

CG: Great — this makes it very clear what the Activities component really is.

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.



Me: Great! So this is the key folder/component which gets the course data and shows it to the user. Am I right?

CG: Yes — you are exactly right. ...

Me: ...  This discussion leads me to seriously consider trying out this project even if I will have to do some Moodle setup and learn some minimal Moodle stuff to check whether it is working correctly before I switch it to Blogger.
Also note that even its Moodle functionality would be useful in some cases where an NGO already has a Moodle setup or is willing to consider it.

Meanwhile can you find whether there are any other Open Source React native LMS frontends available on the web?
...

Me: hope-elearning-mobile, MIT License - Seems interesting. Will check out.
lms-app, says MIT License in Readme but license link is broken. - Seems to be limited to enrolling students to a course. So not so promising.
lms-react-native + lms-api - Does NOT have Open Source license. I know this code very well now as I went through the whole tutorial. But author has not permitted usage beyond learning.
React-Native-Learning-App - No License, Readme is mainly a demo video but that video does not play! I don't think this is useful.

BTW https://raviswdev.blogspot.com/2025/04/react-native-education-apps-open-source.html?utm_source=chatgpt.com is my blog post. I had forgotton that I had put it up in April this year. Thanks for reminding me. At the time I put it up I think I had just started or not even started to learn React Native. So I was not able to assess the GitHub repo code links. Now that I have reasonable understanding of RN and Expo code, I am able to go through the GitHub repos and get some assessment of whether for my current needs, it will be useful to me or not.

From the post, I found this to interesting from my current needs point of view:
https://github.com/EduardoRodriguesF/e-learning , has MIT license, seems to be limited to videos but even if that is working, adding text content may not be a major issue. So I plan to look more closely at it.
https://github.com/rightoneducation/righton-app , has Apache 2.0 license - React Native mobile app & React web app - Seems to be rather complicated and lacks screenshots in Readme. But I may have a closer look at it later on.

CG: Great — now that you have filtered the list with your current RN + Expo experience, your assessment is exactly right. Let me respond to each point, and then give you a prioritized roadmap of which ones are worth your time right now.

✅ 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