EduBoard is a fullscreen school board for TVs, kiosks, and hallway displays. It takes the data from an EduPage infoscreen and turns it into a cleaner view of today's timetable and school events. The board is capable of energy saving features like powering the screen off using wlr-randr and powering it on only during breaks.
If you just want to run it, the setup is simple: put your EduPage infoscreen details and WEBSITE_URL in .env, start the project with ./run.sh, and open that URL. If you are starting from a fresh Ubuntu Server 24.04 install, there is also a one-command installer that sets up the kiosk machine automatically. Under the hood, the project uses a Python service to talk to EduPage and a React frontend to render the board in the browser.
Use the same keys as .env.example:
SCHOOL_SUBDOMAIN=your-school
SCREEN_ID=1
PASSWORD=your-infoscreen-password
WEBSITE_URL=./run.shIf you want run.sh to activate an existing virtual environment first:
./run.sh /path/to/venvThe helper script updates the repo, installs backend dependencies, builds the frontend, and starts the app on port 8000.
Visit the URL from WEBSITE_URL.
- backend: FastAPI +
httpx - frontend: React + Vite
- runtime: Python + Node.js
- kiosk setup: systemd + Sway + Firefox ESR +
wlr-randr
The board reads from three local endpoints:
GET /api/datafor lookup tables and infoscreen metadataGET /api/timetablefor the current day's timetableGET /api/eventsfor the current day's events
The built frontend is mounted at /.
If you are starting with a fresh Ubuntu Server 24.04 install and want the machine to turn into an EduBoard kiosk automatically, run:
export TERM=xterm-256color
sudo bash -c "$(curl -sSL https://raw.githubusercontent.com/rawnullbyte/EduBoard/refs/heads/main/misc/install.sh)"The installer will:
- install Python, Node.js, Sway, Firefox ESR,
wlr-randr,seatd, and related packages - clone the repository into the kiosk user's home directory
- write the
.envfile from the values entered in the setup wizard - create a Python virtual environment and install backend dependencies
- configure Sway to launch Firefox ESR in kiosk mode against
WEBSITE_URLfrom.env - create and enable a systemd service for EduBoard
- optionally install and authenticate Tailscale
- configure a basic UFW firewall