# Developer Guides Index

**URL:** https://meta.discourse.org/t/developer-guides-index/308036
**Category:** Developer Guides
**Tags:** index
**Created:** [May 15, 2024, 6:05am UTC](https://meta.discourse.org/t/developer-guides-index/308036 "2024-05-15T06:05:51Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Discourse](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/discourse/32/148734_2.png) [@Discourse](https://meta.discourse.org/u/Discourse)
#### Post date: [May 15, 2024, 6:05am UTC](https://meta.discourse.org/t/developer-guides-index/308036/1 "2024-05-15T06:05:51Z")

</div>

Documentation about extending Discourse with plugins, themes, and theme components, working with the core code, and using the Discourse API.

## Introduction

- Introduction: [Introduction to Discourse Development](https://meta.discourse.org/t/-/349939?silent=true)

## Development Environments

- Dev Container: [Developing Discourse using a Dev Container](https://meta.discourse.org/t/-/336366?silent=true)
- GitHub Codespaces: [Developing Discourse on GitHub Codespaces](https://meta.discourse.org/t/-/336131?silent=true)
- Docker setup: [Install Discourse for development using Docker](https://meta.discourse.org/t/-/102009?silent=true)
- macOS setup: [Install Discourse on macOS for development](https://meta.discourse.org/t/-/15772?silent=true)
- Ubuntu/Debian setup: [Install Discourse on Ubuntu or Debian for Development](https://meta.discourse.org/t/-/14727?silent=true)
- Windows setup: [Install Discourse on Windows for development](https://meta.discourse.org/t/-/75149?silent=true)
- Non-Docker plugins: [Install plugins in your non-Docker development environment](https://meta.discourse.org/t/-/205337?silent=true)
- Local setup: [Set up a local Discourse Development Environment?](https://meta.discourse.org/t/-/182882?silent=true)
- Multisite setup: [Set up a multisite development environment](https://meta.discourse.org/t/-/229310?silent=true)
- Fedora setup: [Set up Discourse for development on Fedora Linux](https://meta.discourse.org/t/-/163348?silent=true)

## Code & Internals

- Ember components: [Add Ember Components to Discourse](https://meta.discourse.org/t/-/48891?silent=true)
- UI kit: [The UI kit of shared Discourse components, helpers, and modifiers](https://meta.discourse.org/t/-/411319?silent=true)
- Lint and format: [Automatically lint and format code before commits](https://meta.discourse.org/t/-/132947?silent=true)
- Acceptance tests: [Write acceptance tests and component tests for Ember code in Discourse](https://meta.discourse.org/t/-/49167?silent=true)
- Run test suites: [How to run Discourse core, plugin and theme QUnit test suites](https://meta.discourse.org/t/-/66857?silent=true)
- Version compatibility: [Pinning plugin and theme versions for older Discourse installs (d-compat branches)](https://meta.discourse.org/t/-/272665?silent=true)
- Ember object ownership: [Ember object ownership (getOwner, service injections, etc.)](https://meta.discourse.org/t/-/292080?silent=true)
- JS performance: [Using Google’s ‘tachometer’ to measure JS performance changes in Discourse](https://meta.discourse.org/t/-/281158?silent=true)
- CI with GitHub Actions: [Setup Continuous Integration using GitHub Actions](https://meta.discourse.org/t/-/240150?silent=true)
- Markdown extensions: [Developer’s guide to Markdown extensions](https://meta.discourse.org/t/-/66023?silent=true)
- Converting modals: [Converting modals from legacy controllers to new DModal component API](https://meta.discourse.org/t/-/268057?silent=true)
- DModal API: [Using the DModal API to render Modal windows (aka popups/dialogs) in Discourse](https://meta.discourse.org/t/-/268304?silent=true)
- JS API: [Using the JS API](https://meta.discourse.org/t/-/41281?silent=true)
- Plugin outlet connectors: [Using Plugin Outlet Connectors from a Theme or Plugin](https://meta.discourse.org/t/-/32727?silent=true)
- modifyClass: [Using modifyClass to change core behavior](https://meta.discourse.org/t/-/262064?silent=true)
- Creating routes: [Creating Routes in Discourse and Showing Data](https://meta.discourse.org/t/-/48827?silent=true)
- Authentication method: [Adding a new ‘managed’ authentication method to Discourse](https://meta.discourse.org/t/-/106695?silent=true)
- Accidental serialization of ActiveRecord models: [Preventing accidental serialization of ActiveRecord models](https://meta.discourse.org/t/-/314495?silent=true)
- Overriding templates: [(not recommended) Overriding Discourse templates from a Theme or Plugin](https://meta.discourse.org/t/-/247487?silent=true)
- Service objects: [Using service objects in Discourse](https://meta.discourse.org/t/-/333641?silent=true)
- System specs: [Write end-to-end system specs for the Discourse user interface](https://meta.discourse.org/t/-/325937?silent=true)
- FormKit: [Discourse toolkit to render forms.](https://meta.discourse.org/t/-/326439?silent=true)
- AppEvents Triggers: [AppEvents Triggers Reference](https://meta.discourse.org/t/-/338465?silent=true)
- Transformers: [Using Transformers to customize client-side values and behavior](https://meta.discourse.org/t/-/349954?silent=true)
- Topic List Customization: [Customizing the topic list](https://meta.discourse.org/t/-/350411?silent=true)
- CSS guidelines: [Guidelines for CSS classes using BEM](https://meta.discourse.org/t/-/361851?silent=true)
- JS type hinting & validation: [JavaScript type hinting & validation (typescript)](https://meta.discourse.org/t/-/395136?silent=true)
- Designing for Devices: [Designing for Different Devices (Touch & Hover)](https://meta.discourse.org/t/-/367810?silent=true)
- Designing for Responsive Widths: [Designing for Responsive Widths (Breakpoints, Viewport & Containers)](https://meta.discourse.org/t/-/409279?silent=true)
- Gesture primitives: [Drag, resize, and gesture primitives](https://meta.discourse.org/t/-/410549?silent=true)
- Bundle splitting: [Bundle splitting for plugins](https://meta.discourse.org/t/-/411886?silent=true)

## Plugins

- Basic plugin: [Developing Discourse Plugins - Part 1 - Create a basic plugin](https://meta.discourse.org/t/-/30515?silent=true)
- Plugin outlet: [Developing Discourse Plugins - Part 2 - Connect to a plugin outlet](https://meta.discourse.org/t/-/31001?silent=true)
- Site settings: [Developing Discourse Plugins - Part 3 - Add custom site settings](https://meta.discourse.org/t/-/31115?silent=true)
- Git setup: [Developing Discourse Plugins - Part 4 - Setup git](https://meta.discourse.org/t/-/31272?silent=true)
- Admin interface: [Developing Discourse Plugins - Part 5 - Add an admin interface](https://meta.discourse.org/t/-/31761?silent=true)
- Acceptance tests: [Developing Discourse Plugins - Part 6 - Add acceptance tests](https://meta.discourse.org/t/-/32619?silent=true)
- Publish your plugin: [Developing Discourse Plugins - Part 7 - Publish your plugin](https://meta.discourse.org/t/-/101636?silent=true)
- New locales: [Add a new locale from plugin](https://meta.discourse.org/t/-/78962?silent=true)
- Chat integration: [Add a new provider to discourse-chat-integration](https://meta.discourse.org/t/-/68156?silent=true)
- markdown-it extension: [Repackaging a markdown-it extension as a Discourse plugin](https://meta.discourse.org/t/-/84614?silent=true)
- Rails autoloading: [Structuring a plugin for Rails autoloading](https://meta.discourse.org/t/-/256092?silent=true)

## Themes & Components

- Developing Themes: [Developing Discourse Themes & Theme Components](https://meta.discourse.org/t/-/93648?silent=true)
- Quick reference: [Theme Developer Quick Reference Guide](https://meta.discourse.org/t/-/110448?silent=true)
- Designers guide: [Designer’s Guide to getting started with themes in Discourse](https://meta.discourse.org/t/-/152002?silent=true)
- Theme Creator: [Get started with Theme Creator and the Theme CLI](https://meta.discourse.org/t/-/108444?silent=true)
- Theme CLI: [Install the Discourse Theme CLI console app to help you build themes](https://meta.discourse.org/t/-/82950?silent=true)
- Theme structure: [Structure of themes and theme components](https://meta.discourse.org/t/-/60848?silent=true)
- Multiple JS files: [Split up theme Javascript into multiple files](https://meta.discourse.org/t/-/119369?silent=true)
- Multiple SCSS files: [Split up theme SCSS into multiple files](https://meta.discourse.org/t/-/115126?silent=true)
- Theme settings: [Add settings to your Discourse theme](https://meta.discourse.org/t/-/82557?silent=true)
- Objects for theme settings: [Objects type for theme setting](https://meta.discourse.org/t/-/305009?silent=true)
- Migrate settings: [Migrate Discourse theme settings](https://meta.discourse.org/t/-/287783?silent=true)
- Theme metadata: [Adding metadata and screenshots to a Theme](https://meta.discourse.org/t/-/119205?silent=true)
- Core variables: [Use Discourse Core Variables in your Theme](https://meta.discourse.org/t/-/77551?silent=true)
- Localizable strings: [Add localizable strings to themes and theme components](https://meta.discourse.org/t/-/109867?silent=true)
- E2E testing: [End-to-end system testing for themes and theme components](https://meta.discourse.org/t/-/281579?silent=true)
- Minimizing maintenance: [Minimizing Maintenance on Theme Customizations](https://meta.discourse.org/t/-/261388?silent=true)
- Font sizes: [Change font sizes in your themes](https://meta.discourse.org/t/-/120927?silent=true)
- Include assets: [Include assets (e.g. images, fonts) in themes and components](https://meta.discourse.org/t/-/62459?silent=true)
- Custom icons: [Replace Discourse’s default SVG icons with custom icons in a theme](https://meta.discourse.org/t/-/115736?silent=true)
- Dark mode: [Update themes and plugins to support automatic dark mode](https://meta.discourse.org/t/-/161595?silent=true)
- Theme modifiers: [Theme modifiers: A brief introduction](https://meta.discourse.org/t/-/150605?silent=true)
- Pseudo-elements: [Insert text or images anywhere on your site using CSS pseudo-elements](https://meta.discourse.org/t/-/99200?silent=true)
- Font component: [Create and share a font theme component](https://meta.discourse.org/t/-/62462?silent=true)
- Highlight.JS language: [Install a new language for Highlight.JS via a theme component](https://meta.discourse.org/t/-/292480?silent=true)
- Homepage content: [Add custom content that only appears on your homepage](https://meta.discourse.org/t/-/131415?silent=true)
- Message format: [Message Format support for localization](https://meta.discourse.org/t/-/7035?silent=true)
- Global icon changes: [Change icons globally](https://meta.discourse.org/t/-/87751?silent=true)
- Alternative icons: [Alternative icons](https://meta.discourse.org/t/-/206693?silent=true)
- Wiki post style: [Change the style of a wiki post](https://meta.discourse.org/t/-/78881?silent=true)
- Color scheme: [Create and share a color scheme](https://meta.discourse.org/t/-/61196?silent=true)
- Navigation menu: [Use the `navigation_menu` query parameter to preview the sidebar or other options](https://meta.discourse.org/t/-/258401?silent=true)
- Post content styles: [Customize posts’ contents with your own styles](https://meta.discourse.org/t/-/257738?silent=true)
- Theme screenshots: [Adding preview screenshots to Discourse themes](https://meta.discourse.org/t/-/365083?silent=true)
- Themeable site settings: [Controlling site settings with themes](https://meta.discourse.org/t/-/374376?silent=true)

## General Guides

- White-labelling mobile apps: [Things to consider before deciding to white-label the Discourse Mobile apps](https://meta.discourse.org/t/-/53063?silent=true)
- Custom automations: [Create custom Automations](https://meta.discourse.org/t/-/275931?silent=true)
- Public data dump: [Discourse Public Data Dump](https://meta.discourse.org/t/-/264748?silent=true)
- AI evals: [Run Discourse AI evals](https://meta.discourse.org/t/-/390080?silent=true)
- AI bot via API: [Using the AI bot via the Discourse API](https://meta.discourse.org/t/-/412826?silent=true)

## Theme Dev Tutorial

- 1 - Introduction: [Theme Developer Tutorial: 1. Introduction](https://meta.discourse.org/t/-/357796?silent=true)
- 2 - Remote Theme: [Theme Developer Tutorial: 2. Creating a remote theme](https://meta.discourse.org/t/-/357797?silent=true)
- 3 - CSS: [Theme Developer Tutorial: 3. CSS in Themes](https://meta.discourse.org/t/-/357798?silent=true)
- 4 - Outlets: [Theme Developer Tutorial: 4. Using Outlets to insert and replace content](https://meta.discourse.org/t/-/357799?silent=true)
- 5 - Components: [Theme Developer Tutorial: 5. Building and using components](https://meta.discourse.org/t/-/357800?silent=true)
- 6 - JS API: [Theme Developer Tutorial: 6. Using the JS API](https://meta.discourse.org/t/-/357801?silent=true)
- 7 - Conclusion: [Theme Developer Tutorial: 7. Wrapping up](https://meta.discourse.org/t/-/357802?silent=true)

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [May 25, 2024, 6:50pm UTC](https://meta.discourse.org/t/developer-guides-index/308036/3 "2024-05-25T18:50:58Z")

</div>


