Skip to content

School-of-Life-Project/Portal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portal

Portal is an app built for independent learners.

Unlike most eLearning applications, Portal is focused on making use of existing learning materials. Any textbook or set of textbooks can be converted into a Portal course, as long as it is available in the EPUB format.

Portal is designed to perform well on low-end hardware and does not require an internet connection to use. All user data is kept on-device.

Screenshots

Binary Installation

Binary releases of Portal can be found on the releases page, and installation instructions can be found on Portal's website.

Building

You will need Rust and Node.js to build this application. In addition, you will need to install the build dependencies for Tauri.

After installing the required dependencies, run npm install in the repository folder.

Then, you can:

  • run the application in development mode with npx tauri dev
  • build an optimized desktop binary with npx tauri build

Hardening

By default, Courses can run arbitrary JavaScript. Although the application frontend is sandboxed, it is possible that malicious JavaScript could escape the sandbox and compromise the system's security.

If you are planning on running Portal in a high-risk environment, you may want to compile a hardened build to disable JavaScript in the Textbook Viewer (at the expense of potentially breaking some Courses). You can do so by running sh harden.sh before compiling the application with npx tauri build.

To validate that you are running a hardened build, press the ⚙️ Settings button on the app's home screen. The application version should no longer be displayed.

Usage

Portal has a built-in user manual, which can be accessed by pressing the 📜 Guide button on the app's home screen.

Architecture

Portal is built using Tauri and Vite.

The Rust-based backend of the application is used to load resources from disk and manage the state of the embedded database. The TypeScript-based frontend of the application is used to render UI elements and display textbooks using epub.js.

UI icons are provided by OpenMoji. Fonts are provided by the system on Windows and MacOS, and a mix of system fonts and custom fonts are used on Linux. On Linux, Liberation Fonts are used for the UI.

Portal is a work in progress. View the development task tracker to see what's being worked on.