Ustad Mobile enables users to teach, learn, and share: online or offline. It is a learning management system (LMS) built from the ground up to work with or without connectivity. Features include:
Want to collaborate on development? Join us on discord: https://discord.gg/WHe35Sbsg4.
Ustad Mobile is currently available in English, Dari, Pashto, and Tajik. Translation is done using on our Weblate project. You do not need to be a programmer! Please register on Weblate and then create an issue with the subject “Localization - language name” and let us know what language you would like to translate into. We can then give you permission to start translating!
Translations are stored as Android strings XML resource files in core/src/commonMain/resources/MR. The project uses Moko-Resources to make strings available on all platforms (including JVM and Javascript).
If adding a new language it should be added to the constant in in SupportedLanguagesConfig.kt and app-android/build.gradle resConfigs should be updated.
Contributions are welcome, there are many ways to contribute as a developer, translator, or user. See the CONTRIBUTING.md for details. If you’re unsure about anything, please join our discord server or create an issue here on GitHub and label it as a question.
The documentation here on Github is intended for those who are contributing to the project (inc translation, software development, bug reporting, testing, etc) and technical users (e.g. developers, server admins). If you want documentation for end users, please see the manual on ReadTheDocs at https://ustadmobile.readthedocs.org/
See INSTALL.md for instructions for installation on your own server using binary downloads.
These instructions are intended for developers who wish to build/run from source code.
This is a Kotlin Multiplatform project. This repository contains the Android app, web app, and backend server source code in its modules. Android Studio is the development environment for the entire project.
Step 1: Download and install Android Studio: If you don’t already have the latest version, download from https://developer.android.com/studio.
Step 2: Make sure that java is on your system path: If you already have OpenJDK17+, you can use that, otherwise you need to download from the Java website or install using your system package manager.
Linux:
Install OpenJDK17+ and ffmpeg using the system package manager e.g.
sudo apt-get install openjdk-18-jdk ffmpeg
Windows:
Download and install Java (JDK17+) if not already installed from the Java site https://www.oracle.com/java/technologies/downloads/#jdk17-windows
The installer should automatically put the java command into the system PATH environment variable.
If you need to do this manually, search for “Environment Variables” in Windows - then “Edit the system environment variables”. Create a new environment variable. Set the variable name to JAVA_HOME and set the value to the directory where you have installed Java.
Now find the PATH variable. Append ;%JAVA_HOME%\bin
to the value and save it.
Further details: see the Java website.
If you don’t have ffmpeg installed, the server can download it for you when you run it for the first time.
Step 3: Import the project in Android Studio: Select File, New, Project from Version Control. Enter https://github.com/UstadMobile/UstadMobile.git and wait for the project to import. Switch to the dev-mvvm-primary branch (Menu: Git - Branches - search for dev-mvvm-primary - checkout ).
Step 4: Build/run the server: Run the server locally:
Linux/MacOS:
$ ./runserver.sh --siteUrl http://your.ip.address:8087/
Windows:
$ runserver.bat --siteUrl http://your.ip.address:8087/
The siteUrl parameter must match the address that you use to access the system (e.g. in the browser or when entering the link on the Android app).
As above, your.ip.address is your IP address (e.g. 192.168.1.2). If the siteUrl changes and the old site url is inaccessible, then this may make content uploaded before the change inaccessible.
This will start the server on port 8087. The admin password will be randomly generated - you can find it in app-ktor-server/data/singleton/admin.txt .
This will run the REST API which is required by the Android and web apps. It will not include the web client app itself. To use the web client app in the browser, you must build/run it (as below).
Note: If self-registration is enabled, you must add an email server configuration to the ustad-server.conf file. See app-ktor-server/README.md for details on using the ustad-server.conf file.
This multi-module Gradle project built using Kotlin Multiplatform. It builds for:
Additional information on coding structure is available as follows:
Code is contained (mostly) in the following modules:
To build / run versions for any given platform please see the README in the module for that platform.
Copyright 2015-2023 UstadMobile FZ-LLC. Documentation: CC-BY license. Code and all other works: AGPLv3 license.