copySchedule copies one License Key's Schedule to one or more other keys by value in a single Prisma transaction (all targets or none), assigning fresh Block IDs and preserving each block's dynamicAudio and Proclamation order. Source/targets are scoped to the caller's account; self-copy and empty target lists are rejected. The resulting schedule is run through the shared validator before commit. Adds tests: daily/weekly copy, overwrite, multiple targets, rollback, cross-account rejection, new IDs, changed version/ETag, copy independence, and Kiosk-payload parity with the shared fixtures.
Radiant Wave Technologies - User Portal
A combination application that combines the main Radiant Wave API with a user-facing account management application, and an admin-facing platform management application. An all-in-one management platform for Radiant Wave and Radiant Wave Technologies.
SvelteKit 2 + Svelte 5 + Tailwind CSS v4 + Prisma 7 + PostgreSQL + Better-Auth.
Deployment
This application runs inside of a Docker container, defined by the Dockerfile found within this repo.
Codeberg/Gitea actions are triggered on push actions to the main branch, and build the docker container.
The docker container is then uploaded to the Digital Ocean Container Registry, where it is pulled into an
App Platform application and run.
To build the Docker container locally (with podman), ensuring builds pass prior to pushing to main:
podman build --platform linux/amd64 -t registry.digitalocean.com/radiantwave-portal-container-registry/portal:latest .
To build the Docker container on a Linux machine, such as a Forgejo Action Runner:
docker build -t registry.digitalocean.com/radiantwave-portal-container-registry/portal:latest .
Then push to the container registry:
podman push registry.digitalocean.com/radiantwave-portal-container-registry/portal:latest
Development
Admin
Admin pages live under /admin (requires roleId <= 3); /admin redirects to
/admin/profiles. Each route owns its own form and modal logic, built on the shared
DataTable.svelte and AdminModal.svelte components. The generic $lib/svelte-admin
CRUD layer has been removed; see docs/ADMIN_OVERHAUL.md for the migration notes.
| Route | Notes |
|---|---|
/admin/users |
Name, Email, Role |
/admin/profiles |
Reference implementation |
/admin/proclamations |
Super-only content edits |
/admin/solfeggio-frequencies |
|
/admin/proclamation-categories |
Draggable reorder |
/admin/proclamation-groups |
Draggable reorder |
/admin/license-keys |
List-only + rotate |