Skip to content

Liber-UFPE/hyginia

Repository files navigation

Monummenta Hygínia

CI Workflow Quality Gate Status Coverage codecov

O Projeto Monumenta Hyginia publica em formato digital os anos 1635 e 1636 do Monumenta Hyginia - Dagelijkse Notulen.

Executar localmente

Para executar o projeto localmente, abra um terminal e execute:

./gradlew run

A aplicação ficará acessível em http://localhost:8080/.

Se você quiser recarregar a aplicação a cada alteração de código, execute o Gradle em modo contínuo:

./gradlew run -t

Simular ambiente de produção

O aplicativo é executado usando o nginx como proxy, em uma máquina com o Rocky Linux. Para simular este ambiente, você pode usar o Vagrant, que irá configurar todos os detalhes usando um único comando:

./gradlew clean vagrantUp

O servidor nginx ficará acessível em http://localhost:9080/, e a aplicação em http://localhost:9080/hyginia.

Para acessar a VM via SSH, execute:

vagrant ssh

Destruir / Reiniciar a VM Vagrant

Se a VM estiver executando, execute o seguinte comando para destruí-lo:

vagrant destroy --graceful --force

Requisitos

  1. Java 21 (mais fácil de instalar com SDKMAN)
  2. Node.js 20
    1. yarn
  3. Docker Desktop (se você quiser testar as imagens Docker)
  4. Ktlint CLI (se você quiser executar inspeções de código localmente)
  5. Gradle (se você não quiser usar o script ./gradlew)
  6. Vagrant (se você quiser rodar o projeto usando uma VM)

Aspectos técnicos

O projeto é desenvolvido usando:

Documentação de Micronaut

Template Engine

O projeto usa JTE / KTE como template engine.

CI & CD

O projeto usa GitHub Actions para executar testes e outras validações descritas abaixo.

Inspeções de código

Para cada merge/push, e também para pull requests, existem ações do GitHub para executar ktlint, detekt, e DiKTat (experimental).

O ktlint está configurado para usar o estilo de código intellij_idea para que ele não entre em conflito com a ação de formatação de código da IntelliJ IDEA.

Há também uma integração com o Sonar Cloud: https://sonarcloud.io/project/overview?id=Liber-UFPE_hyginia.

Testes e Cobertura de Código

Usamos Kotest como framework de teste, e Kover como a ferramenta de cobertura de código. Ver também Micronaut Kotest integrações docs.

Tip

Veja a cobertura de código mais recente na página do projeto no SonarCloud.

Assets Pipeline

Para garantir que as páginas carreguem rapidamente, há um processamento dos assets estáticos (JavaScripts, CSS, imagens). O esbuild é usado em conjunto com alguns pacotes npm:

  • sharp para gerar versões webp das images
  • postcss para otimizar o uso do Tailwind CSS e manter apenas os estilos efetivamente usados.

Esse processamento é então integrado ao build principal da aplicação usando o Gradle Plugin for Node.

Tip

Dá para testar o processamento dos assets de maneira isolada executando diretamente node assets-pipeline.mjs.

Layout de Diretório de Projetos

O projeto segue o padrão Maven Standard Directory Layout para projetos Kotlin. As pastas principais são:

Diretório Descrição
src/main Pasta raiz para código de aplicação
src/main/jte Pasta de templates JTE
src/main/kotlin Código Kotlin da aplicação
src/main/resources Configurações e outros recursos
src/main/resources/public Web assets como imagens, javascript e arquivos css
src/test Pasta raiz para código de teste
scripts Pasta com scripts para deploy usando o Vagrant
github Pasta raiz para configurações do GitHub
.github/workflows GitHub Ações configuração