Skip to content

LearnersBlock/learners-block

learnersblock.org

Description

An open-source project that lets individuals and organisations provide their educational resources, websites and apps to users offline.

More info at: https://learnersblock.org

Documentation

All of our documentation is available here.

Technical Details

This project is made possible by Balena OS, an operating system designed for IoT devices. On top of the OS goes the code provided in this repository. For more details on the technical structure of the operating system and this code, please see our technical details page.

Installation

Development Notes

On the GitHub release page you will find a 'pre-release' tagged 'development' which contains all the latest commits from the 'main' branch. These images are linked to our servers for automatic updates but receive all updates as soon as they are pushed to the 'main' branch.

Development Instructions

A Docker based development environment is available. If you require each component individually, see the README file in the component's folder.

Frontend

Start the development environment:

docker-compose -f docker-compose-dev.yml up --build

The development environment is accessible through:

http://0.0.0.0:8081

Note: Ensure Docker has access to sufficient 'CPUs' and memory via the Docker preferences page before running.

Using the environments

After the containers start, required Node modules will be installed and development services run. This may take some time on the first run, please be patient.

Changing files in the folders on your system will trigger the reload on hot-reload components.

All development changes will require testing through the Balena OS and relevant hardware before being deployed to our public fleet of devices. We will do our best to help with this but encourage as thorough testing as possible before submitting Pull Requests. Follow the Balena local deployment documentation on how to deploy to a local device.

Production

Pre-built

Learner’s Block software is provided as a complete package ready to flash to an SD card, including an operating system with automatic updates. To benefit from these automatic updates download the image files from our downloads page.

Alternatively, you can find these images as well as development images on the GitHub releases page.

Development images will receive updates on all commits, whereas production images will only receive updates on new releases.

Deploy locally

You may deploy the code to a device locally. This approach, however, will not benefit from automatic updates, and we cannot offer support for its use. Building all the required components on low-powered devices will also take a considerable time or may fail.

In order to prepare the code from this repository for deployment to a device:

  1. Download the OS for your device and flash it to your memory card.
  2. Clone this repository.
  3. After installing the Balena CLI, run balena push hostname-of-your-device.local to deploy.

More information on local deployments is available from Balena:

Balena Local Deployments

Deploy to your own server

As open-source software, you can deploy to your own Balena instance and serve your own updates. We cannot however support installation and use via this method.

Balena Server Based Deployments

Feature requests

We thrive to ensure the features developed are those most in line with the community's needs. That is why all feature requests are made through our voting platform, where users can add ideas and vote for those they feel most important. Please utilise this voting platform rather than adding feature requests to this repository.

Contributing

Pull requests

We welcome contributions, they are what keep the Block alive! For pull requests we suggest discussing the changes through a ticket first. This is for your own sake in case there are already changes ongoing that will affect your contribution.

If you are looking to contribute but do not have a specific feature or goal in mind, please check the list of Good First Issues and our voting platform, which contains a list of features prioritised by the community.

Bug reports

For bug reports, please search existing issues before posting a ticket.

Translation of the interface

We encourage translations and adjustments to current translations on all our components. These can be contributed via Weblate.

Donations

As with all community projects, we do incur costs. You can see everything we have spent, everything we have been donated and you can donate through our funding page.

Security & Privacy

Details on security and privacy can be found in our documentation.

License

Learner’s Block is released under the GPL-3.0 License

Attribution

Many great open-source projects provide the foundation to make this possible, and we would like to thank and recognise them all: