NeilClack 6c89a89050 docs: add Phase 0 schedule API/data contract and fixtures
Add docs/schedule-api-contract.md (current state, time semantics, schedule
data model, validation rules, endpoints, sync behavior, System Name rules,
dynamic audio, backward compatibility, per-phase touchpoints, open items,
changelog) and docs/fixtures/*.json (daily, weekly, none, midnight-crossing,
adjacent, dynamic-audio, and legacy v2 payloads). Kept byte-identical with
the radiantwave repo.
2026-09-29 08:36:31 -05:00
2026-09-11 15:36:03 -05:00
2026-09-11 19:07:21 -05:00
2026-02-24 12:08:01 -06:00
2026-07-06 21:01:41 -05:00
2026-01-13 16:21:12 -06:00
2026-07-17 13:28:40 -05:00
2026-09-11 12:44:44 -05:00
2026-01-20 08:40:05 -06:00
2026-01-13 16:21:12 -06:00

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
S
Description
No description provided
Readme
2 MiB
Languages
TypeScript 89.3%
Svelte 9.5%
HTML 1%
Dockerfile 0.1%