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

Building a Collaborative News Platform with Plone

Érico Andrei
December 07, 2020

Building a Collaborative News Platform with Plone

In this presentation, Érico will introduce the tools and solutions used to build and maintain Pendect.com.
Plone is the core of a solution that integrates with Thumbor, DBpedia, ElasticSearch, IFTTT and Archive.org

Érico Andrei

December 07, 2020
Tweet

More Decks by Érico Andrei

Other Decks in Technology

Transcript

  1. Érico Andrei | @ericof | [email protected] | pendect.com
    Building a
    Collaborative News Platform
    with Plone
    Érico Andrei
    CTO & Co-Founder of Pendect
    [email protected] | @ericof

    View full-size slide

  2. Érico Andrei | @ericof | [email protected] | pendect.com
    Introductions

    View full-size slide

  3. Érico Andrei | @ericof | [email protected] | pendect.com
    Érico Andrei
    Brazilian, living in Berlin
    Open Source
    Python Software Foundation Fellow
    Plone Foundation Board Member
    Past
    Microsoft, Simples Consultoria, Rocket Internet, Wundertax

    View full-size slide

  4. Érico Andrei | @ericof | [email protected] | pendect.com
    Pendect tl;dr
    TL;DR collaborative news platform
    Facts > Opinions
    launched in March / 2020, still in beta

    View full-size slide

  5. Érico Andrei | @ericof | [email protected] | pendect.com
    Pendect
    Ashley Winkler
    Co-Founder • Design, Product, People
    Christoph Janke
    Co-Founder • Finances, Marketing, Quality
    Érico Andrei
    Co-Founder • Technology, Automation, Security

    View full-size slide

  6. Érico Andrei | @ericof | [email protected] | pendect.com
    Planning
    Pendect

    View full-size slide

  7. Érico Andrei | @ericof | [email protected] | pendect.com
    The idea
    Building a TL;DR news platform.
    Short cards > long articles
    Cards are submitted by our community (Pentributors)
    Cards metadata include: tags, people, organizations and locations
    Users can follow tags to create a personal feed
    For each new Card, we plant a tree

    View full-size slide

  8. Érico Andrei | @ericof | [email protected] | pendect.com
    Technical Requirements
    Collaborative workflow
    Permission control
    Metadata and Categorization
    SEO friendly, Organic Growth
    Leverage external specialized services
    Open Source

    View full-size slide

  9. Érico Andrei | @ericof | [email protected] | pendect.com
    Pendect
    Stack

    View full-size slide

  10. Érico Andrei | @ericof | [email protected] | pendect.com
    Plone for Content Management System
    Most features out of the box
    Adapt instead of build from scratch
    Proven record with News Portals
    Friendly community with very smart people

    View full-size slide

  11. Érico Andrei | @ericof | [email protected] | pendect.com
    DBpedia for Metadata and Categorization
    Wikipedia dataset
    Spotlight to detect entities in texts
    Docker image to run locally -- but dataset is a bit
    outdated
    Sparql to DBpedia to retrieve additional info about entities

    View full-size slide

  12. Érico Andrei | @ericof | [email protected] | pendect.com
    And a bit of everything else
    Cloudflare, nginx, Varnish, HAProxy, Ansible
    Thumbor
    Sentry, Mailgun
    IFTTT, Zapier
    Gravatar
    Deepl, ScrappingHub, Archive.org (Wayback machine)

    View full-size slide

  13. Érico Andrei | @ericof | [email protected] | pendect.com
    Building
    Pendect

    View full-size slide

  14. Érico Andrei | @ericof | [email protected] | pendect.com
    Toolset & Add-ons
    Development speed thanks to some friends
    Python 3 Fstrings, Type Hints, Dataclasses
    Black, Isort, Flake8, PyCharm
    Not many Plone Add-ons
    souper.plone contentrules.slack
    collective.sentry collective.z3cform.datagridfield

    View full-size slide

  15. Érico Andrei | @ericof | [email protected] | pendect.com
    Content types
    Default
    Folder, Document, Image, Collection
    Category
    Uses Collection behavior, but allows sub-objects
    Card
    Similar to a News Item, but with more categories

    View full-size slide

  16. Érico Andrei | @ericof | [email protected] | pendect.com
    Adapting Plone
    Browser views
    Dashboard → My Feed
    Author Page → Pentributor Profile
    Image / Scale → Proxy to Thumbor
    Content Rules
    Actions: Slack, Email, Webhooks
    Triggers: Principal added to/removed from group

    View full-size slide

  17. Érico Andrei | @ericof | [email protected] | pendect.com
    New features
    Aggregator Pages
    Tags, People, Locations, Organizations
    Development with souper
    Follow Categories, Tags, People, Locations, Organizations
    and Pentributors
    Voting up, bookmarking

    View full-size slide

  18. Érico Andrei | @ericof | [email protected] | pendect.com
    DEO
    External Service
    Translation, auto summary, archiving
    Bridge to DBpedia Spotlight
    Developed with FastAPI  httpx
    Each endpoint has its own dependencies
    Hosted with DigitalOcean Apps Platform

    View full-size slide

  19. Érico Andrei | @ericof | [email protected] | pendect.com
    Lessons learned
    Always create upgrade steps and be aware of registry configurations
    Plone training materials are the de facto documentation for Plone
    Plone theming + Resource Registries  JS development is my nightmare
    Plone lacks a simple and working async/delayed solution
    Webp images are not for all -- be careful with caching then

    View full-size slide

  20. Érico Andrei | @ericof | [email protected] | pendect.com
    Future
    Steps

    View full-size slide

  21. Érico Andrei | @ericof | [email protected] | pendect.com
    Next few weeks
    Contributions
    Translation and auto summary to all Pentributors
    Card Threads
    Similar to Twitter threads, leveraging content relations
    Search improvements
    Moving to ElasticSearch backend
    Move to RelStorage

    View full-size slide

  22. Érico Andrei | @ericof | [email protected] | pendect.com
    Out of Beta
    Plone as headless CMS
    Volto and Mobile applications
    Content quality control
    Integrate LanguageTool submission forms
    Auto-tagging
    User management
    Move from default User Folder

    View full-size slide

  23. Érico Andrei | @ericof | [email protected] | pendect.com

    View full-size slide

  24. Érico Andrei | @ericof | [email protected] | pendect.com
    Thank
    you!

    View full-size slide

  25. Érico Andrei | @ericof | [email protected] | pendect.com
    @ericof
    [email protected]
    pendect.com/pentributors/@ericof
    @pendecthq
    [email protected]
    pendect.com/pentributors
    https://speakerdeck.com/ericof/building-a-collaborative-news-platform-with-plone

    View full-size slide