For the complete documentation index, see llms.txt. This page is also available as Markdown.

Estrutura do Projeto

Diretórios de Nível Superior

chamilo/
├── assets/          # Código-fonte de frontend
│   ├── vue/         # Aplicação Vue 3 (componentes, visualizações, roteador, stores)
│   ├── css/         # Folhas de estilo SCSS
│   └── js/          # JavaScript legado
├── config/          # Configuração do Symfony (rotas, serviços, pacotes)
├── public/          # Raiz web (index.php, páginas PHP legadas, plugins)
│   ├── main/        # Módulos PHP legados (um subdiretório por ferramenta)
│   └── plugin/      # Plugins incluídos e personalizados
├── src/             # Código-fonte PHP (bundles do Symfony)
│   ├── CoreBundle/  # Lógica central da plataforma
│   ├── CourseBundle/# Funcionalidades específicas de cursos
│   └── LtiBundle/   # Integração LTI 1.3
├── templates/       # Modelos Twig
├── var/             # Cache, logs, uploads (gerados)
├── vendor/          # Dependências do Composer (geradas)
├── node_modules/    # Dependências do npm (geradas)
└── translations/    # Arquivos de tradução

Código-Fonte (src/)

CoreBundle

O maior bundle. Subdiretórios notáveis:

Diretório
Conteúdo

Entity/

Entidades Doctrine (User, Course, Session, ResourceNode, etc.)

Controller/

Controladores de administração, ações de API e páginas (a subpasta Api/ contém ações personalizadas do API Platform)

Settings/

Arquivos de esquema de configurações (configuração da plataforma)

Repository/

Repositórios Doctrine

AiProvider/

Implementações de provedores de IA (OpenAI, Gemini, Mistral, DeepSeek, Grok)

Tool/

Definições de ferramentas de curso

Security/

Voters, autenticadores, autorização

EventListener/

Ouvintes de eventos

EventSubscriber/

Assinantes de eventos

Command/

Comandos de console do Symfony

Migrations/

Migrações de banco de dados

Twig/

Extensões Twig

Storage/

Adaptadores de armazenamento Flysystem

CourseBundle

Entidades e lógica específicas de cursos:

Diretório
Conteúdo

Entity/

Entidades de conteúdo de curso (CDocument, CQuiz, CLp, CForum, CStudentPublication, etc.)

Controller/

Controladores de curso

Settings/

Esquemas de configurações no nível do curso

Component/CourseCopy/

Importação/exportação de curso (Common Cartridge, Moodle)

LtiBundle

Integração LTI 1.3:

Diretório
Conteúdo

Entity/

Entidades de plataforma, ferramenta e implantação LTI

Controller/

Endpoints de lançamento e configuração LTI

Frontend (assets/vue/)

Configuração (config/)

O Symfony mescla automaticamente os arquivos base packages/*.yaml com aqueles no subdiretório de ambiente correspondente (dev/, prod/ ou test/), de modo que os arquivos específicos de ambiente só precisam sobrescrever os valores que diferem.

Configuração de Build

Arquivo
Finalidade

webpack.config.js

Configuração do Webpack Encore (entradas, carregadores, plugins)

tailwind.config.js

Configuração do Tailwind CSS (caminhos de conteúdo, extensões de tema, plugins)

tsconfig.json

Configuração do TypeScript

eslint.config.mjs

Regras do ESLint (configuração plana)

.prettierrc.json

Regras de formatação do Prettier

Todos os arquivos estão na raiz do projeto. Os plugins PostCSS (Tailwind + Autoprefixer) são configurados inline dentro de webpack.config.js por meio de enablePostCssLoader() — não há um arquivo independente postcss.config.js. O webpack.config.js lê o tailwind.config.js indiretamente através do PostCSS, então mudanças nas seções content ou theme do Tailwind entram em vigor na próxima execução de yarn encore dev / yarn encore production.

Pontos de Entrada do Webpack

O build produz os seguintes pacotes:

JavaScript:

  • vue — Aplicação principal Vue 3 (assets/vue/main.js)

  • vue_installer — Assistente de instalação (assets/vue/main_installer.js)

  • legacy_app, legacy_exercise, legacy_lp, legacy_document — JS legado para páginas ainda não migradas para Vue

CSS:

  • app — Folha de estilo principal (assets/css/app.scss)

  • Além de folhas especializadas: chat, document, editor, editor_content, markdown, print, responsive, scorm

Estrutura de CSS (assets/css/)


Tailwind CSS

O Tailwind está integrado via PostCSS. O arquivo assets/css/_tailwind.scss emite as camadas base, de componentes e de utilitários; o arquivo assets/css/app.scss o importa primeiro, para que os utilitários do Tailwind estejam disponíveis em todos os outros arquivos parciais. A configuração do Tailwind — caminhos de conteúdo para purga, extensões de tema e plugins — está localizada em tailwind.config.js na raiz do projeto (/var/www/chamilo/tailwind.config.js).

Classes de utilitários personalizadas e classes de componentes definidas com @layer (visíveis em app.scss) seguem a convenção de camadas do Tailwind, de modo que as classes definidas pelo usuário respeitem as mesmas regras de especificidade que os utilitários gerados.

Temas de Cores

O Chamilo suporta um sistema de temas de cores que pode ser configurado diretamente pela interface de administração (Admin > Temas de Cores). Cada tema salvo grava seus arquivos em um diretório dedicado sob var/themes/:

O arquivo colors.css define propriedades personalizadas de CSS como tripletos de canais RGB separados por espaço, em vez de valores rgb(), o que permite que o Tailwind componha variantes de opacidade (por exemplo, bg-primary/50) sem configuração adicional:

A camada de tema fica acima do pacote compilado de Tailwind/SCSS: o navegador carrega colors.css após a folha de estilo principal, de modo que as alterações de tema entram em vigor imediatamente, sem a necessidade de uma etapa de compilação.

Última atualização

Isto foi útil?