No description
  • Go 88.4%
  • Python 6.4%
  • HTML 2%
  • Nix 1.4%
  • Shell 1.1%
  • Other 0.7%
Find a file
2026-04-09 14:10:07 -05:00
.claude Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
dev_scripts Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
docs Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
internal Remove unused method 2026-04-07 09:43:49 -05:00
nixos Simplify asset handling 2026-03-25 20:33:58 -05:00
packaging Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
scripts Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
share/rhemawave Cleanup TOS pages, prepare for new pages 2026-03-13 18:16:47 -05:00
vendor Remove call to files.neilclack.com 2026-04-09 09:31:55 -05:00
.envrc Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
.gitignore Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
flake.lock Remove call to files.neilclack.com 2026-04-09 09:31:55 -05:00
flake.nix Update audioFile 2026-04-09 14:10:07 -05:00
go.mod Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
go.sum Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
maintainer-guide.md Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
MANUAL.md Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00
README.md Update Database 2026-03-23 15:02:07 -05:00
rhemawave.go Initial release: RadiantWave v1.0 2026-03-12 08:05:10 -05:00

RhemaWave

A Go-based fullscreen SDL2/OpenGL application for Linux kiosk systems. Displays proclamations with audio playback and animated visual patterns.

Development

Development uses Nix for a reproducible build environment.

nix develop                                # enter dev shell
go build -o bin/rhemawave rhemawave.go     # build
./bin/rhemawave                            # run
./dev_scripts/reset.sh                     # reset database (if needed)

Prerequisites

  • Nix with flakes enabled
  • A display server (X11/Wayland) and audio device for running the application

Architecture

  • Page-based UI — SDL2/OpenGL 3.3 fullscreen rendering with a page stack for navigation
  • Proclamation player — scrolling text display with synchronized audio playback
  • Startup validation — WiFi, TOS acceptance, email, license key checks
  • Singleton managers — ShaderManager, FontManager, Logger (initialized once via sync.Once)

Key Directories

bin/                          # build output (gitignored)
share/rhemawave/              # assets (fonts, shaders, proclamations, TOS)
internal/                     # Go source packages
packaging/                    # deployment configs (kiosk, updater, polkit)
dev_scripts/                  # developer utilities

Runtime Data

Stored in ~/.local/share/rhemawave/:

  • data.db — SQLite database (config, proclamations, logs)
  • log.txt — application log
  • license_key — license key file

Development Rules

These rules must be followed during the development of RhemaWave to retain a maintainable application.

  1. The Application package is soley responsible for managing the database handler, and the configuration cache. Internal packages may update the configuration within the database, and then signal the application to refresh the cache via a callback function refreshCache().

Deployment

Deployed to kiosk hardware via NixOS-Anywhere. See packaging/ for kiosk system configs.