Zum Hauptinhalt springen
Echtzeit-Radar & Feeds
Alle RSS Feeds ➔
👥 Community & Social
YouTube Security VideosTechLinked: Samsung update BRICKS AI fridges(24.09.2026 um 19:36 Uhr)
•
YouTube Security VideosXDA: This Windows version was never supposed to exist(24.09.2026 um 19:15 Uhr)
•
YouTube Security VideosAndroid Police: The best smartwatch's biggest problem.(24.09.2026 um 19:30 Uhr)
••
YouTube Security VideosLinus Tech Tips: leaking the newest lttstore products...(24.09.2026 um 18:25 Uhr)
•••
YouTube Security VideosImpeller hits desktop by default in Flutter 3.47! 🖥️(24.09.2026 um 18:00 Uhr)
•
Sichere ProgrammierungChrome for Developers: 93: State queries in 2025(24.09.2026 um 20:02 Uhr)
•
YouTube Security Videosdotnet: .NET + Foundry, better together(24.09.2026 um 18:35 Uhr)
•
YouTube Security VideosTechLinked: Samsung update BRICKS AI fridges(24.09.2026 um 19:36 Uhr)
•
YouTube Security VideosXDA: This Windows version was never supposed to exist(24.09.2026 um 19:15 Uhr)
•
YouTube Security VideosAndroid Police: The best smartwatch's biggest problem.(24.09.2026 um 19:30 Uhr)
••
YouTube Security VideosLinus Tech Tips: leaking the newest lttstore products...(24.09.2026 um 18:25 Uhr)
•••
YouTube Security VideosImpeller hits desktop by default in Flutter 3.47! 🖥️(24.09.2026 um 18:00 Uhr)
•
Sichere ProgrammierungChrome for Developers: 93: State queries in 2025(24.09.2026 um 20:02 Uhr)
•
YouTube Security Videosdotnet: .NET + Foundry, better together(24.09.2026 um 18:35 Uhr)
•
Intelligence View
⚡ tsecurity.de Intelligence

Rebuilding My Static Blog with Build-Time Data and Instant Search

Static sites are supposed to be fast, simple, and reliable. But over time, my personal blog started behaving like a dynamic app - runtime API calls, pagination logic everywhere, and fragmented view counts spread across platforms. Last…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

Static sites are supposed to be fast, simple, and reliable. But over time, my personal blog started behaving like a dynamic app - runtime API calls, pagination logic everywhere, and fragmented view counts spread across platforms.



Last week, I rebuilt the blog section of ravgeet.in (Nuxt.js) to fix this properly. The end result is still a static site, but now it feels alive: aggregated view counts, instant search and sorting, and zero runtime dependencies on external APIs.



This post walks through the thinking, architecture, and trade-offs behind that rebuild.






The problem with my old setup



Originally, my blog worked like this:




  • Blog content lived on Hashnode (canonical source)


  • Some posts were also cross-posted to Dev.to


  • Pages fetched blog data at runtime using Hashnode’s GraphQL API


  • Pagination logic (hasNextPage, cursors) lived inside the UI




This had a few downsides:




  • A static site depending on live APIs felt wrong


  • Local development and builds were slower and flaky


  • Adding features like search or sorting would require more APIs




I wanted the blog to stay static - but smarter.






Build-time data as a contract



The core decision was simple:




Move all external data fetching to build time, and treat the result as immutable static data.




Instead of fetching blogs at runtime, I introduced a build step that:




  1. Fetches blogs from Hashnode


  2. Fetches articles from Dev.to


  3. Matches the same article across platforms


  4. Aggregates view counts


  5. Writes everything into a single JSON file




At runtime, the site only reads from that JSON.




Hashnode + Dev.to
↓
Build-time fetch & normalize
↓
static/blogs.json
↓
Nuxt UI (search, sort, views)






This one decision simplified everything else.






Fetching and aggregating blog data






Hashnode: canonical content



Hashnode remains the source of truth for:




  • Title, slug, content, tags


  • Publish date


  • Cover image


  • Base view count




I fetch all posts using Hashnode’s GraphQL API with pagination handled inside a Node.js script.






Dev.to: distribution and extra reach



Dev.to is where additional readers come from, so ignoring those views felt wrong.



Using the Dev.to API (with a personal access token), I fetch all my articles and extract:




  • slug


  • canonical_url


  • page_views_count







Matching articles across platforms



This is the tricky part. Articles are matched using a layered strategy:




  1. Slug match


  2. Canonical URL match


  3. Title match




Once matched, the final view count becomes:




combinedViews = hashnodeViews + devtoViews






The output for each blog includes:




  • Combined views


  • Platform-specific views (for debugging)


  • Dev.to URL (if matched)







Writing the static data contract



All processed data is written to the static/blogs.json file.



This file is:




  • Generated at build time


  • Git-ignored


  • Treated as read-only by the app




It also includes metadata like the last updated time and the total blog count.



This JSON file effectively replaces my entire blog API.






Replacing runtime APIs with static services



Previously, services/blogs.js made live GraphQL calls. After the refactor:




  • The service dynamically imports blogs.json


  • find, findOne, and search all operate locally


  • No Axios


  • No pagination state


  • No network failures




From the UI’s perspective, nothing changed - but under the hood, everything became predictable.






Instant search and sorting



Once all blog data is local, search becomes trivial.



I added:




  • Client-side text search (title, brief, tags)



  • Sorting by:




    • Published date (recent / oldest)

    • View count (most / least)








Because the dataset is small and static:




  • Search results are instant


  • No debouncing hacks


  • No loading states


  • Sorting is deterministic




This dramatically improves discoverability without introducing a search service.






Trade-offs and lessons learned



This approach isn’t perfect:




  • Build time increases slightly


  • The JSON file grows over time


  • It’s not suitable for real-time analytics




But for a personal blog, the trade-offs are worth it.



The key takeaways from the refactor that made me realize that:




  • Static doesn’t mean lifeless


  • Build-time data pipelines are underrated


  • One clean data contract simplifies UI, UX, and performance




If you’re curious, the full implementation lives in the ravgeet.in repository.

IoC Intelligence (1 Indikatoren)
dev[.]to
CTI Threat Relationship Graph2 Knoten / 1 Relationen
CVE / Incident Software MITRE ATT&CK CWE Weakness IoC
SOC Incident Playbook: Remote Code Execution (RCE) Defense
title: Detect Exploitation - Rebuilding My Static Blog with Build-Time Data and Instant Search
id: 99479f77-357d-447d-80a5-cf339707bed7
status: experimental
description: Automatisch generierte SIEM-Erkennungsregel basierend auf CTI Intelligence
references:
  - https://tsecurity.de/
author: iShareStuff CTI Automated Detection Engine
date: 2026-09-24
logsource:
  category: network_connection
  product: any
detection:
  selection:
      DestinationHostname:
        - 'dev.to'
  condition: selection
falsepositives:
  - Legitime administrative Zugriffe oder Penetrationstests
level: high
tags:
  - attack.initial_access
rule CTI_Threat_Indicator {
    meta:
        author = "iShareStuff CTI Automated Detection Engine"
        date = "2026-09-24"
        description = "YARA Signature for "
    strings:
        $str = "Rebuilding My Static Blog with" ascii wide
    condition:
        any of them
}
tsecurity.de Cognitive Threat RAG
Fokus-Vektor:

Kognitive Analyse für identifizierte Bedrohung: Erhöhte Bedrohungslage im Bereich Rebuilding My Static Blog with Build-Tim.... Basierend auf 368k Vektor-Korrelationen werden sofortige Isolationsmaßnahmen für betroffene Endpunkte empfohlen.

🛡️ Angriffsfläche & Exposure

Netzwerk/Remote-Zugriff ohne Vorauthentifizierung möglich.

⚡ Empfohlene Sofortmaßnahmen
  • 1. Perimeter-Inspektion: Relevante Portfreigaben und exponierte Endpunkte unverzüglich scannen.
  • 2. Patch-Applikation: Hersteller-Hotfix einspielen oder betroffene Daemons in isolierte DMZ-Segmente überführen.
  • 3. Telemetrie & EDR-Alerts: Prozessaufrufe und Child-Processes auf anomale Shell-Spawns überwachen.
🔗 Semantisch verwandte Zero-Days MariaDB 11.7 VEC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Rebuilding My Static Blog with Build-Time Data and Instant Search

Thematisch verwandte Begriffe: Rebuilding, Static, Blog, with · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-57175 | Python Social Auth is a social authentication/registration mechanism. Pr…
Advisory →
tsecurity.de Icon
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel • Rechts: nächster Artikel • unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel TTP ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...
↗ Original-Quelle