Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Construindo uma Plataforma Colaborativa de Notí...

Construindo uma Plataforma Colaborativa de Notícias com Python e Código Aberto

Nesta apresentação teremos o passo a passo, principais desafios e soluções encontradas na construção da Pendect.com. Daremos dicas de como atualizar código legado, e como o uso extensivo de type-hints e Dataclasses tornou o processo de desenvolvimento mais robusto e confiável.

Érico Andrei

November 04, 2020
Tweet

More Decks by Érico Andrei

Other Decks in Technology

Transcript

  1. Érico Andrei | ericof | [email protected] | pendect.com Construindo uma

    Plataforma Colaborativa de Notícias com Python e Código Aberto Érico Andrei CTO & Co-Founder da Pendect [email protected] | @ericof
  2. Érico Andrei | ericof | [email protected] | pendect.com Érico Andrei

    Mooquense (Paulistano), exilado em Berlim Comunidades Co-Fundador da Associação Python Brasil Big-Kahuna PythonBrasil 2011 Python Software Foundation Fellow (2012 Plone Foundation Board Member Carreira Microsoft, Abril, Simples Consultoria, Rocket Internet
  3. Érico Andrei | ericof | [email protected] | pendect.com Pendect tl;dr

    TL;DR plataforma colaborativa de notícias Fatos > Opiniões Lançada em Março/2020, ainda em beta
  4. Érico Andrei | ericof | [email protected] | pendect.com Quem somos

    Ashley Winkler Co-Fundadora • Design, Produto, Pessoas • Viena, Áustria Christoph Janke Co-Fundador • Finanças, Marketing, Qualidade • Berlim, Alemanha Érico Andrei Co-Fundador • Tecnologia, Automação, Segurança • Berlim, Alemanha
  5. Érico Andrei | ericof | [email protected] | pendect.com A idéia

    Construir uma plataforma de notícias TL;DR. Cards curtos > Artigos longos Submetidos pelos membros da comunidade (Pentributors) Alavancar uso de metadados Usuários podem seguir tags e criar seu próprio feed Para cada Card, plantamos uma árvore.
  6. Érico Andrei | ericof | [email protected] | pendect.com Requisitos Técnicos

    Fluxo de trabalho colaborativo Controle granular de permissão Metadados e categorização (Pessoas, Organizações e Locais) Focar em SEO e crescimento orgânico Usar serviços especializados, ao invés de desenvolver tudo em casa Uso de ferramentas de código aberto
  7. Érico Andrei | ericof | [email protected] | pendect.com Plone para

    Gestão de Conteúdo “Pilhas incluídas” Adaptar ao invés de construir do zero Histórico positivo com portais de notícias Comunidade inclusiva, com pessoas bem inteligentes
  8. Érico Andrei | ericof | [email protected] | pendect.com DBpedia para

    Metadados e Categorização Wikipedia dataset Spotlight para detectar entidades em textos Imagem Docker -- mas o dataset é antigo Consulta Sparql na DBpedia para obter informações adicionais sobre cada entidade
  9. Érico Andrei | ericof | [email protected] | pendect.com Thumbor como

    servidor de imagens Escalas de imagem (diferentes tamanhos) “Smart cropping” Suporte Webp Fácil integração
  10. Érico Andrei | ericof | [email protected] | pendect.com E mais

    uma pitada de todo o resto Thumbor Cloudflare, nginx, Varnish, HAProxy, Ansible Sentry, Mailgun IFTTT, Zapier Gravatar Deepl, ScrappingHub, Archive.org (Wayback machine)
  11. Érico Andrei | ericof | [email protected] | pendect.com Python 3

    Plone 5.2 suporta Python 3 Trabalho exclusivamente com Python 3 desde 2015 O que tenho usado Fstrings Type-Hints Dataclasses (Pydantic)
  12. Érico Andrei | ericof | [email protected] | pendect.com Ferramentas &

    Add-ons Produtividade no desenvolvimento Black, Isort, Flake8, buildout & PyCharm Poucos add-ons para Plone souper.plone collective.sentry collective.z3cform.datagridfield contentrules.slack
  13. Érico Andrei | ericof | [email protected] | pendect.com Tipos de

    conteúdo Pasta Imagem Coleção (Story/Topic) Categoria Usa o behavior de coleção, mas suporta sub-objetos Card Similar a uma Notícia, mas com mais categorias
  14. Érico Andrei | ericof | [email protected] | pendect.com Adaptando o

    Plone Views Dashboard → My Feed Página de Autor → Perfil do Pentributor Imagem / Escalas → Proxy para o servidor Thumbor Regras de conteúdo Ações: Slack, Email, Webhooks Gatilhos: Usuário adicionado/removido de um grupo
  15. Érico Andrei | ericof | [email protected] | pendect.com Novas funcionalidades

    Listagens Tags, Pessoas, Localidades, Organizações Desenvolvimento com souper Seguir Categorias, Tags, Pessoas, Localidades, Organizações e Pentributors Em breve) Votação, favoritos
  16. Érico Andrei | ericof | [email protected] | pendect.com DEO Serviço

    Tradução, auto-sumário, arquivamento Extração de entidades Desenvolvido com FastAPI  httpx Cada endpoint tem suas dependências Deploy na DigitalOcean Apps Platform
  17. Érico Andrei | ericof | [email protected] | pendect.com Lições aprendidas

    Usar Python 3 em uma base de código com mais de 20 anos é “divertido” Materiais de treinamento Plone são a documentação mais atual do Plone Imagens Webp não são suportadas em todos os locais -- cuidado com cacheamento agressivo Plone não possui uma solução simples e funcional para async/filas por isto criamos o DEO
  18. Érico Andrei | ericof | [email protected] | pendect.com Próximas semanas

    Contribuições Tradução e auto-sumarização de notícias para todos os usuários Melhorias na Busca Uso de ElasticSearch Lançamento do contentrules.webhooks Add-on Plone com suporte a IFTTT, Slack, Archive.org, Webhooks
  19. Érico Andrei | ericof | [email protected] | pendect.com Mais adiante

    Plone como CMS headless Aplicações React (Volto) e mobile Controle de qualidade de conteúdo Uso do LanguageTool integrado ao formulário de contribuição Auto-tageamento Gestão de usuários Mover para base de dados relacional
  20. Érico Andrei | ericof | [email protected] | pendect.com @ericof [email protected]

    pendect.com/pentributors/@ericof @pendecthq [email protected] pendect.com/pentributors