Documentação sobre como estender o Discourse com plugins, temas e componentes de tema, trabalhar com o código-fonte e usar a API do Discourse.
Introdução
- Introdução: Introdução ao Desenvolvimento no Discourse
Ambientes de Desenvolvimento
- Dev Container: Desenvolvendo o Discourse usando um Dev Container
- GitHub Codespaces: Desenvolvendo o Discourse no GitHub Codespaces
- Configuração com Docker: Instalando o Discourse para desenvolvimento usando Docker
- Configuração para macOS: Instalando o Discourse no macOS para desenvolvimento
- Configuração para Ubuntu/Debian: Instalando o Discourse no Ubuntu ou Debian para Desenvolvimento
- Configuração para Windows: Instalando o Discourse no Windows para desenvolvimento
- Plugins sem Docker: Instalando plugins em seu ambiente de desenvolvimento sem Docker
- Configuração local: Como configurar um ambiente de desenvolvimento local do Discourse?
- Configuração multi-site: Configurando um ambiente de desenvolvimento multi-site
- Configuração para Fedora: Configurando o Discourse para desenvolvimento no Fedora Linux
Código e Funcionamento Interno
- Componentes Ember: Adicionando Componentes Ember ao Discourse
- Kit de interface (UI kit): O kit de interface com componentes, helpers e modificadores compartilhados do Discourse
- Lint e formatação: Linter e formatação automáticos de código antes dos commits
- Testes de aceitação: Escrevendo testes de aceitação e testes de componentes para código Ember no Discourse
- Execução de suítes de teste: Como executar as suítes de teste QUnit do núcleo, plugins e temas do Discourse
- Compatibilidade de versões: Fixando versões de plugins e temas para instalações mais antigas do Discourse (ramos d-compat)
- Propriedade de objetos Ember: Propriedade de objetos Ember (getOwner, injeção de serviços, etc.)
- Desempenho em JS: Usando o ‘tachometer’ do Google para medir mudanças de desempenho em JS no Discourse
- CI com GitHub Actions: Configurando Integração Contínua usando GitHub Actions
- Extensões de Markdown: Guia do desenvolvedor para extensões de Markdown
- Conversão de modais: Convertendo modais de controladores legados para a nova API de componentes DModal
- API DModal: Usando a API DModal para renderizar janelas modais (também conhecidas como popups/diálogos) no Discourse
- API JS: Usando a API JS
- Conectores de outlet de plugin: Usando Conectores de Outlet de Plugin a partir de um Tema ou Plugin
- modifyClass: Usando modifyClass para alterar o comportamento do núcleo
- Criação de rotas: Criando Rotas no Discourse e Exibindo Dados
- Método de autenticação: Adicionando um novo método de autenticação ‘gerenciado’ ao Discourse
- Serialização acidental de modelos ActiveRecord: Prevenindo a serialização acidental de modelos ActiveRecord
- Sobrescrita de templates: (não recomendado) Sobrescrevendo templates do Discourse a partir de um Tema ou Plugin
- Objetos de serviço: Usando objetos de serviço no Discourse
- Especificações de sistema: Escrevendo especificações de sistema de ponta a ponta para a interface do usuário do Discourse
- FormKit: Kit de ferramentas do Discourse para renderizar formulários.
- Disparadores de AppEvents: Referência de Disparadores de AppEvents
- Transformadores: Usando Transformadores para personalizar valores e comportamento no lado do cliente
- Personalização da lista de tópicos: Personalizando a lista de tópicos
- Diretrizes de CSS: Diretrizes para classes CSS usando BEM
- Dica de tipo e validação em JS: Dica de tipo e validação em JavaScript (typescript)
- Design para Dispositivos: Design para Diferentes Dispositivos (Toque e Hover)
- Design para Larguras Responsivas: Design para Larguras Responsivas (Breakpoints, Viewport e Containers)
- Primitivas de gesto: Primitivas de arrastar, redimensionar e gesto
- Divisão de bundles: Divisão de bundles para plugins
Plugins
- Plugin básico: Desenvolvendo Plugins do Discourse - Parte 1 - Criar um plugin básico
- Outlet de plugin: Desenvolvendo Plugins do Discourse - Parte 2 - Conectar a um outlet de plugin
- Configurações do site: Desenvolvendo Plugins do Discourse - Parte 3 - Adicionar configurações de site personalizadas
- Configuração do Git: Desenvolvendo Plugins do Discourse - Parte 4 - Configurar o git
- Interface administrativa: Desenvolvendo Plugins do Discourse - Parte 5 - Adicionar uma interface administrativa
- Testes de aceitação: Desenvolvendo Plugins do Discourse - Parte 6 - Adicionar testes de aceitação
- Publicar seu plugin: Desenvolvendo Plugins do Discourse - Parte 7 - Publicar seu plugin
- Novos idiomas: Adicionar um novo idioma a partir de um plugin
- Integração de chat: Adicionar um novo provedor ao discourse-chat-integration
- Extensão markdown-it: Reempacotando uma extensão markdown-it como um plugin do Discourse
- Autoload do Rails: Estruturando um plugin para autoload do Rails
Temas e Componentes
- Desenvolvimento de Temas: Desenvolvendo Temas e Componentes de Tema do Discourse
- Referência rápida: Guia de Referência Rápida para Desenvolvedores de Temas
- Guia para designers: Guia do Designer para começar com temas no Discourse
- Criador de Temas: Começando com o Theme Creator e a CLI de Temas
- CLI de Temas: Instalando o aplicativo de console CLI de Temas do Discourse para ajudar você a construir temas
- Estrutura de temas: Estrutura de temas e componentes de tema
- Múltiplos arquivos JS: Dividindo o JavaScript do tema em múltiplos arquivos
- Múltiplos arquivos SCSS: Dividindo o SCSS do tema em múltiplos arquivos
- Configurações de tema: Adicionando configurações ao seu tema do Discourse
- Objetos para configurações de tema: Tipo de objeto para configuração de tema
- Migração de configurações: Migrando configurações de tema do Discourse
- Metadados de tema: Adicionando metadados e capturas de tela a um Tema
- Variáveis do núcleo: Usando Variáveis do Núcleo do Discourse no seu Tema
- Strings localizáveis: Adicionando strings localizáveis a temas e componentes de tema
- Testes E2E: Testes de sistema de ponta a ponta para temas e componentes de tema
- Minimizando manutenção: Minimizando a Manutenção em Personalizações de Tema
- Tamanhos de fonte: Alterando tamanhos de fonte nos seus temas
- Incluir ativos: Incluindo ativos (ex.: imagens, fontes) em temas e componentes
- Ícones personalizados: Substituindo os ícones SVG padrão do Discourse por ícones personalizados em um tema
- Modo escuro: Atualizando temas e plugins para suportar modo escuro automático
- Modificadores de tema: Modificadores de tema: Uma breve introdução
- Pseudo-elementos: Inserindo texto ou imagens em qualquer lugar do seu site usando pseudo-elementos CSS
- Componente de fonte: Criando e compartilhando um componente de tema de fonte
- Linguagem Highlight.JS: Instalando uma nova linguagem para o Highlight.JS via um componente de tema
- Conteúdo da página inicial: Adicionando conteúdo personalizado que aparece apenas na sua página inicial
- Formato de mensagem: Suporte a Message Format para localização
- Alterações globais de ícones: Alterando ícones globalmente
- Ícones alternativos: Ícones alternativos
- Estilo de post de wiki: Alterando o estilo de um post de wiki
- Esquema de cores: Criando e compartilhando um esquema de cores
- Menu de navegação: Usando o parâmetro de consulta
navigation_menupara pré-visualizar a barra lateral ou outras opções - Estilos de conteúdo de post: Personalizando o conteúdo dos posts com seus próprios estilos
- Capturas de tela de tema: Adicionando capturas de tela de pré-visualização a temas do Discourse
- Configurações de site tematizáveis: Controlando configurações de site com temas
Guias Gerais
- White-labeling de aplicativos móveis: Coisas a considerar antes de decidir fazer white-label dos aplicativos móveis do Discourse
- Automações personalizadas: Criando Automações personalizadas
- Dump de dados público: Discourse Public Data Dump
- Avaliações de IA: Executando avaliações de IA do Discourse
- Bot de IA via API: Usando o bot de IA via a API do Discourse
Tutorial de Desenvolvimento de Temas
- 1 - Introdução: Tutorial para Desenvolvedores de Temas: 1. Introdução
- 2 - Tema Remoto: Tutorial para Desenvolvedores de Temas: 2. Criando um tema remoto
- 3 - CSS: Tutorial para Desenvolvedores de Temas: 3. CSS em Temas
- 4 - Outlets: Tutorial para Desenvolvedores de Temas: 4. Usando Outlets para inserir e substituir conteúdo
- 5 - Componentes: Tutorial para Desenvolvedores de Temas: 5. Construindo e usando componentes
- 6 - API JS: Tutorial para Desenvolvedores de Temas: 6. Usando a API JS
- 7 - Conclusão: Tutorial para Desenvolvedores de Temas: 7. Encerrando