Skip to main content
  1. General/

Technology

··379 words·2 mins·

Supporting technologies
#

This site is built with Hugo.

The Blowfish theme is used.

This site’s code is stored on GitHub.

It is deployed on Cloudflare following this tutorial.

How is reading material managed?
#

Most sources are managed via RSS with a self-hosted instance of Miniflux.

Articles are organized with Obsidian.

Pages are captured with Obsidian Web Clipper.

Publishing workflow
#

flowchart TD
    subgraph ORIGEN["📥 Sourcing articles"]
        A1["📡 RSS Feeds"] -->|Mark articles as Starred| A2["📰 Miniflux
RSS Reader"] A2 --> DS1[("⭐ Starred
Articles Data")] A3["🌐 Web Browsing"] -->|Capture pages| A4["✂️ Obsidian
Web Clipper"] A4 --> DS2[("📄 Captured
Webpages Data")] end DS1 --> E5["🐍 Sends Starred
to Obsidian"] E5 --> B["💎 Obsidian
Desktop & mobile app"] DS2 --> B B -->|Organized and formatted
as Markdown| C["Selecting articles
to publish"] subgraph AUTOMATIZACION["🛠️ Apps & Services - Automated processing"] C --> D["🤖 GitHub Copilot
+ Skills"] D -->|Calls and enhances
the processing| SCRIPTS["💻 Processing scripts
Python & PowerShell"] SCRIPTS --> E1["🐍 Capture
OpenGraph"] SCRIPTS --> E4["🐍 Resize images
per destination"] SCRIPTS --> E3["🐍 Extract content
for social media"] SCRIPTS --> E2["🐍 Daily empty
commits"] SCRIPTS --> MD["Formatted Markdown
in folders"] end E1 --> DS3[("🖼️ Images")] E4 --> DS4[("🖼️ Destination-specific
images")] E3 --> DS5[("📝 Formatted content
for social media")] MD --> REPO[("🗂️ Local
Git Repository")] DS3 --> REPO REPO -->|git push| GH["🐙 GitHub Repository
GitOps Hub"] E2 -.triggers empty commit.-> GH GH -->|Webhook Trigger| CF["☁️ Cloudflare Workers
Deployment engine"] CF --> HUGO["⛰️ Hugo
Static site generator"] HUGO --> THEME["🐡 Blowfish theme"] THEME -->|Deploy to global CDN| SITE(["🌍 Published site"]) SITE -.Extraction.-> PUB subgraph REDES["📣 Multi-platform distribution - built with Python"] DS4 --> PUB["🐍 Automatic publishing
Posting extracted content & images"] DS5 --> PUB PUB --> K1(["🔷 LinkedIn"]) PUB --> K2(["⚫ Threads"]) PUB --> K3(["🦋 Bluesky"]) PUB --> K4(["🐘 Mastodon"]) end subgraph LEYENDA["Legend"] L1(["Manual action"]) L2["Automated process"] L3["☁️ Web service"] L4[("Storage")] L5{{"External platform"}} L6["🐍 Python application"] end click A1 "https://en.wikipedia.org/wiki/RSS" _blank click A2 "https://miniflux.app/" _blank click A4 "https://obsidian.md/clipper" _blank click B "https://obsidian.md/" _blank click D "https://github.com/features/copilot" _blank click GH "https://github.com/juanbretti/" _blank click CF "https://gohugo.io/host-and-deploy/host-on-cloudflare/" _blank click HUGO "https://gohugo.io/" _blank click THEME "https://blowfish.page/" _blank click SITE "https://blog.juanbretti.com" _blank click K1 "https://linkedin.com/in/juanbretti/" _blank click K2 "https://www.threads.com/@juanbretti" _blank click K3 "https://bsky.app/profile/juanbretti.bsky.social" _blank click K4 "https://mastodon.social/@juanbretti" _blank classDef pythonApp fill:#639922,color:#EAF3DE,stroke:#3B6D11 class E1,E2,E3,E4,E5,PUB,L6 pythonApp style ORIGEN fill:#1e3a5f,color:#fff style AUTOMATIZACION fill:#3a1e5f,color:#fff style REDES fill:#5f3a1e,color:#fff style SITE fill:#185fa5,color:#fff style K1 fill:#185fa5,color:#fff style K2 fill:#185fa5,color:#fff style K3 fill:#185fa5,color:#fff style K4 fill:#185fa5,color:#fff style LEYENDA fill:#2c2c2c,color:#fff
Juan Pedro Bretti Mandarano
Author
Juan Pedro Bretti Mandarano