14 pontos por GN⁺ 2025-03-30 | 1 comentários | Compartilhar no WhatsApp
  • Framework web projetado para permitir criar produtos rapidamente com Python (um fork do Django)
  • É possível iniciar o desenvolvimento local com um único comando e migrar para produção com dashboard e feature flags, entre outros recursos
    • Clone o starter kit para começar rapidamente
  • Composto pelo pacote principal plain e por pacotes oficiais de extensão que podem ser instalados opcionalmente

Recursos do pacote plain

  • Conecta padrões de URL a funções de view em Python
  • Processa requisições e respostas HTTP
  • Renderização de HTML com templates Jinja
  • Forms para processar entrada do usuário
  • Fornece uma interface de linha de comando (CLI)
  • Pode servir assets estáticos como CSS, JS e imagens
  • Expande funcionalidades do app por meio de middleware
  • Permite integrar facilmente pacotes oficiais e de terceiros
  • Fornece um sistema de verificação prévia antes da execução do app (Preflight check system)

Recursos de extensão por meio dos pacotes first-party

  • plain.models: fornece um ORM para armazenar dados em Postgres, MySQL e SQLite
  • plain.cache: solução de cache que funciona junto com o banco de dados existente
  • plain.email: fornece configuração e envio de e-mail em todo o app
  • plain.sessions: permite ler e gravar sessões com base em banco de dados
  • plain.worker: solução de tarefas em segundo plano com suporte ao banco de dados existente
  • plain.api: permite criar APIs JSON usando uma arquitetura de views baseada em classes

Autenticação

  • plain.auth: fornece a base para adicionar usuários, autenticar requisições e restringir views
  • plain.oauth: solução flexível de OAuth com suporte a login social moderno e acesso à API
  • plain.passwords: oferece suporte ao login tradicional baseado em senha
  • plain.loginlink: fornece links de login de uso único para entrar sem senha
  • plain.passkeys: oferecerá login sem senha

Administração

  • plain.admin: fornece um dashboard administrativo totalmente personalizável
  • plain.flags: permite controlar conteúdo por usuário com feature flags baseadas em banco de dados
  • plain.support: oferece suporte ao cliente sem serviços de terceiros
  • plain.redirection: monitora 404 e gerencia redirecionamentos no banco de dados
  • plain.pageviews: permite verificar o que os usuários estão vendo e oferecer melhor suporte

Desenvolvimento

  • plain.dev: permite iniciar o ambiente de desenvolvimento local com um único comando
  • plain.pytest: permite escrever e executar testes com a popular biblioteca de testes para Python
  • plain.code: permite formatar e aplicar lint em código Python com configuração padrão
  • plain.tunnel: permite expor apps locais à internet para integração com webhooks

Front-end

  • plain.tailwind: fornece integração de primeira classe com o popular framework CSS
  • plain.htmx: permite criar experiências de usuário modernas usando ferramentas existentes
  • plain.elements: apresenta um novo paradigma para componentes reutilizáveis nos templates do app
  • plain.pages: fornece roteamento baseado em arquivos usando HTML e Markdown
  • plain.esbuild: fornece um processo de build simplificado para compilação de JavaScript
  • plain.vendor: permite baixar e hospedar localmente assets de JavaScript e CSS sem depender de CDN

1 comentários

 
GN⁺ 2025-03-30
Comentários do Hacker News
  • Muitas pessoas talvez não saibam que o rastreador de bugs do Django Rest Framework foi tornado privado e que estão procurando um novo mantenedor

    • Django é ótimo, mas precisa de uma mudança como o renascimento do Angular
    • Quero contribuir, mas a maior parte do esforço está sendo atrasada por um comitê
    • Um fork pode não ser a solução, mas alguma medida precisa ser tomada
    • Se são necessárias doações, aceitar doações também é uma opção
    • A comunidade de desenvolvedores Django é pequena e muito conectada
    • É necessária uma comunidade que valorize abertura para contribuições e relacionamentos de longo prazo
  • Tenho sentimentos mistos sobre um fork do Django

    • Experimentar fora do projeto legado tem valor, mas um fork é uma grande declaração
    • Dá a sensação de que o esforço coletivo do Django está sendo ignorado
    • Há preocupação de que siga por um caminho comercial ou estreito
    • Meu carinho pelo Django está crescendo
  • Os pontos fortes do Django são o ORM e o ecossistema/idiomas consagrados

    • É difícil entender por que quebrar compatibilidade com um fork
    • Gostaria de ver recursos de admin melhores, mas isso pode ser resolvido com um template de projeto Django
  • Existem algumas desvantagens no Django

    • Workers e REST API não são cidadãos de primeira classe
    • A autenticação do Django é básica, mas útil
    • As dificuldades no Django podem aumentar a complexidade
  • Fiquei surpreso com o sentimento negativo em relação ao Django

    • Django está ficando para trás em comparação com Laravel e Rails
    • O ecossistema está fragmentado e muitos pacotes estão desatualizados
    • O pipeline de arquivos estáticos do Django não vem incluído por padrão
    • Há problemas com o modelo de usuário e limitações nos templates
    • Mudei para Rails e comecei a construir apps web
  • Migrei de Django para Supabase/Firebase

    • Há muitos plugins e é fácil fazer self-hosting
    • Os plugins do Django parecem que poderiam ser melhores
  • Não gosto de configurações em forma de strings que referenciam classes

    • Quero poder navegar facilmente ao referenciar classes ou objetos
    • Isso acaba sendo resolvido com plugins depois, mas o LSP oferece suporte de graça
  • Dei uma olhada na documentação do Plain

    • Todos os recursos já existem no Django ou em pacotes bem suportados
    • A política de descontinuação do Django permite manter projetos por muito tempo
    • O comitê impede a comercialização do projeto e toma as melhores decisões para a maioria dos usuários
    • Django foi feito para jornais, mas é um framework de propósito geral
  • Não sei se o Plain vai ter sucesso, mas entendo os motivos do fork

    • A liderança do Django não está conseguindo fazer o Django evoluir