# Extensions

Extensions are the primary way to extend the functionality of the Panel. They allow you to add backend logic, frontend interfaces, database migrations, and deep system integrations in a structured and controlled way.

For a high-level architectural breakdown of how extensions work within the system, see the [Technical Overview section](/docs/panel/overview#technical-overview).

## Getting Started

If you are new to extensions, start here:

- [Installing Extensions](/docs/panel/extensions/installing-extensions) - Install `.c7s.zip` extensions in the Panel
- [Uninstalling Extensions](/docs/panel/extensions/uninstalling-extensions) - How to remove extensions and what happens to their data
- [Disabling Extensions](/docs/panel/extensions/disabling-extensions) - Turn an extension off without uninstalling or recompiling it
- [Switching to the Heavy Image](/docs/panel/extensions/switching-to-the-heavy-image) - Use the `:heavy` Docker image variant to enable extension support in a containerized setup
- [Patching and Adding Translations](/docs/panel/extensions/patching-translations) - Override the Panel's built-in translations or add a new language on the heavy image
- [Development Environment](/docs/panel/extensions/dev-environment) - Set up a local environment for building extensions
- [Extension File Structure](/docs/panel/extensions/file-structure) - How extensions are structured across frontend, backend, and database layers

## Concepts

Extensions are built around several core systems:

- [Theming](/docs/panel/extensions/concepts/theming) - Customize the look and feel of the Panel interface
- [Events](/docs/panel/extensions/concepts/events) - React to system and user actions
- [Settings](/docs/panel/extensions/concepts/settings) - Define configurable extension options
- [Routing](/docs/panel/extensions/concepts/routing) - Add custom backend routes
- [Permissions](/docs/panel/extensions/concepts/permissions) - Control access to extension features
- [CLI Commands](/docs/panel/extensions/concepts/cli-commands) - Extend the Panel command line interface
- [Background Tasks and Shutdown Handlers](/docs/panel/extensions/concepts/background-tasks-and-shutdown-handlers) - Run async or lifecycle-based logic
- [Update Checks and Extension Calls](/docs/panel/extensions/concepts/update-checks-and-extension-calls) - Communicate between extensions and system services
- [Frontend API Calls](/docs/panel/extensions/concepts/frontend-api) - Interact with backend APIs from the UI
- [Activity Logging](/docs/panel/extensions/concepts/activity-logging) - Record extension-related actions
- [Translations](/docs/panel/extensions/concepts/translations) - Provide multi-language support
- [Mounting UI](/docs/panel/extensions/concepts/mounting-ui) - Inject UI elements into the Panel interface
- [Quick Actions](/docs/panel/extensions/concepts/quick-actions) - Add entries, categories and prefix modes to the command palette
- [Toasts](/docs/panel/extensions/concepts/toasts) - Show transient feedback to the user
- [Extending Models](/docs/panel/extensions/concepts/extending-models) - Add fields to existing data models
- [Email Templates](/docs/panel/extensions/concepts/email-templates) - Define custom email templates for notifications and communications
- [Speaking Game Protocols](/docs/panel/extensions/concepts/speaking-game-protocols) - Open raw TCP/UDP tunnels to a server's port to query it directly
- [File Storage](/docs/panel/extensions/concepts/file-storage) - Manage files and directories within the Panel
- [Forms](/docs/panel/extensions/concepts/forms) - Add fields to the Panel's existing forms
- [User Settings](/docs/panel/extensions/concepts/user-settings) - Store per-user preferences that sync across devices

## Installation Methods

Extensions can be installed in multiple ways depending on your setup:

- Docker-based installation (requires `:heavy` or `:nightly-heavy` image)
- Development environment installation
- Manual `.c7s.zip` placement into the extensions directory

See [Installing Extensions](/docs/panel/extensions/installing-extensions) for full instructions.

## Structure Overview

Extensions follow a standardized multi-part structure consisting of:

- Frontend (React-based UI layer)
- Backend (Rust-based logic layer)
- Database migrations (optional)

This structure defines how extensions are loaded, initialized, and integrated into the Panel.

For a complete breakdown of directories, required files, package naming, and extension entrypoints, see [Extension File Structure](/docs/panel/extensions/file-structure).