View .md

icanhasfeatherpanel developer docs

What icanhasfeatherpanel is, where to open it on your panel or on GitHub Pages, what it contains for plugin authors and how it relates to this site.

On this page

icanhasfeatherpanel is the developer documentation that ships with FeatherPanel itself. The hand-written guides live in the FeatherPanel repository under frontendv2/icanhas/. A build step adds generated reference pages and publishes the result in two places.

Where to open it

WhereURL
On your own panelhttps://<your panel>/icanhasfeatherpanel/. The official Docker images run pnpm export:docs before the frontend build, so the docs match the version you run.
On GitHub Pagesmythicalltd.github.io/FeatherPanel/icanhasfeatherpanel, rebuilt from the develop and main branches.
In the sourcefrontendv2/icanhas/ in the FeatherPanel repository.

With developer mode on, typing ##icanhasfeatherpanel in the panel’s global search opens the debug console, which has a button that opens these docs. See Debugging plugins.

What it contains

SectionContents
PluginsGuides for conf.yml, backend routes, the database, cron and commands, middleware and hooks, the frontend, public pages, themes, UI packs, the Power SDK, packaging, examples and recipes. Also an ai-guide.md written for AI coding tools.
AuthOIDC single sign-on and passkeys.
Pages, widgetsEvery frontend page and widget slot, generated from the frontend source.
Events, permissionsEvery plugin event and permission node, generated from the backend.
APIThe OpenAPI specification with a browser for it, and an OAuth2 playground.
CLI, settings, installerGenerated references for the panel CLI, panel settings and the installer script.
Machine-readable filesllms.txt, catalog.json, plugins/index.json, a RAG export, and JSON Schemas for theme packs, UI packs and overrides.json under schemas/.

The JSON Schemas are useful in an editor. Map Frontend/theme.json, Frontend/ui.json and Frontend/overrides.json to the matching file under schemas/, for example with the json.schemas setting in VS Code, to get completion and catch mistakes before you ship. The file formats themselves are described on Themes and UI packs.

How it maps to this site

The plugin section of this site covers the same ground, checked line by line against the panel source:

icanhasfeatherpanel guidePage on this site
getting-started.mdBuild your first plugin, Plugin structure
conf-yml.mdManifest (conf.yml), Settings
backend.mdRoutes and permissions
database.mdMigrations and storage
cron-and-commands.mdCron jobs and CLI commands
middleware-and-hooks.mdMiddleware and router hooks, Lifecycle and events
frontend.md, public-pages.md, power-sdk.mdFrontend and Power SDK, Widget slots
themes.md, ui-packs.mdThemes and UI packs
packaging.mdPackaging and publishing
examples.md, recipes.mdExamples
events.md, ../events/Event reference

Things to keep in mind when you read both:

  • The CLI is php cli <command> from the backend folder. There is no php fuse command.
  • registerServerRoute needs the name of the server path parameter as its fifth argument, before the methods list, and every controller receives ($request, $parameters). See Routes and permissions.
  • Cron intervals must use upper-case units such as 5M or 1H.
  • The icanhas pages describe the develop branch. Mixin registration, saved conf.yml defaults, enforced required and validation, exact S seconds plus the MO and Y cron units, and plugin CLI commands in Docker are fixed in v1.5.3 (PR #365). This site marks what differs on v1.5.2 and earlier.
  • events.md lists every event id. The Event reference is generated from the same event classes and checked against that list on every sync.

Frequently asked questions

Is icanhasfeatherpanel the same as these docs?

No. It is a separate set of developer docs kept in the FeatherPanel repository and shipped with the panel. The plugin pages on this site were written from the same source code and from those guides, and point out where the two differ.

Why is it called icanhasfeatherpanel?

It is the name of the folder and URL the panel uses for its developer docs, and the global search command that opens the debug console.