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çãoCódigo-Fonte (src/)
CoreBundle
O maior bundle. Subdiretórios notáveis:
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:
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:
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
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?