- Framework web orientado ao backend baseado em Flask que oferece gerenciamento de estado rápido e simples sem a complexidade de administrar o frontend
- Introduz uma arquitetura de componentes combinada com HTMX, permitindo a criação de UIs interativas baseadas no servidor
- Integra uma stack web moderna, incluindo roteamento baseado em arquivos, pipeline de assets com esbuild + TailwindCSS e ambiente de deploy automatizado
- Inclui diversos recursos nativos, como envio de e-mails (MJML), tarefas em segundo plano, push baseado em SSE, tradução e autenticação
- Com padronização do ambiente de desenvolvimento e deploy baseada em contêineres e integração com VS Code, oferece configuração simples e suporte a deploy em nuvem
Visão geral: framework de webapps orientado ao backend baseado em Flask
- Hyperflask é um framework web em Python que roda sobre o Flask e segue uma abordagem orientada pelo backend
- Reduz a complexidade do gerenciamento de estado no frontend e oferece uma arquitetura enxuta centrada no servidor
- Já vem com tecnologias web modernas como HTMX, TailwindCSS, esbuild integradas por padrão
- Com a integração do HTMX, é possível implementar interações em tempo real sem recarregar a página inteira
- A arquitetura de componentes permite reutilizar componentes de backend e frontend
- Introduz uma estrutura centrada em componentes no ambiente Flask, permitindo usar componentes de frontend e backend diretamente em templates Jinja
- Permite criar componentes de backend no servidor combinados com HTMX, além de se integrar naturalmente com React ou Web Components
- Aumenta a reutilização de código e a manutenibilidade, oferecendo uma estrutura adequada também para o desenvolvimento de apps de grande porte
- Suporte a roteamento baseado em arquivos e em apps
- Usa um novo formato de arquivo
.jpy que combina código Python com templates Jinja
- Inspirado no sistema de páginas do Astro, permite gerenciar definição de rotas e composição de UI em um só lugar
- Com isso, a configuração de rotas fica mais simples, e adicionar novas páginas se torna intuitivo
- Ecossistema aberto
- O Hyperflask tem uma base de código própria pequena e é composto por uma combinação orgânica de várias extensões do Flask
- Cada extensão é mantida como projeto independente, permitindo escolha e combinação livres
- Todos os projetos são públicos na organização Hyperflask no GitHub e incentivam a montagem de um framework personalizado pelo usuário
- “Batteries Included”
- Envio de e-mails com MJML, tarefas em segundo plano com dramatiq, push em tempo real baseado em SSE, tradução baseada em gettext (i18n)
- Autenticação e gerenciamento de sessão, otimização e streaming de imagens, geração de conteúdo estático, entre outros
- Oferece um conjunto de recursos em nível de produção pronto para uso sem configuração adicional
- ORM centrado em SQL (
sqlorm), otimizado para SQLite
- Configuração de ambiente e deploy
- Padroniza ambientes de desenvolvimento e operação baseados em contêineres, minimizando problemas de configuração
- A integração estreita com o VS Code facilita o desenvolvimento local e a depuração
- Suporta deploy fácil em VPS ou nos principais serviços de nuvem
Resumo
- Hyperflask expande o ecossistema Flask e oferece uma experiência moderna de desenvolvimento web full-stack em Python
- Com HTMX, sistema de componentes, roteamento baseado em arquivos e ambiente de desenvolvimento padronizado com contêineres, entrega máxima produtividade com configuração mínima
1 comentários
Comentários no Hacker News
Como criador do hyperflask, estou feliz por finalmente lançar um projeto preparado por tanto tempo
O anúncio detalhado pode ser visto aqui
Gostaria muito de receber vários feedbacks
Acho que teria sido melhor se isso fosse uma biblioteca, sem ficar atrelada ao backend
Já tenho um projeto Django com mais de um milhão de linhas e não dá para mudar facilmente, então queria saber se existe alguma forma simples de aplicar isso a um app Django
Como desenvolvedor de htmx, esse projeto parece muito legal
Um colega criou um app interno com a combinação flask/htmx/sqlalchemy e teve bons resultados, mas não conseguiu aprovação para open source
Por isso, estou animado com essa nova tentativa do hyperflask
Fiquei curioso sobre por que escolheram sqlorm como ORM
Faz tempo que estou afastado do desenvolvimento em Python, mas achei que todo mundo usava SQLAlchemy, e sqlorm é algo pouco familiar para mim
É impressionante ver um novo framework abraçando o HTMX
O HTMX está estimulando várias novas tendências que tentam substituir JS e React
Muita gente também vai gostar da combinação Python com Flask, e em HTMX server-side os componentes são essenciais
E o site também é mais agradável aos olhos do que o FastHTML
Comparando com harcstack.org
Essas escolhas parecem capazes de atrair uma base de usuários muito maior
Já a stack HARC, usada como comparação, deve agradar a uma minoria que curte tratar HTML de forma funcional, como uma versão server-side da linguagem Elm, ou que tem alergia à desnormalização do Tailwind
Ao desenvolver um webapp com htmx, senti que cheguei a um "beco sem saída"
O principal problema é que o estado da aplicação no frontend precisa ser armazenado na URL
Em UIs modernas com várias áreas, widgets, pop-ups etc., cada um precisando de estado local e navegação própria, é muito difícil colocar todo o estado em uma única URL global
E também é ainda mais difícil projetar algo de forma que o estado não vá para a URL quando necessário
Frameworks como React ou Vue, que oferecem seu próprio armazenamento de estado, resolvem isso facilmente
Talvez funcione bem se for algo como um fórum phpBB, mas os usuários de hoje esperam uma experiência mais avançada
Não é necessário guardar o estado só na URL
Há várias opções, como armazenamento no servidor, sessão, localstorage e cookies
Por exemplo, personalização do layout do app pelo usuário não precisa de URL, mas algo como resultados de busca, que precisam ser compartilháveis, deve obrigatoriamente ter os critérios de busca na URL
É preciso pensar no que se quer alcançar
E colocar muitos widgets e pop-ups numa única tela/URL em nome de uma "UI moderna" pode, na verdade, virar complexidade excessiva
Muitas vezes, o armazenamento de estado oferecido por React/Vue é só uma duplicação do que já pode ser gerenciado no servidor
A abordagem de hipermídia também consegue lidar com UIs complexas
Não é preciso insistir que tudo esteja na URL
Dá para usar sessões, cookies, IDs de aba etc. para compartilhar/isolar estado por aba e consultar o estado no banco de dados do backend
Hipermídia também funciona muito bem em ambientes em tempo real/multiplayer
Na verdade, o ponto fraco do HTMX é não colocar ainda mais estado no backend; eu até gostaria que ele fosse mais ousado nisso
Acho apenas que isso não combina com o meu caso de uso
Também acho curioso considerar React/Vue "fáceis"
Também não acho que React ou Vue resolvam todos os problemas que os usuários esperam ver resolvidos
A menos que a complexidade seja muito alta, na prática eu consigo cobrir a maior parte dos casos tranquilamente com htmx (junto com unpoly, alpinejs e localstorage)
Encontrei alguns conceitos interessantes no hyperflask
Mas os componentes, no fim das contas, parecem ser apenas macros comuns por baixo dos panos, então fico pensando se não seria melhor usar macros diretamente
Também fiquei curioso sobre a escolha do Flask
No passado, tentei uma abordagem parecida em /dev/push e depois migrei para a combinação FastAPI + Jinja2 + Alpine.js + HTMX
Percebi que FastAPI não é só para APIs e escolhi essa opção porque precisava de suporte assíncrono
Também gosto de Flask, mas já senti que ele tem limitações
Essa forma de colocar view e controller no mesmo arquivo me lembrou o desenvolvimento antigo em PHP
Dependendo do tamanho do projeto, isso realmente tornava o desenvolvimento mais simples, o que era uma vantagem
Também acho a combinação FastAPI + HTMX muito eficaz
Pela minha experiência com Django, graças ao recurso de scaffolding do admin, quase nunca precisei criar manualmente uma UI para diagnóstico e suporte ao cliente
Em projetos baseados em outros frameworks, esse tipo de funcionalidade precisa ser implementado à mão, e o resultado muitas vezes não fica tão satisfatório quanto no Django
Existem muitos frameworks que parecem atraentes, como o Hyperflask, mas abrir mão do framework admin do Django tem um custo muito alto
Fico curioso se alguém encontrou alternativas ou padrões substitutos reais para o Django admin
Tive a mesma sensação
Ao migrar para FastAPI, uma das coisas de que mais senti falta no Django foram os vários apps que estruturam o projeto
Só depois percebi o quanto era confortável ter migrações, arquivos estáticos, templates etc. organizados por funcionalidade
Eu uso Supabase na maior parte do tempo
Às vezes treino admins usando a UI do Supabase para cuidarem de tarefas urgentes
Ou, quando possível, também uso Airtable como backend
Mas quase sempre acabo sentindo muita falta do Django admin, e a combinação Django+HTMX sempre parece muito tentadora
Existe o Flask-Admin, mas ele é bem mais simples do que o Django Admin
Quero tentar resolver esse problema no futuro
Depois de usar HTMX com vários frameworks, acho que a combinação Go + Templ + HTMX consegue unir bem versatilidade e simplicidade
Na minha experiência, Go é verboso demais, então estou até pensando em sair de Go+Templ+HTMX e ir para Flask + Jinja + HTMX
Acho a forma de definir templates em Go meio trabalhosa
Uma combinação que quero muito experimentar depois é FastAPI + Jinja2 + HTMX
No momento, estou usando essa stack
O hyperflask parece destoar da filosofia do Flask e do htmx
Há camadas de abstração demais e quase não vejo pontos reais de integração com htmx
Eu esperava algo mais no estilo do FastHTML, com htmx embutido
Sempre que vejo um demo de starfield em um projeto, acabo esperando controles de velocidade e um efeito que siga o cursor do mouse
Seria ótimo ver isso adicionado em uma próxima versão do Hyperflask
O projeto em si é excelente e eu gosto de Htmx, mas recentemente também tenho prestado atenção no Datastar
Se você executar o código abaixo no console, dá para aplicar vários efeitos, incluindo controle de velocidade
Você está falando talvez de algo assim?
nova.app é o melhor que já vi até agora
Se você quer uma experiência Fullstack Async completa baseada em HTMX, também vale dar uma olhada no Litestar
Quando vi pela primeira vez, tive dificuldade para entender por que seria necessário anexar templates HTML diretamente ao arquivo de controller em Python
Parece que isso adiciona complexidade só para economizar uma função simples de renderização
Fiquei curioso sobre o ponto que talvez eu tenha deixado passar
Ela foi inspirada nas Astro Pages do ecossistema JavaScript
Na prática, a experiência de desenvolvimento também foi boa
Muita gente fala sobre as limitações do Flask e pergunta "por que não FastAPI?", mas pessoalmente acho que o Litestar é a melhor alternativa
O Litestar oferece suporte a htmx por padrão
Mais informações podem ser vistas aqui