Stack completo e opinativo para serviços de internet modernos em Perl.
Um stack completo e opinativo para construir serviços de internet modernos em Perl — aplicações web, APIs HTTP e workers em background — fundamentado em referências reais e decisões arquiteturais documentadas.
- Aplicações web com HTML server-rendered e SPAs com backend Perl
- APIs HTTP: REST, GraphQL e WebSocket
- Workers em background e filas de jobs (processamento assíncrono)
- Autenticação, autorização e gerenciamento de sessões
- Observabilidade: logging, métricas e rastreamento distribuído
- Containerização com Docker e implantação cloud-native (Kubernetes ou equivalentes)
- Pipelines de CI/CD automatizados
- Estratégia de testes: unitários, integração e end-to-end
- Ferramental de desenvolvimento e ambiente local com Docker Compose
- Sistemas operacionais, módulos de kernel ou drivers de dispositivo
- Engines de jogos ou gráficos em tempo real
- Ciência de dados, aprendizado de máquina ou pipelines de dados
- Desenvolvimento genérico de frameworks ou bibliotecas Perl
- ETL batch ou data warehousing
- Aplicações desktop ou GUI
Cada escolha tecnológica deste stack rastreia ao menos uma fonte autoritativa
externa, documentada em docs/references/.
Nenhuma decisão é justificada por "senso comum" — cada uma tem uma ADR.
| Referência | Tipo | Relevância para o stack |
|---|---|---|
| perl.org | Portal Oficial | Documentação e ecossistema oficial da linguagem |
| Modern Perl | Livro | Idiomas e boas práticas Perl contemporâneos |
| The Twelve-Factor App | Metodologia | Princípios guia para aplicações cloud-native |
| Docker | Documentação Oficial | Containerização — base da infraestrutura do stack |
| Mojolicious | Documentação Oficial | Framework web Perl moderno — escolhido em ADR-004 |
| Kubernetes | Documentação Oficial | Orquestração de containers — escolhido em ADR-010 |
Ver docs/references/ para as 36 fontes completas.
| Camada | Tecnologia | ADR |
|---|---|---|
| Linguagem | Perl 5.38+ | ADR-005 |
| Framework web | Mojolicious + Hypnotoad | ADR-004 |
| Dependências | Carton + cpanm | ADR-005 |
| Orientação a objetos | Moo + Moo::Role | ADR-006 |
| Banco de dados | PostgreSQL 16 | ADR-007 |
| Acesso relacional | Mojo::Pg + Mojo::Pg::Migrations | ADR-016 |
| Dados documentais | PostgreSQL JSONB | ADR-017 |
| Message broker | RabbitMQ (AMQP 0-9-1) | ADR-008 |
| Autenticação | Keycloak + JWT / Crypt::JWT | ADR-009 |
| Contrato de API | OpenAPI v3 + Mojolicious::Plugin::OpenAPI | ADR-015 |
| Testes | Test::Mojo + prove + Devel::Cover | ADR-011 |
| Containerização | Docker multi-stage build | ADR-005 |
| Orquestração | Kubernetes + InitContainer | ADR-010 |
| CI/CD | GitHub Actions | — |
| Site de docs | Docusaurus | — |
Todas as decisões de stack estão documentadas em docs/adrs/
(ADR-000 a ADR-018). A aplicação de demonstração que exercita todo o stack é
a Stega — ver ADR-018.
O site completo da documentação está em:
hibex-solutions.github.io/crystallized-perl
Estrutura da documentação neste repositório:
| Diretório | Conteúdo |
|---|---|
docs/adrs/ |
Architectural Decision Records — cada decisão significativa tem uma ADR |
docs/references/ |
36 fontes externas anotadas que fundamentam as decisões |
docs/guides/ |
Tutoriais passo a passo (em desenvolvimento) |
docs/stack/ |
Referência por camada tecnológica (em desenvolvimento) |
Leia CONTRIBUTING.md antes de abrir um pull request.
Em especial:
- Erros de conteúdo → use o template Correção de Conteúdo
- Novos guias → abra uma issue antes de escrever
- Nova ADR → leia ADR-000 primeiro
- Contestar ADR existente → abra uma issue com evidência e proposta de substituição
Ao contribuir, você concorda em seguir nosso Código de Conduta.
MIT © 2026 Hibex Solutions
Ver LICENSE para o texto completo.