lemonfiber companion
A phone app for a lemonfiber stack. It lets you check on and fix your media stack, or ask for something to watch, from your phone instead of from the machine the stack runs on.
It is a native app on iOS and Android, built with NativePHP: Blade templates compile to a native element tree, which the platform draws as SwiftUI or Jetpack Compose. There is no web view.
Status: in development. There is no release and no app-store build yet; to try it you build it yourself.
What it does
Section titled “What it does”Two people use a stack, and the credential they sign in with decides which app they get.
An operator sees a verdict first — whether the stack is healthy — then its findings worst-first, and can act on them: repair, update, snapshot, undo.
A household member sees what is available to them and can ask for something. They are not shown the machinery, because it is not theirs to operate.
What it will not do
Section titled “What it will not do”- Talk to the API itself. Every call goes through
sdk-php. Where the SDK lacks something, the SDK is changed first. - Send anything anywhere. No analytics, no crash reporting, no telemetry. There is no setting for this because there is no code for it.
- Set up a stack. First-run setup happens at the machine. The app says so rather than omitting it silently.
- Accept any certificate. The certificate fingerprint comes from the pairing material and is pinned; a changed certificate is refused, not warned about.
Working on it
Section titled “Working on it”You need PHP 8.5 and Composer.
composer install needs a credential for plugins.nativephp.com: the app uses
a paid NativePHP plugin, and without the credential the download fails with HTTP
402. Put it in Composer’s auth.json or the COMPOSER_AUTH environment
variable, as Composer’s
authentication guide
describes.
composer installcomposer ci # every PHP gate, in the order CI runs themcomposer test # just the test suitecomposer lint:fix # formattingThe code is split into modules under app-modules/. Each module declares what
kind it is, and that declaration generates the rules about what it may depend
on, so a new module is governed from the moment it exists.
ARCHITECTURE.md describes the modules and indexes the
rules in .docs/architecture/, each with the check that
enforces it; a test fails if a rule claims a check it does not have.
.docs/decisions/ records why the code is shaped this way;
product decisions live in the
specification. Read the
contributing guide
and AGENTS.md before your first pull request.
Report a vulnerability privately, as SECURITY.md describes.
Licence
Section titled “Licence”lemonfiber is made by NightWorksIO.
This page lives in another repository Rendered from lemonfiber/lemonfiber-companion at e20a44d, 2026-10-27. Read the source of this page