SkillAgentSearch skills...

Statix

personal blog

Install / Use

/learn @julienlargetpiet/Statix
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<h2 align="center">“Express your ideas without friction.”</h2> <p align="center"> <img src="logo.png" alt="Statix Logo" width="220"> </p>

👉 Quickstart — Deploy Statix in seconds

👉 CLI — Command Line Interface

👉 NeoVim — WorkFlow with NeoVim

👉 Example — Running Statix Blog Example

Presentation

<details> <summary><b>📝 Blog</b> — screenshots (Dark Theme / Default)</summary> <br/> <p align="center"> <img src="presentation_pics/blog/cap0.webp" width="260" /> <img src="presentation_pics/blog/cap1.webp" width="260" /> <img src="presentation_pics/blog/cap2.webp" width="260" /> </p> <p align="center"> <img src="presentation_pics/blog/cap3.webp" width="260" /> <img src="presentation_pics/blog/cap4.webp" width="260" /> <img src="presentation_pics/blog/cap5.webp" width="260" /> </p> <p align="center"> <img src="presentation_pics/blog/cap6.webp" width="260" /> <img src="presentation_pics/blog/cap7.webp" width="260" /> <img src="presentation_pics/blog/cap8.webp" width="260" /> </p> <p align="center"> <img src="presentation_pics/blog/cap9.webp" width="260" /> </p> </details> <details> <summary><b>Some Default Themes & Selection</b> — screenshots</summary> <br/> <p align="center"> <img src="presentation_pics/themes/theme0.webp" width="260" /> <img src="presentation_pics/themes/theme1.webp" width="260" /> </p> <p align="center"> <img src="presentation_pics/themes/theme2.webp" width="260" /> <img src="presentation_pics/themes/theme3.webp" width="260" /> </p> </details> <details> <summary><b>✨ Shiny</b> — screenshots</summary> <br/> <p align="center"> <img src="presentation_pics/shiny/caps0.webp" width="260" /> <img src="presentation_pics/shiny/caps1.webp" width="260" /> </p> <p align="center"> <img src="presentation_pics/shiny/caps3.webp" width="260" /> <img src="presentation_pics/shiny/caps4.webp" width="260" /> </p> </details>

Statix — Deterministic Static Publishing with Infrastructure-Aware Analytics

Philosophy

Statix is built around a simple idea:

Publishing should be deterministic, atomic, and observable.

Modern blog platforms often mix:

  • runtime rendering
  • partial deployments
  • third-party tracking
  • opaque analytics pipelines

Statix deliberately avoids that.

1️⃣ Deterministic Builds

Every build produces a fully isolated, immutable output.

  • No partial states
  • No in-place mutation
  • No runtime rendering
  • No dependency on application availability

A build either succeeds and is promoted — or it does not exist.

Production never sees intermediate artifacts.


2️⃣ Atomic Promotion

Generated output is promoted to production only after full success.

This guarantees:

  • No broken deploy windows
  • No half-built pages
  • No inconsistent state
  • No race conditions between content and serving

Statix treats publishing as a controlled state transition, not a file overwrite.


3️⃣ Clear Separation of Concerns

Statix separates responsibilities cleanly:

  • Go admin backend → content orchestration & build control
  • NGINX → static file serving
  • MySQL/MariaDB → structured content storage
  • R Shiny module (optional) → infrastructure-level analytics

Each component has a single responsibility.


4️⃣ Privacy-Respecting Analytics

The optional analytics module is:

  • Log-based
  • Server-side
  • Infrastructure-aware
  • JS-free
  • Cookie-free

Instead of tracking users, Statix analyzes:

  • Request behavior
  • ASN infrastructure
  • Bot patterns
  • Median read-time estimation (log-derived)

Analytics are derived from server logs — not client-side surveillance.


5️⃣ Infrastructure Awareness

Statix does not treat all traffic equally.

It can distinguish:

  • Residential ISP traffic
  • Cloud / hosting providers
  • Data center infrastructure
  • Suspicious behavioral patterns

This allows infrastructure-level filtering and realistic engagement analysis.

6️⃣ First-Class Writing & Reading Experience

Statix ships with prebuilt authoring support designed for frictionless content creation.

Writers are not forced to fight tooling.

Included out of the box:

  • CodeMirror 6 → modern, extensible in-browser editor
  • KaTeX → fast, deterministic LaTeX math rendering
  • Prism.js → zero-runtime syntax highlighting

This enables:

  • Structured article writing
  • Code Language awareness
  • Mathematical typesetting without client-side heavy engines
  • Consistent, static-safe rendering

All rendering is deterministic and build-time resolved.

There is no runtime interpretation layer.
There is no client-side compilation step.

You can also preview your articles in the editing window.

The output remains static, immutable, and production-safe.

Statix does not compromise build guarantees to support rich content.

It integrates expressive tooling — without sacrificing determinism.

7️⃣ Personalization — Without Compromise

Statix allows visual customization without breaking determinism.

Themes and Fonts are prebuilt, curated, and fully versioned.
Switching a theme is an atomic state transition — not a file mutation.

  • No in-place CSS edits
  • No partial writes
  • No runtime rendering
  • No rebuild required

A theme change is promoted the same way content is:

Deterministically. Atomically. Safely.

Express identity freely —
without sacrificing infrastructure integrity.


Architecture Overview

Publishing Pipeline

Editor / Admin
        ↓
Go Admin Backend (127.0.0.1:8080)
        ↓
Atomic Build Engine
        ↓
Isolated Immutable Output (dist/)
        ↓
Promotion to Production
        ↓
NGINX Static Serving
        ↓
End Users

Key properties:

  • Static output only
  • No runtime page rendering
  • NGINX serves files directly
  • Admin backend never exposed publicly
  • Promotion replaces state atomically

Analytics Pipeline (Optional Module)

NGINX access.log
        ↓
R Shiny Log Analyzer
        ↓
GeoLite2 (ASN + City)
        ↓
Infrastructure Classification
        ↓
Behavioral Heuristics
        ↓
Engagement Metrics (Median Read Time)
        ↓
Interactive Dashboard

Key properties:

  • No client-side tracking
  • No third-party analytics
  • ASN-based traffic classification
  • Bot filtering via UA + behavior + infrastructure
  • Engagement estimated from inter-request deltas

What Statix Is

  • Deterministic static publishing engine
  • Production-first deployment model
  • Infrastructure-aware analytics system
  • Self-hosted and transparent

What Statix Is Not

  • A dynamic CMS
  • A SaaS blogging platform
  • A JavaScript-based tracking system
  • A marketing analytics suite

Statix prioritizes clarity, control, and system-level correctness over feature sprawl.

Statix (Go) — Production Deployment Guide

NGINX + MySQL/MariaDB + systemd

Statix provides a build engine that operates in either localized or global mode. In localized mode, each page set or instance executes its build process independently. In global mode, a centralized engine orchestrates builds across multiple page sets or environments.

Builds are atomic. Each generation produces an isolated, immutable output that is promoted to production only upon successful completion. No partial or intermediate state is ever exposed.

Architecture:

  • Go admin backend → 127.0.0.1:8080
  • NGINX reverse proxy
  • MySQL or MariaDB database
  • Static files served from /var/www/go_blog/dist
  • systemd-managed service
  • Dedicated non-root system user (goblog)

Domain placeholder used in this guide:

example.com

Replace it with your real domain.

Or folow the Quickstart script


QUICKSTART

$ sudo apt update
$ sudo apt install git
$ git clone https://github.com/julienlargetpiet/statix
$ cd statix
$ bash quickstart.sh

Remove

$ bash uninstall.sh

1️⃣ Prerequisites

Server: Debian / Ubuntu
Privileges: sudo

Install required packages:

sudo apt update
sudo apt install -y nginx mysql-server

If using MariaDB:

sudo apt install -y mariadb-server

Install Go (manual):

wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
/usr/local/go/bin/go version

2️⃣ Create Dedicated System User

sudo useradd -r -s /bin/false goblog

3️⃣ Clone Project Directly to Production Path

sudo mkdir -p /var/www
sudo chown -R goblog:goblog /var/www

sudo -u goblog git clone https://github.com/julienlargetpiet/blog /var/www/go_blog
cd /var/www/go_blog

The project must live directly inside:

/var/www/go_blog

4️⃣ Build Production Binary

From the repo root:

cd /var/www/go_blog
sudo -u goblog /usr/local/go/bin/go build -buildvcs=false -o go_blog_admin ./cmd/admin

Binary location:

/var/www/go_blog/go_blog_admin

5️⃣ Set Correct Linux Permissions

Ownership:

sudo chown -R goblog:goblog /var/www/go_blog

Directories must be traversable by nginx:

sudo find /var/www/go_blog -type d -exec chmod 755 {} \;

Files must be readable by nginx:

sudo find /var/www/go_blog -type f -exec chmod 644 {} \;

Binary must remain executable:

sudo chmod 755 /var/www/go_blog/go_blog_admin

Final permission model:

  • Owner: goblog
  • nginx: read-only
  • No 777 anywhere

6️⃣ Database Setup (MySQL or MariaDB)

Login:

sudo mysql -u root -p

Create database:

CREATE DATABASE go_blog;

Create application user:

CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON go_blog.* TO 'blog_user'@'localhost';
FLUSH PRIVILEGES;

(Optional) restricted backup user:

CREATE USER 'goblog_backup'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT, SHOW VIEW, TRIGGE

Related Skills

View on GitHub
GitHub Stars6
CategoryDevelopment
Updated11d ago
Forks0

Languages

JavaScript

Security Score

65/100

Audited on Mar 23, 2026

No findings