⚠️ Development branch
| 🚨 |
Do not run This branch ships experimental features that may be unstable, incomplete, or unsafe. For live environments, install a stable release and follow the official docs. |
🧭 Quick navigation
| 📖 Documentation | 🧩 Developer reference | 💬 Community |
|---|---|---|
|
🏗️ Stack
| Layer | Technology | Path |
|---|---|---|
| 🐘 Panel API | PHP 8.5 | backend/ |
| ⚛️ Web UI | Next.js · React · TypeScript | frontendv2/ |
| 🦀 Async jobs | Rust (async-runner) |
runner/ |
| 📦 Installer | Bash | installer/ |
Docker images for the backend, frontend, and async runner are published through the release workflows listed below.
📚 icanhasfeatherpanel public developer docs
icanhasfeatherpanel is FeatherPanel’s static developer reference. No running panel is required to browse it.
What’s included
| Section | Contents |
| ------------------------ | ---------------------------------------------------------------------------------------------------- |
| 🧩 Plugins | Full Markdown guides for building addons (conf.yml, backend, frontend, SDK, packaging, AI recipes) |
| 🧭 Pages | Every frontend Next.js route/slug (pages/all.json) for UI navigation guidance |
| 🧩 Widgets | Injection points as HTML + .md + .json |
| ⌨️ CLI | All featherpanel / php cli commands + production usage (cli/usage.md, cli/all.json) |
| ⚙️ Settings | Admin settings keys, types, options, categories from SettingsController (settings/all.json) |
| 🧰 Installer | install.bash flags, menus, automation env vars (installer/guide.md) |
| 🔐 Permissions | Every permission node as HTML + .md + .json (all.json) |
| 📡 Events | Plugin hooks as HTML + .md + .json (all.json) |
| 🔌 API reference | Redoc UI + raw openapi.json |
| 🧠 RAG index | catalog.json + llms.txt listing every machine-readable doc |
| 🔑 OAuth2 playground | OAuth2 docs (live API calls still need a panel) |
🌐 Live site (GitHub Pages)
https://mythicalltd.github.io/FeatherPanel/icanhasfeatherpanel/
Plugin authoring (Markdown + AI index):
https://mythicalltd.github.io/FeatherPanel/icanhasfeatherpanel/plugins/
RAG / machine-readable index:
- https://mythicalltd.github.io/FeatherPanel/icanhasfeatherpanel/rag/
- https://mythicalltd.github.io/FeatherPanel/catalog.json
- https://mythicalltd.github.io/FeatherPanel/llms.txt
…/pages/all.json, …/cli/all.json, …/cli/usage.md, …/settings/all.json, …/installer/guide.md, …/permissions/all.json, …/events/all.json, …/widgets/index.json, …/api/openapi.json, …/plugins/ai-guide.md.
Hand-authored inputs live in frontendv2/icanhas/ (plugin Markdown, auth guides, assets, schemas). One command — pnpm export:docs — builds the entire public/icanhasfeatherpanel/ tree (widgets, pages, permissions, events, API + OpenAPI, CLI, settings, installer, plugins/auth indexes, RAG). That output is gitignored and produced at ship time for both GitHub Pages (pnpm build:public-docs) and Docker/panel images (host export:docs then frontendv2 image build, or pnpm build:with-docs / make frontend).
# 1. Generate OpenAPI from PHP controller annotations
cd backend
COMPOSER_ALLOW_SUPERUSER=1 composer openapi
2. Export docs + assemble static GitHub Pages site
cd ../frontendv2
pnpm install
pnpm build:public-docs
Output lands in ../docs-site/
Serve it with any static file server, e.g.:
python3 -m http.server 8080 --directory ../docs-site
For a normal panel image / local Next build that should include /icanhasfeatherpanel/:
cd frontendv2
pnpm build:with-docs # export:docs then pnpm build
Optional environment variables for build:public-docs:
| Variable | Purpose |
| ----------------- | -------------------------------------------------------------------------------------- |
| DOCS_OUTPUT_DIR | Output directory (default: docs-site/) |
| DOCS_BASE_PATH | URL prefix for GitHub Pages project sites (CI sets /FeatherPanel from the repo name) |
| OPENAPI_JSON | Path to the generated OpenAPI file |
🔄 CI & workflows
| Workflow | Purpose |
|---|---|
| frontend.yml | Builds the Next.js panel UI |
| backend.yml | PHP lint, migrations, and backend tests |
| runner.yml | Builds and tests the Rust async runner |
| shell-lint.yml | ShellCheck + syntax validation for the installer |
| docs-pages.yml | Generates icanhasfeatherpanel (not committed) + OpenAPI and deploys the static site to GitHub Pages |
| docker-dev.yml | Dev Docker images → GHCR (develop) |
| docker-release.yml | Release Docker images on version tags |
| docker-oci-release.yml | OCI release artifacts |
| codeql.yml | Security analysis (JS/TS) |
| dependency-review.yml | Flags vulnerable dependency changes in PRs |
📊 Code statistics
_Last updated: 2026-10-19T11:10:54.542Z_
| Extension | Files | Lines |
| --- | ---: | ---: |
| .php | 791 | 196,569 |
| .tsx | 632 | 182,581 |
| .ts | 216 | 26,925 |
| .json | 19 | 18,341 |
| .yaml | 5 | 7,763 |
| .rs | 17 | 3,641 |
| .sql | 221 | 3,549 |
| .yml | 26 | 2,947 |
| .css | 6 | 813 |
| Total | 1,933 | 443,129 |
🚀 Try it (stable installer)
These commands install the latest stable build ideal for evaluation, not for running develop in production.
| 🐧 Linux | 🪟 Windows |
|---|---|
|
PowerShell
CMD
|
After installation
- Register the first account it becomes the admin automatically.
- Follow the configuration docs.
- Report bugs on GitHub Issues.
🤝 Contributing
Contributions are welcome. Please read the contributing guide and code of conduct before opening a pull request.
📄 License
FeatherPanel is licensed under the GNU Affero General Public License v3.0.