Giter VIP home page Giter VIP logo

ustadmobile's Introduction

Ustad Mobile

Ustad Mobile enables learners to access and share content offline. It uses peer-to-peer offline networking (using Bluetooth Low Energy and WiFi Direct) to enable users to share content directly without any additional hardware.

Supported content formats:

  • EPUB content: Anything you can do with HTML5 can be in EPUB (video, interactive quizzes, etc).
  • Experience API: TinCan API Zip file (containing tincan.xml)
  • H5P: H5P interactive content
  • MP4, WEBM video

Ustad Mobile is licensed under the AGPLv3 license: please see the LICENSE file for details.

Installing on a server (self-hosting)

See app-ktor-server for instructions on building the server JAR. Then see INSTALL.md for instructions on running the server.

Getting started building from source:

./gradlew app-ktor-server:shadowJar
./runserver.sh

You should now be able to open the web version on http://localhost:8087/ . The admin password will be found in ./app-ktor-server/data/singleton/admin.txt

  • Build and run the Android app : run
./gradlew app-android-launcher:assembleDebug
adb install ./app-android-launcher/build/outputs/apk/debug/app-android-launcher-debug.apk

You should now be able to open the Android app. When the Android app starts, enter the address of the rest server e.g. http://192.168.1.123:8087/ where 192.168.1.123 is the IP address of your development machine.

Contributing

Contributions are welcome! If you're unsure about anything, please create an issue and label it as a question.

  • Localization - Localization is powered by our Weblate server at https://weblate.ustadmobile.com. Please register on the weblate server 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!
  • Feature requests - Let us know what features you would like to see. Create an issue and label it as a feature request.
  • Bug reports - this project is written primarily in Kotlin as a Kotlin Multiplatform. You can create an issue or even send us a pull request.
  • Code contributions - we welcome pull requests. Please ensure your contribution is readable, follows existing patterns and provides the required tests.

Code structure

This multi-module Gradle project built using Kotlin Multiplatform. It builds for:

  • Android (app-android)
  • KTOR Server (JVM) (app-ktor-server)

Code is contained (mostly) in the following modules:

  • core : Contains presenters, view interfaces, and core business logic.
  • sharedse: Contains some shared implementations for operating systems with a disk (JVM/Android)
  • app-ktor-server: Contains the HTTP rest server (implemented using KTOR)
  • app-android: Contains Android implementation, forms the basis of the app in app-android-launcher but can also be used as a library in other apps.
  • app-react: Contains the web version implemented using Kotlin/JS
  • app-android-launcher/: Standalone app launcher that uses app-android.
  • lib-database: core Database and Data Access Object (DAO) classes. See this module's README for further details on the relationship between different database modules.
  • lib-database-entities: Database entity objects
  • lib-database-android Android database implementation (a Room Persistence Framework database generated from lib-database).
  • lib-util: Small utility functions

To build debug / release versions for any given platform please see the README in the directory for that platform.

Configuration management

There are two parts to the configuration:

  • Build configuration : buildconfig.properties contains properties used during the build and testing process.

  • App config : a .properties file that is contained in the assets. This can be overriden when the app is used as a library. By default com/ustadmobile/core/appconfig.properties will be used. This can be overriden by setting the com.ustadmobile.core.appconfig manifest property (e.g. meta-data in AndroidManifest.xml).

The build configuration system uses two .properties files:

  • buildconfig.default.properties: Contains default options
  • buildconfig.local.properties : Contains any custom options and is excluded from git. Any option set in buildconfig.local.properties will override what's set in the default properties.

ustadmobile's People

Contributors

mikedawson avatar kileha3 avatar varunasingh avatar gmhamed avatar anupgoon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.