Compare commits

...
13 Commits
Author SHA1 Message Date
venus f3ae84ad79 feat(samples): align split panel sample with canonical layout specs 2026-09-05 15:15:48 -05:00
venus 451fb34f52 feat(samples): align dual pane explorer with canonical system specs and logs 2026-09-05 15:15:46 -05:00
venus 9f4758039a feat(samples): align sample dashboard with canonical telemetry and metrics 2026-09-05 15:15:45 -05:00
venus 6a0f4347f9 feat(samples): align sample command center with canonical telemetry and nodes 2026-09-05 15:15:44 -05:00
venus 0ee5fae6be feat(samples): synchronize public services directory with canonical specs 2026-09-05 15:15:43 -05:00
venus be516f8848 feat(samples): update portfolio layout with canonical engineering projects 2026-09-05 15:15:41 -05:00
venus 59bac4bac9 feat(samples): expand samples catalog index with canonical layout showcase 2026-09-05 15:15:39 -05:00
venus e68322f182 feat(samples): update homepage sample with canonical metadata and layout updates 2026-09-05 15:15:38 -05:00
venus bf351e9755 feat(samples): align homelab specs and nodes with canonical dataset 2026-09-05 15:15:36 -05:00
venus 801ba3a533 feat(samples): update document flow layout with canonical dataset references 2026-09-05 15:15:35 -05:00
venus 65ad51560c feat(samples): update companion layout with canonical persona and links 2026-09-05 15:15:34 -05:00
venus 0f80bf4e9b feat(index): update tags and footer with canonical contact info and samples link 2026-09-05 15:15:33 -05:00
venus 424041a827 docs: add canonical sample content dataset 2026-09-05 15:15:29 -05:00
13 changed files with 1377 additions and 495 deletions
+10 -2
View File
@@ -250,6 +250,10 @@
<span class="tag">[#wireguard]</span> <span class="tag">[#wireguard]</span>
<span class="tag">[#posix-sh]</span> <span class="tag">[#posix-sh]</span>
<span class="tag">[#python]</span> <span class="tag">[#python]</span>
<span class="tag">[#golang]</span>
<span class="tag">[#rust]</span>
<span class="tag">[#proxmox]</span>
<span class="tag">[#truenas]</span>
</div> </div>
</section> </section>
@@ -257,11 +261,15 @@
<!-- Piped Contact Footer --> <!-- Piped Contact Footer -->
<footer class="footer-links"> <footer class="footer-links">
<a href="https://git.rooks.dev" target="_blank" rel="noopener" class="footer-link">Git Forge</a>
<span class="pipe">|</span>
<a href="https://github.com" target="_blank" rel="noopener" class="footer-link">GitHub</a> <a href="https://github.com" target="_blank" rel="noopener" class="footer-link">GitHub</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="mailto:river@example.com" class="footer-link">Email</a> <a href="mailto:river@rooks.dev" class="footer-link">river@rooks.dev</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="#" class="footer-link">PGP Key</a> <a href="#" title="Fingerprint: 0x4A8E92F1C0B3D4E7" class="footer-link">PGP Key</a>
<span class="pipe">|</span>
<a href="samples/index.html" class="footer-link">Spec Samples Catalog</a>
</footer> </footer>
</main> </main>
+273
View File
@@ -0,0 +1,273 @@
# Canonical Content Dataset & Single Source of Truth for Design Samples
**Document Purpose:** Standardized dataset containing canonical profile data, active services, technical blog notes, engineering projects, hardware nodes, and interactive ASCII daemon assets. All design sample layouts (`homepage.html`, `split-panel.html`, `companion.html`, `document-flow.html`, `portfolio.html`, `homelab.html`, `public-services.html`, `sample-dashboard.html`, `sample-command-center.html`, `sample-dual-pane-explorer.html`) pull from this common material.
---
## 1. Persona & Identity (`whoami`)
| Field | Canonical Value |
| :--- | :--- |
| **Full Name** | `River Rooks` |
| **Primary Title** | `Systems Architecture & Cybersecurity` |
| **Academic / Institutional Role** | Cybersecurity student at the University of Alabama College of Engineering |
| **Specialization Areas** | Network forensics, self-hosted infrastructure, systems architecture, low-level tooling, bare-metal virtualization |
| **Physical Node Location** | Alabama, USA / `RACK-01` |
| **System Hostname Prompt** | `dev-blog@system:~$` / `agy --node-01` |
| **PGP Key Fingerprint** | `0x4A8E92F1C0B3D4E7` |
| **SSH Public Key Digest** | `SHA256:7uK+N04wP5rL/9z3Q8s1vX4dF6mK2pT8yB1wN0qZ8` |
| **Email Address** | `river@rooks.dev` (or `river@example.com`) |
| **Public Git Forge** | `https://git.rooks.dev` / `https://github.com` |
| **Matrix Chat Endpoint** | `@river:rooks.dev` |
### Biography Snippets
* **One-Line Meta:** `Cybersecurity student at UA College of Engineering focusing on network forensics, self-hosted infrastructure, and systems architecture.`
* **Extended Bio:** `Cybersecurity student and systems practitioner. Spends time architecting high-throughput homelab networks, reverse engineering IoT firmware, hardening FreeBSD/Linux hypervisors, and writing zero-allocation Unix utilities.`
### Active Tech Stack Tags
```text
[#network-forensics] [#docker-traefik] [#arch-linux] [#neovim] [#wireguard]
[#posix-sh] [#python] [#golang] [#rust] [#proxmox] [#truenas]
```
---
## 2. Services Directory & Infrastructure Catalog
### A. Core & Network Infrastructure
| Service Name | Category | Port / Protocol | Domain / Routing | Access | Description |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **Traefik Proxy (v3.1)** | `#core` | `443/tcp` (TLS) | `https://proxy.rooks.dev` | `INTERNAL / ONLINE` | Edge HTTP reverse proxy and load balancer with dynamic Docker provider discovery and ACME Let's Encrypt TLS wildcard certificates. |
| **OPNsense Firewall (v24.7)** | `#core` | `VLAN 10 / Mgmt` | Gateway IP | `PROTECTED / ACTIVE` | Hardened FreeBSD firewall routing 10GbE traffic with VLAN isolation, Suricata IDS/IPS, and Unbound DNS resolvers. |
| **AdGuard Home** | `#dns` | `53/udp`, `853/tcp` | `https://dns.rooks.dev` | `INTERNAL / PROTECTED` | Network-wide DNS sinkhole filtering trackers and ad domains across all VLANs with DNS-over-HTTPS upstream security. |
| **WireGuard Mesh** | `#vpn` | `51820/udp` | Peer Mesh | `PUBLIC / 14 PEERS` | High-performance encrypted point-to-point VPN tunnel connecting remote laptops and mobile endpoints to homelab subnet. |
### B. Compute, Virtualization & Storage
| Service Name | Category | Port / Protocol | Domain / Routing | Access | Description |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **Proxmox VE (v8.2)** | `#compute` | `8006/tcp` | `https://pve.rooks.dev` | `INTERNAL / ONLINE` | Enterprise hypervisor cluster hosting Debian LXC containers and KVM virtual machines with Ceph & ZFS backend. |
| **TrueNAS SCALE** | `#storage` | `NFS / SMB / 443` | `https://nas.rooks.dev` | `INTERNAL / ONLINE` | Primary network attached storage managing 48TB ZFS RaidZ2 array, dataset snapshots, NFS exports, and scrub jobs. |
| **Forgejo Git Server** | `#dev-git` | `3000/tcp`, `2222/ssh` | `https://git.rooks.dev` | `PUBLIC / OPEN` | Lightweight self-hosted Git forge hosting infrastructure-as-code repos, Ansible playbooks, dotfiles, and CTF archives. |
### C. Public Tools & Developer Utilities
| Service Name | Category | Port / Protocol | Domain / Routing | Access | Description |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **CyberChef Workbench** | `#security-tool` | `443/tcp` | `https://chef.rooks.dev` | `PUBLIC / OPEN` | Cyber Swiss Army Knife for hex decoding, Base64 operations, regex extraction, cryptographic hashing, and CTF payload analysis. |
| **Stirling PDF Studio** | `#pdf-tools` | `443/tcp` | `https://pdf.rooks.dev` | `PUBLIC / OPEN` | Self-hosted document processing suite for merging, splitting, OCR text extraction, password encryption, and PDF page manipulation. |
| **HedgeDoc Collaborative** | `#markdown` | `443/tcp` | `https://pad.rooks.dev` | `PUBLIC / OPEN` | Real-time collaborative Markdown editor for technical specs, RFC drafts, and collaborative meeting notes. |
### D. Media, Reading & Content Automation
| Service Name | Category | Port / Protocol | Domain / Routing | Access | Description |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **Jellyfin Media Portal** | `#media-video` | `8096/tcp` | `https://watch.rooks.dev` | `AUTH REQUIRED` | FOSS media streaming engine leveraging Intel QuickSync GPU hardware acceleration for 4K HDR transcoding. |
| **Arr Automation Suite** | `#automation` | `8989 / 7878 / 9696` | `https://arr.rooks.dev` | `INTERNAL / RUNNING` | Automated content indexing, Prowlarr indexer management, Sonarr/Radarr pipeline, and SABnzbd queue downloader. |
| **Audiobookshelf** | `#media-audio` | `443/tcp` | `https://listen.rooks.dev` | `INVITE ONLY` | Self-hosted audiobook and podcast streaming server with continuous playback position synchronization across mobile clients. |
| **Calibre-Web Library** | `#ebooks` | `443/tcp` | `https://read.rooks.dev` | `PUBLIC READ` | E-book library catalog with e-reader OPDS feed integration and in-browser reading support. |
### E. Security, Telemetry & Communications
| Service Name | Category | Port / Protocol | Domain / Routing | Access | Description |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **Vaultwarden** | `#secrets` | `443/tcp` (E2EE) | `https://vault.rooks.dev` | `2FA / AUTH` | Lightweight Rust implementation of the Bitwarden API hosting encrypted credentials, SSH keys, and TOTP tokens. |
| **Prometheus & Grafana** | `#telemetry` | `3000 / 9090` | `https://mon.rooks.dev` | `INTERNAL / SCRAPING` | Time-series metric collection with Node Exporter, Telegraf agents, and live cluster performance dashboards. |
| **Uptime Kuma** | `#status` | `3001/tcp` | `https://status.rooks.dev` | `PUBLIC / 100% HEALTH`| Synthetic HTTP, Ping, and TCP health monitor broadcasting real-time service uptime alerts to Discord webhooks. |
| **Matrix Synapse** | `#messaging` | `8448/tcp` | `https://matrix.rooks.dev` | `FEDERATED / OPEN` | Federated Matrix homeserver for encrypted messaging, public security channels, and cross-server communication. |
---
## 3. Technical Notes & Blog Articles
### Post 1: Featured Article (Full Writeup)
* **Title:** `Reverse Engineering IoT Firmware: SPI Flash Extraction`
* **File / Path:** `~/notes/iot-firmware-spi-extraction.md`
* **Publication Date:** `2026-07-20`
* **Reading Time:** `8 mins`
* **Tags:** `[#firmware]`, `[#hardware]`, `[#security]`, `[#bus-pirate]`
* **Abstract:** In security audits of embedded systems, retrieving the firmware is the critical first step. When over-the-air updates are encrypted and debug ports (UART, JTAG) are disabled in production silicon, dumping physical SPI Flash memory becomes necessary. This writeup covers extracting firmware from an 8-pin SOP SPI flash chip using a Bus Pirate and flashrom to bypass bootloader lockdowns.
* **Code Snippet (`extract_firmware.sh`):**
```bash
#!/bin/sh
# Query the SPI flash details using flashrom via Bus Pirate
flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
# Verify the integrity of the binary dump by comparing hashes
if [ $? -eq 0 ]; then
echo "Dump successful. Running md5sum..."
md5sum firmware_dump.bin
else
echo "Failed to read flash memory." >&2
exit 1
fi
```
### Post 2: Traefik Docker Architecture
* **Title:** `Building a High-Availability Traefik Router with Docker Compose`
* **File / Path:** `~/notes/ha-traefik-docker.md`
* **Publication Date:** `2026-07-15`
* **Reading Time:** `12 mins`
* **Tags:** `[#homelab]`, `[#docker-traefik]`, `[#networking]`
* **Abstract:** Architecting automated TLS wildcard certificate propagation, Docker provider label routing, zero-downtime container updates, and backend health-check failover routes.
### Post 3: Shell Portability
* **Title:** `POSIX sh vs. Bash: Portability in Modern Scripts`
* **File / Path:** `~/notes/posix-sh-vs-bash.md`
* **Publication Date:** `2026-07-10`
* **Reading Time:** `6 mins`
* **Tags:** `[#posix-sh]`, `[#shell]`, `[#unix]`
* **Abstract:** Analyzing edge-case incompatibilities, syntax overhead, eliminating bashisms, and writing fast, bulletproof bootstrapping scripts for Alpine and embedded targets conforming to IEEE Std 1003.1.
### Post 4: Low-Level CTF Exploitation
* **Title:** `CTF Write-up: Heap Exploitation in glibc 2.35`
* **File / Path:** `~/notes/ctf-heap-glibc-2-35.md`
* **Publication Date:** `2026-06-28`
* **Reading Time:** `15 mins`
* **Tags:** `[#ctf]`, `[#binary-exploitation]`, `[#security]`
* **Abstract:** Deconstructing modern glibc memory allocator defenses: tcache safe-linking pointer mangling, bypass primitives, and House of Apple file structure hijacking for arbitrary code execution.
### Post 5: Network Isolation
* **Title:** `Zero-Trust Network Isolation with WireGuard & OPNsense VLANs`
* **File / Path:** `~/notes/zero-trust-wireguard-opnsense.md`
* **Publication Date:** `2026-06-14`
* **Reading Time:** `10 mins`
* **Tags:** `[#networking]`, `[#wireguard]`, `[#security]`
* **Abstract:** Designing strict zone-based firewall rules across isolated VLANs (Management, Server DMZ, IoT, Trusted Clients) with point-to-point WireGuard cryptographic routing.
---
## 4. Engineering Projects & System Modules
### Module 1: Custom POSIX Shell Parser
* **Path / Identifier:** `/dev/posix-shell-parser`
* **Version:** `v1.2.0`
* **Primary Language:** `Lua`
* **Tags:** `[#lua]`, `[#ast-parser]`, `[#compilers]`
* **Summary:** A lightweight Lexer and AST parser written in Lua for parsing POSIX-compliant shell scripts. Optimized to avoid runtime heap allocations during tokenization, enabling real-time syntax coloring inside terminal buffers.
* **Code Snippet (`lexer.lua`):**
```lua
local function tokenize(src)
local tokens = {}
for pos, char in ipairs(src) do
if char == ";" or char == "|" then
table.insert(tokens, { type = "OPERATOR", value = char })
end
end
return tokens
end
```
### Module 2: WireGuard Mesh Topology Builder
* **Path / Identifier:** `/dev/wireguard-mesh`
* **Version:** `v0.8.4`
* **Primary Language:** `Python` / `POSIX sh`
* **Tags:** `[#networking]`, `[#wireguard]`, `[#automation]`
* **Summary:** Automated configuration generator that computes public/private key matrices and generates atomic configuration files for full-mesh WireGuard overlay networks spanning cloud VMs and homelab servers.
### Module 3: Zero-Allocation Logger (Go)
* **Path / Identifier:** `/dev/zero-alloc-logger`
* **Version:** `v2.1.1`
* **Primary Language:** `Go`
* **Tags:** `[#go]`, `[#performance]`, `[#systems]`
* **Summary:** A high-throughput structured JSON logger utilizing `sync.Pool` memory recycling to eliminate GC pause overhead during disk I/O (>500,000 log events/second).
### Module 4: Embedded Kernel Boot Strap
* **Path / Identifier:** `/dev/kernel-bootstrap`
* **Version:** `v0.1.0`
* **Primary Language:** `ARM Cortex Assembly` / `C`
* **Tags:** `[#arm-cortex]`, `[#assembly]`, `[#embedded]`
* **Summary:** Bare-metal boot sector and initial C runtime setup for ARM Cortex-M microcontrollers. Configures vector table offset registers, performs memory section copying, and initializes early UART debugging output.
### Module 5: Traefik Cloudflare Dynamic DNS Daemon
* **Path / Identifier:** `/dev/ddns-daemon`
* **Version:** `v1.0.2`
* **Primary Language:** `Python` / `Docker SDK`
* **Tags:** `[#docker]`, `[#traefik]`, `[#cloudflare]`
* **Summary:** Background controller daemon monitoring Docker container state transitions and synchronizing container label subdomains with Cloudflare DNS A/AAAA records.
---
## 5. Physical Hardware Nodes & Telemetry
```text
+-------------------+ 10GbE SFP+ +-------------------+
| gw-node01.lan | <==================> | pve-node02.lan |
| OPNsense 24.7 | | Proxmox VE 8.2 |
| Intel N100 (4C/4T)| | AMD 5900X (12C/24T|
+-------------------+ +-------------------+
|| ||
|| 10GbE Trunk || 10GbE NFS/SMB
\/ \/
+--------------------------------------------------------------+
| nas-node03.lan |
| TrueNAS SCALE (48TB RaidZ2 Pool) |
| Intel Core i5-12400 (6C/12T) / 64GB ECC |
+--------------------------------------------------------------+
```
| Hostname | Role / Operating System | Hardware Specifications | Nominal Load |
| :--- | :--- | :--- | :--- |
| **`gw-node01.lan`** | Edge Gateway / OPNsense 24.7 | Intel N100 (4C/4T), 16GB DDR5, 4x 2.5GbE I226-V | CPU: 18% \| RAM: 32% |
| **`pve-node02.lan`** | Hypervisor / Proxmox VE 8.2 | AMD Ryzen 9 5900X (12C/24T), 128GB ECC DDR4, 2x 2TB NVMe | CPU: 42% \| RAM: 68% |
| **`nas-node03.lan`** | Storage / TrueNAS SCALE | Intel Core i5-12400 (6C/12T), 64GB ECC, 6x 16TB Enterprise SAS | CPU: 14% \| RAM: 82% (ZFS ARC) |
---
## 6. ASCII Mascot & Daemon Artframes (`sys-daemon`)
### Frame 1: Idle / Scanning
```text
.-----------------.
/ ^ ^ ^ /|
/ (_) (_) (_) / |
/__________________/ |
| ___ ___ | |
| [o_o] [o_o] | |
| `-' `-' | |
| ______ | |
| / \ | /
| | -- | | /
| \____/ |/
`------------------'
```
### Frame 2: Active / Alert
```text
.-----------------.
/ ^ ^ ^ /|
/ (_) (_) (_) / |
/__________________/ |
| ___ ___ | |
| [-_-] [-_-] | |
| `-' `-' | |
| ______ | |
| / \ | /
| | O | | /
| \____/ |/
`------------------'
```
### Frame 3: Scroll-Tracker Cat Daemon
```text
/\___/\
( o o ) sys-daemon
( =^= ) [TRACKING]
(---)
```
---
## 7. Sample Pages Material Mapping Matrix
This matrix specifies which components and data entries from this canonical document are presented in each sample layout:
| Sample File | Layout Style | Persona / Bio | Services Included | Notes / Articles | Project Modules | Nodes & Telemetry | Mascot / Daemon |
| :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |
| [`index.html`](file:///home/venus/code/blog/index.html) | Root Minimalist Business Card | Full whoami | — | — | Active Stack Tags | Terminal stdout | — |
| [`samples/homepage.html`](file:///home/venus/code/blog/samples/homepage.html) | Sample 1: Developer Homepage | Profile header | — | Post 1 (Full) + Archive Index (2,3,4) | — | — | — |
| [`samples/split-panel.html`](file:///home/venus/code/blog/samples/split-panel.html) | Sample 2: Split Panel Feed | — | — | — | Modules 1–5 | Status row | Frame 1/2 Animated |
| [`samples/companion.html`](file:///home/venus/code/blog/samples/companion.html) | Sample 3: Companion Layout | — | — | — | Modules 1–5 | Terminal card | Frame 3 Cat Daemon |
| [`samples/document-flow.html`](file:///home/venus/code/blog/samples/document-flow.html) | Sample 4: Continuous Document Flow | Header banner | — | Post 1 Snippets | Modules 1–5 in detail | — | Frame 3 Scroll Tracker |
| [`samples/portfolio.html`](file:///home/venus/code/blog/samples/portfolio.html) | Sample 5: Portfolio Card | Full whoami | — | — | Active Stack Tags | Terminal stdout | — |
| [`samples/homelab.html`](file:///home/venus/code/blog/samples/homelab.html) | Sample 6: Homelab Lander | Header banner | All Core & Compute (12 services) | — | — | Nodes 1–3 + ASCII Topology | Terminal logs |
| [`samples/public-services.html`](file:///home/venus/code/blog/samples/public-services.html) | Sample 7: Public Portal | Header banner | All Public Utilities (9 services) | — | — | Keys & PGP box | — |
| [`samples/sample-dashboard.html`](file:///home/venus/code/blog/samples/sample-dashboard.html) | Sample 8: 3-Tile Workspace | Center tile bio | Left tile services | Right tile archive | Center tile projects | Status bar | Vim command bar |
| [`samples/sample-command-center.html`](file:///home/venus/code/blog/samples/sample-command-center.html) | Sample 9: Tabbed Command Center | Tab 3 (Resume) | Tab 1 (Services) | Tab 2 (Blog Notes) | Tab 3 (Projects) | Tab 1 (Nodes) | Status dots |
| [`samples/sample-dual-pane-explorer.html`](file:///home/venus/code/blog/samples/sample-dual-pane-explorer.html) | Sample 10: Helix Tree Explorer | Sidebar links | Services subtree | Notes subtree | Modules subtree | Status bar | Sidebar companion |
+18 -13
View File
@@ -345,6 +345,11 @@
<a href="companion.html" class="nav-link active">Sample 3</a> <a href="companion.html" class="nav-link active">Sample 3</a>
<a href="document-flow.html" class="nav-link">Sample 4</a> <a href="document-flow.html" class="nav-link">Sample 4</a>
<a href="portfolio.html" class="nav-link">Sample 5</a> <a href="portfolio.html" class="nav-link">Sample 5</a>
<a href="homelab.html" class="nav-link">Sample 6</a>
<a href="public-services.html" class="nav-link">Sample 7</a>
<a href="sample-dashboard.html" class="nav-link">Sample 8</a>
<a href="sample-command-center.html" class="nav-link">Sample 9</a>
<a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10</a>
</nav> </nav>
</header> </header>
@@ -354,53 +359,53 @@
<!-- Left Pane: Scrollable Project Cards --> <!-- Left Pane: Scrollable Project Cards -->
<main class="left-pane" aria-label="Project Feed"> <main class="left-pane" aria-label="Project Feed">
<div class="scroll-content"> <div class="scroll-content">
<h2 class="section-title">System Modules</h2> <h2 class="section-title">River Rooks // System Modules</h2>
<div class="card-list"> <div class="card-list">
<!-- Card 1 --> <!-- Card 1 -->
<div class="project-card" tabindex="0" data-target="/dev/posix-shell-parser"> <div class="project-card" tabindex="0" data-target="/dev/posix-shell-parser">
<h3 class="card-title">Custom POSIX Shell Parser</h3> <h3 class="card-title">Custom POSIX Shell Parser <span style="font-size: 0.8rem; font-weight: 400; color: var(--text-muted);">[v1.2.0 • #lua]</span></h3>
<p class="card-description"> <p class="card-description">
A lightweight Lexer and AST parser written in Lua for parsing POSIX-compliant shell scripts. Highly optimized for syntax coloring inside modal environments. A lightweight Lexer and AST parser written in Lua for parsing POSIX-compliant shell scripts. Highly optimized for syntax coloring inside modal environments without runtime heap allocations.
</p> </p>
</div> </div>
<!-- Card 2 --> <!-- Card 2 -->
<div class="project-card" tabindex="0" data-target="/dev/wireguard-mesh"> <div class="project-card" tabindex="0" data-target="/dev/wireguard-mesh">
<h3 class="card-title">WireGuard Mesh Topology Builder</h3> <h3 class="card-title">WireGuard Mesh Topology Builder <span style="font-size: 0.8rem; font-weight: 400; color: var(--text-muted);">[v0.8.4 • #wireguard]</span></h3>
<p class="card-description"> <p class="card-description">
Automated configuration generator for setting up full-mesh WireGuard private overlays across cloud instances and local homelab nodes. Automated configuration generator for computing key matrices and setting up full-mesh WireGuard private overlays across cloud instances and local homelab nodes.
</p> </p>
</div> </div>
<!-- Card 3 --> <!-- Card 3 -->
<div class="project-card" tabindex="0" data-target="/dev/zero-alloc-logger"> <div class="project-card" tabindex="0" data-target="/dev/zero-alloc-logger">
<h3 class="card-title">Zero-Allocation Logger (Go)</h3> <h3 class="card-title">Zero-Allocation Logger (Go) <span style="font-size: 0.8rem; font-weight: 400; color: var(--text-muted);">[v2.1.1 • #golang]</span></h3>
<p class="card-description"> <p class="card-description">
A high-performance JSON structure logger that uses sync.Pool buffers to avoid memory allocation overhead during intensive disk operations. A high-performance JSON structure logger that uses sync.Pool buffers to avoid memory allocation overhead during intensive disk operations (>500k ops/sec).
</p> </p>
</div> </div>
<!-- Card 4 --> <!-- Card 4 -->
<div class="project-card" tabindex="0" data-target="/dev/kernel-bootstrap"> <div class="project-card" tabindex="0" data-target="/dev/kernel-bootstrap">
<h3 class="card-title">Embedded Kernel Boot Strap</h3> <h3 class="card-title">Embedded Kernel Boot Strap <span style="font-size: 0.8rem; font-weight: 400; color: var(--text-muted);">[v0.1.0 • #arm-cortex]</span></h3>
<p class="card-description"> <p class="card-description">
Minimalist boot sector and initial kernel bootstrap for ARM Cortex-M microcontrollers to handle memory map initialization and early UART status printouts. Minimalist boot sector and initial kernel bootstrap for ARM Cortex-M microcontrollers to handle vector table offset mapping and early UART status printouts.
</p> </p>
</div> </div>
<!-- Card 5 --> <!-- Card 5 -->
<div class="project-card" tabindex="0" data-target="/dev/ddns-daemon"> <div class="project-card" tabindex="0" data-target="/dev/ddns-daemon">
<h3 class="card-title">Traefik Cloudflare DDNS Daemon</h3> <h3 class="card-title">Traefik Cloudflare DDNS Daemon <span style="font-size: 0.8rem; font-weight: 400; color: var(--text-muted);">[v1.0.2 • #docker-traefik]</span></h3>
<p class="card-description"> <p class="card-description">
Background controller daemon designed to sync Docker container network labels with Cloudflare DNS records to route traffic to local homelab subdomains. Background controller daemon designed to sync Docker container network labels with Cloudflare DNS records to route traffic to local homelab subdomains dynamically.
</p> </p>
</div> </div>
</div> </div>
<footer class="pane-footer"> <footer class="pane-footer">
<span>Companion Spec Sample</span> <span>Sample 3: Companion Layout</span>
<span>© 2026 Developer System</span> <span>© 2026 River Rooks</span>
</footer> </footer>
</div> </div>
</main> </main>
+8 -3
View File
@@ -379,6 +379,11 @@
<a href="companion.html" class="nav-link">Sample 3</a> <a href="companion.html" class="nav-link">Sample 3</a>
<a href="document-flow.html" class="nav-link active">Sample 4</a> <a href="document-flow.html" class="nav-link active">Sample 4</a>
<a href="portfolio.html" class="nav-link">Sample 5</a> <a href="portfolio.html" class="nav-link">Sample 5</a>
<a href="homelab.html" class="nav-link">Sample 6</a>
<a href="public-services.html" class="nav-link">Sample 7</a>
<a href="sample-dashboard.html" class="nav-link">Sample 8</a>
<a href="sample-command-center.html" class="nav-link">Sample 9</a>
<a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10</a>
</nav> </nav>
</header> </header>
@@ -407,9 +412,9 @@
<!-- Document Header --> <!-- Document Header -->
<header class="document-header"> <header class="document-header">
<h1 class="doc-title">Engineering Architecture & Portfolio</h1> <h1 class="doc-title">River Rooks // Systems &amp; Architecture</h1>
<p class="doc-subtitle"> <p class="doc-subtitle">
A high-density technical reading flow. Pinned left pane contains an automated terminal tracker daemon observing scroll depth across sections. A high-density technical reading flow. Pinned left pane contains an automated terminal tracker daemon observing scroll depth across system modules.
</p> </p>
</header> </header>
@@ -536,7 +541,7 @@ end</code></pre>
<footer class="pane-footer"> <footer class="pane-footer">
<span>Sample 4: Document Flow Layout</span> <span>Sample 4: Document Flow Layout</span>
<span>© 2026 Developer System</span> <span>© 2026 River Rooks</span>
</footer> </footer>
</div> </div>
+12 -10
View File
@@ -512,6 +512,10 @@
<a href="document-flow.html" class="nav-link">Sample 4</a> <a href="document-flow.html" class="nav-link">Sample 4</a>
<a href="portfolio.html" class="nav-link">Sample 5</a> <a href="portfolio.html" class="nav-link">Sample 5</a>
<a href="homelab.html" class="nav-link active">Sample 6 (Homelab)</a> <a href="homelab.html" class="nav-link active">Sample 6 (Homelab)</a>
<a href="public-services.html" class="nav-link">Sample 7</a>
<a href="sample-dashboard.html" class="nav-link">Sample 8</a>
<a href="sample-command-center.html" class="nav-link">Sample 9</a>
<a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10</a>
</nav> </nav>
</header> </header>
@@ -771,9 +775,9 @@
<tr> <tr>
<td class="node-hostname">nas-node03.lan</td> <td class="node-hostname">nas-node03.lan</td>
<td>TrueNAS SCALE</td> <td>TrueNAS SCALE</td>
<td>Intel Xeon E-2278G (8C/16T) | 64GB ECC | 6x16TB ZFS</td> <td>Intel Core i5-12400 (6C/12T) | 64GB ECC | 6x 16TB RaidZ2</td>
<td><span class="metric-bar">[██░░░░░░░░]</span> 24%</td> <td><span class="metric-bar">[██░░░░░░░░]</span> 14%</td>
<td><span class="metric-bar">[████████░░]</span> 81%</td> <td><span class="metric-bar">[████████░░]</span> 82%</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -800,7 +804,7 @@
│ │
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐
│ Traefik v3 Reverse Proxy│ (Auto TLS Certs / Authelia 2FA) │ Traefik v3 Reverse Proxy│ (Auto TLS Certs / Dynamic Docker)
└───────────┬─────────────┘ └───────────┬─────────────┘
│ │
┌─────────┴───────────────────────┬─────────────────────────┐ ┌─────────┴───────────────────────┬─────────────────────────┐
@@ -808,7 +812,7 @@
┌─────────────────────────┐ ┌───────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐ ┌───────────────────────┐ ┌─────────────────────────┐
│ VLAN 10: Management │ │ VLAN 20: Services │ │ VLAN 30: Storage Pool │ │ VLAN 10: Management │ │ VLAN 20: Services │ │ VLAN 30: Storage Pool │
│ • Proxmox VE (8006) │ │ • Grafana (3000) │ │ • TrueNAS ZFS (SMB/NFS) │ │ • Proxmox VE (8006) │ │ • Grafana (3000) │ │ • TrueNAS ZFS (SMB/NFS) │
│ • AdGuard Home (53) │ │ • Jellyfin Media │ │ • MinIO S3 Bucket │ │ • AdGuard Home (53) │ │ • Jellyfin Media │ │ • Forgejo Git (3000) │
└─────────────────────────┘ └───────────────────────┘ └─────────────────────────┘ └─────────────────────────┘ └───────────────────────┘ └─────────────────────────┘
</div> </div>
</section> </section>
@@ -819,13 +823,11 @@
<footer class="footer-links"> <footer class="footer-links">
<a href="index.html" class="footer-link">Spec Catalog</a> <a href="index.html" class="footer-link">Spec Catalog</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="https://github.com" target="_blank" rel="noopener" class="footer-link">GitHub</a> <a href="https://git.rooks.dev" class="footer-link">Git Forge</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="mailto:river@example.com" class="footer-link">Email</a> <a href="mailto:river@rooks.dev" class="footer-link">river@rooks.dev</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="#" class="footer-link">PGP Key</a> <span style="font-size:0.78rem; color:var(--text-muted);">CLUSTER ONLINE • 48TB ZFS POOL • 10GbE SFP+ BACKBONE</span>
<span class="pipe">|</span>
<span style="font-size:0.78rem; color:var(--text-muted);">HOSTED ON SELF-HEALED K3S CLUSTER</span>
</footer> </footer>
</main> </main>
+29 -30
View File
@@ -356,40 +356,33 @@
<!-- Sidebar Navigation --> <!-- Sidebar Navigation -->
<aside class="sidebar"> <aside class="sidebar">
<div class="profile-title">[node-01]</div> <div class="profile-title">River Rooks</div>
<div class="profile-subtitle">dev-blog@system:~$</div> <div class="profile-subtitle">dev-blog@system:~$</div>
<nav> <nav>
<ul class="nav-list"> <ul class="nav-list">
<li class="nav-item"> <li class="nav-item"><a href="index.html" class="nav-link">Catalog</a></li>
<a href="homepage.html" class="nav-link active">Home</a> <li class="nav-item"><a href="homepage.html" class="nav-link active">Sample 1 (Home)</a></li>
</li> <li class="nav-item"><a href="split-panel.html" class="nav-link">Sample 2 (Split)</a></li>
<li class="nav-item"> <li class="nav-item"><a href="companion.html" class="nav-link">Sample 3 (Daemon)</a></li>
<a href="#" class="nav-link">Posts</a> <li class="nav-item"><a href="document-flow.html" class="nav-link">Sample 4 (Doc Flow)</a></li>
</li> <li class="nav-item"><a href="portfolio.html" class="nav-link">Sample 5 (Portfolio)</a></li>
<li class="nav-item"> <li class="nav-item"><a href="homelab.html" class="nav-link">Sample 6 (Homelab)</a></li>
<a href="#" class="nav-link">Projects</a> <li class="nav-item"><a href="public-services.html" class="nav-link">Sample 7 (Services)</a></li>
</li> <li class="nav-item"><a href="sample-dashboard.html" class="nav-link">Sample 8 (Dashboard)</a></li>
<li class="nav-item"> <li class="nav-item"><a href="sample-command-center.html" class="nav-link">Sample 9 (Command)</a></li>
<a href="index.html" class="nav-link">Spec Catalog</a> <li class="nav-item"><a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10 (Explorer)</a></li>
</li>
</ul> </ul>
</nav> </nav>
<!-- Keybindings Panel Widget --> <!-- Keybindings Panel Widget -->
<div class="keybindings-panel"> <div class="keybindings-panel">
<div class="keybindings-title">Keyboard Shortcuts</div> <div class="keybindings-title">Active Stack</div>
<div class="keybinding-row"> <div style="font-size: 0.75rem; color: var(--text-muted); line-height: 1.6;">
<span>Search posts</span> [#network-forensics]<br>
<kbd>Ctrl</kbd> + <kbd>K</kbd> [#docker-traefik]<br>
</div> [#arch-linux] [#neovim]<br>
<div class="keybinding-row"> [#wireguard] [#posix-sh]
<span>Go to Catalog</span>
<kbd>g</kbd> + <kbd>c</kbd>
</div>
<div class="keybinding-row">
<span>Toggle Terminal</span>
<kbd>~</kbd>
</div> </div>
</div> </div>
</aside> </aside>
@@ -410,6 +403,7 @@
<a href="#" class="tag">[#firmware]</a> <a href="#" class="tag">[#firmware]</a>
<a href="#" class="tag">[#hardware]</a> <a href="#" class="tag">[#hardware]</a>
<a href="#" class="tag">[#security]</a> <a href="#" class="tag">[#security]</a>
<a href="#" class="tag">[#bus-pirate]</a>
</div> </div>
<p> <p>
@@ -436,7 +430,7 @@ flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
echo <span class="syn-string">"Dump successful. Running md5sum..."</span> echo <span class="syn-string">"Dump successful. Running md5sum..."</span>
md5sum firmware_dump.bin md5sum firmware_dump.bin
<span class="syn-keyword">else</span> <span class="syn-keyword">else</span>
echo <span class="syn-string">"Failed to read flash memory."</span> >&2 echo <span class="syn-string">"Failed to read flash memory."</span> &gt;&amp;2
<span class="syn-keyword">exit</span> 1 <span class="syn-keyword">exit</span> 1
<span class="syn-keyword">fi</span></code></pre> <span class="syn-keyword">fi</span></code></pre>
</div> </div>
@@ -451,7 +445,7 @@ flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
<!-- Tabular Archive Index Section --> <!-- Tabular Archive Index Section -->
<section> <section>
<h2>Recent Writes & Archive</h2> <h2>Recent Writes &amp; Archive</h2>
<p style="color: var(--text-muted); font-size: 0.9rem; margin-bottom: 20px;"> <p style="color: var(--text-muted); font-size: 0.9rem; margin-bottom: 20px;">
Dense, terminal-style index of prior posts. Press <kbd>Tab</kbd> to focus and navigate rows instantly. Dense, terminal-style index of prior posts. Press <kbd>Tab</kbd> to focus and navigate rows instantly.
</p> </p>
@@ -473,21 +467,26 @@ flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
<tr onclick="location.href='#'"> <tr onclick="location.href='#'">
<td class="post-date">2026-07-10</td> <td class="post-date">2026-07-10</td>
<td><a href="#">POSIX sh vs. Bash: Portability in Modern Scripts</a></td> <td><a href="#">POSIX sh vs. Bash: Portability in Modern Scripts</a></td>
<td><span style="color: var(--accent);">[#shell]</span></td> <td><span style="color: var(--accent);">[#posix-sh]</span></td>
</tr> </tr>
<tr onclick="location.href='#'"> <tr onclick="location.href='#'">
<td class="post-date">2026-06-28</td> <td class="post-date">2026-06-28</td>
<td><a href="#">CTF Write-up: Heap Exploitation in glibc 2.35</a></td> <td><a href="#">CTF Write-up: Heap Exploitation in glibc 2.35</a></td>
<td><span style="color: var(--accent);">[#ctf]</span></td> <td><span style="color: var(--accent);">[#ctf]</span></td>
</tr> </tr>
<tr onclick="location.href='#'">
<td class="post-date">2026-06-14</td>
<td><a href="#">Zero-Trust Network Isolation with WireGuard &amp; OPNsense VLANs</a></td>
<td><span style="color: var(--accent);">[#networking]</span></td>
</tr>
</tbody> </tbody>
</table> </table>
</section> </section>
<!-- Footer --> <!-- Footer -->
<footer> <footer>
<span>© 2026 Developer Blog</span> <span>© 2026 River Rooks</span>
<span>Built with Design-Specification.md</span> <span>Aligned with Canonical-Sample-Content.md</span>
</footer> </footer>
</div> </div>
+661 -244
View File
File diff suppressed because it is too large Load Diff
+15 -4
View File
@@ -282,6 +282,11 @@
<a href="companion.html" class="nav-link">Sample 3</a> <a href="companion.html" class="nav-link">Sample 3</a>
<a href="document-flow.html" class="nav-link">Sample 4</a> <a href="document-flow.html" class="nav-link">Sample 4</a>
<a href="portfolio.html" class="nav-link active">Sample 5</a> <a href="portfolio.html" class="nav-link active">Sample 5</a>
<a href="homelab.html" class="nav-link">Sample 6</a>
<a href="public-services.html" class="nav-link">Sample 7</a>
<a href="sample-dashboard.html" class="nav-link">Sample 8</a>
<a href="sample-command-center.html" class="nav-link">Sample 9</a>
<a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10</a>
</nav> </nav>
</header> </header>
@@ -310,7 +315,7 @@
<div class="terminal-body"> <div class="terminal-body">
<div class="cmd-line"><span class="prompt">$</span> cat /var/log/status.txt</div> <div class="cmd-line"><span class="prompt">$</span> cat /var/log/status.txt</div>
<div class="cmd-output"> <div class="cmd-output">
Under construction. Full site infrastructure is currently being provisioned. Routing traffic to temporary landing page...<span class="cursor-block"></span> Provisioning 10GbE homelab cluster. Routing traffic through Traefik v3 edge proxy...<span class="cursor-block"></span>
</div> </div>
</div> </div>
</div> </div>
@@ -320,7 +325,7 @@
<section class="bio-section"> <section class="bio-section">
<h2 class="section-title">whoami</h2> <h2 class="section-title">whoami</h2>
<p class="bio-text"> <p class="bio-text">
Cybersecurity student at the University of Alabama College of Engineering, focusing on network forensics, self-hosted infrastructure, and systems architecture. Cybersecurity student at the University of Alabama College of Engineering, focusing on network forensics, self-hosted infrastructure, systems architecture, and low-level Unix tooling.
</p> </p>
</section> </section>
@@ -335,6 +340,10 @@
<span class="tag">[#wireguard]</span> <span class="tag">[#wireguard]</span>
<span class="tag">[#posix-sh]</span> <span class="tag">[#posix-sh]</span>
<span class="tag">[#python]</span> <span class="tag">[#python]</span>
<span class="tag">[#golang]</span>
<span class="tag">[#rust]</span>
<span class="tag">[#proxmox]</span>
<span class="tag">[#truenas]</span>
</div> </div>
</section> </section>
@@ -342,11 +351,13 @@
<!-- E. Footer (Contact & Links) --> <!-- E. Footer (Contact & Links) -->
<footer class="footer-links"> <footer class="footer-links">
<a href="https://git.rooks.dev" target="_blank" rel="noopener" class="footer-link">Git Forge</a>
<span class="pipe">|</span>
<a href="https://github.com" target="_blank" rel="noopener" class="footer-link">GitHub</a> <a href="https://github.com" target="_blank" rel="noopener" class="footer-link">GitHub</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="mailto:river@example.com" class="footer-link">Email</a> <a href="mailto:river@rooks.dev" class="footer-link">river@rooks.dev</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="#" class="footer-link">PGP Key</a> <a href="#" title="Fingerprint: 0x4A8E92F1C0B3D4E7" class="footer-link">PGP: 0x4A8E92F1...</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="index.html" class="footer-link">Spec Catalog</a> <a href="index.html" class="footer-link">Spec Catalog</a>
</footer> </footer>
+12 -11
View File
@@ -545,6 +545,9 @@
<a href="portfolio.html" class="nav-link">Sample 5</a> <a href="portfolio.html" class="nav-link">Sample 5</a>
<a href="homelab.html" class="nav-link">Sample 6</a> <a href="homelab.html" class="nav-link">Sample 6</a>
<a href="public-services.html" class="nav-link active">Sample 7 (Public Services)</a> <a href="public-services.html" class="nav-link active">Sample 7 (Public Services)</a>
<a href="sample-dashboard.html" class="nav-link">Sample 8</a>
<a href="sample-command-center.html" class="nav-link">Sample 9</a>
<a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10</a>
</nav> </nav>
</header> </header>
@@ -797,10 +800,10 @@
<div class="key-row"> <div class="key-row">
<div> <div>
<span class="key-label">PGP Key Fingerprint:</span><br> <span class="key-label">PGP Key ID / Fingerprint:</span><br>
<span class="key-value">3F8A B29C 7D1E 4056 9912 A8B0 C4D3 E2F1 8091 22A4</span> <span class="key-value">0x4A8E92F1C0B3D4E7 • 3F8A B29C 7D1E 4056 9912 A8B0 C4D3 E2F1 8091 22A4</span>
</div> </div>
<button class="copy-btn" onclick="navigator.clipboard.writeText('3F8AB29C7D1E40569912A8B0C4D3E2F1809122A4')">Copy Key Fingerprint</button> <button class="copy-btn" onclick="navigator.clipboard.writeText('0x4A8E92F1C0B3D4E7')">Copy Key ID</button>
</div> </div>
<div class="key-row"> <div class="key-row">
@@ -813,10 +816,10 @@
<div class="key-row"> <div class="key-row">
<div> <div>
<span class="key-label">Public SSH Key:</span><br> <span class="key-label">Public SSH Key Digest:</span><br>
<span class="key-value">ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH8q882a... river@rooks.dev</span> <span class="key-value">SHA256:7uK+N04wP5rL/9z3Q8s1vX4dF6mK2pT8yB1wN0qZ8 (river@rooks.dev)</span>
</div> </div>
<button class="copy-btn" onclick="navigator.clipboard.writeText('ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH8q882aZ9kX1m2pL3vN4qR5sT6uV7wX8yZ9river@rooks.dev')">Copy Public Key</button> <button class="copy-btn" onclick="navigator.clipboard.writeText('SHA256:7uK+N04wP5rL/9z3Q8s1vX4dF6mK2pT8yB1wN0qZ8')">Copy Digest</button>
</div> </div>
</div> </div>
@@ -828,13 +831,11 @@
<footer class="footer-links"> <footer class="footer-links">
<a href="index.html" class="footer-link">Spec Catalog</a> <a href="index.html" class="footer-link">Spec Catalog</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="https://github.com" target="_blank" rel="noopener" class="footer-link">GitHub</a> <a href="https://git.rooks.dev" class="footer-link">Git Forge</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="mailto:river@example.com" class="footer-link">Email Contact</a> <a href="mailto:river@rooks.dev" class="footer-link">river@rooks.dev</a>
<span class="pipe">|</span> <span class="pipe">|</span>
<a href="#" class="footer-link">Download PGP Key</a> <span style="font-size:0.78rem; color:var(--text-muted);">PUBLIC SERVICES PORTAL • RIVER ROOKS</span>
<span class="pipe">|</span>
<span style="font-size:0.78rem; color:var(--text-muted);">PUBLIC SERVICES PORTAL v2.4</span>
</footer> </footer>
</main> </main>
+85 -49
View File
@@ -290,7 +290,7 @@
<header class="app-header"> <header class="app-header">
<div class="brand-title"> <div class="brand-title">
<span class="status-dot"></span> <span class="status-dot"></span>
RIVER ROOKS // COMMAND CENTER <a href="index.html" style="color: var(--text-primary); text-decoration: none;">RIVER ROOKS // COMMAND CENTER</a>
</div> </div>
<nav class="nav-tabs"> <nav class="nav-tabs">
@@ -308,56 +308,80 @@
<div class="panel"> <div class="panel">
<div class="panel-header"> <div class="panel-header">
<span>/etc/services.d/manifest.json</span> <span>/etc/services.d/manifest.json</span>
<span>4 SERVICES OPERATIONAL</span> <span>6 CANONICAL SERVICES</span>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<div class="services-grid"> <div class="services-grid">
<div class="service-box"> <div class="service-box">
<div class="service-title"> <div class="service-title">
<a href="https://grafana.local" target="_blank">grafana.homelab</a> <a href="https://proxy.rooks.dev" target="_blank">Traefik Proxy (v3.1)</a>
<span class="badge-status badge-online">ONLINE</span> <span class="badge-status badge-online">ONLINE</span>
</div> </div>
<p class="service-desc">Real-time metrics, Prometheus scraping, &amp; homelab telemetry dashboards.</p> <p class="service-desc">Edge HTTP reverse proxy with dynamic ACME Let's Encrypt TLS wildcard certificates.</p>
<div class="service-stats"> <div class="service-stats">
<span>PING: 4ms</span> <span>PORT: 443/tcp</span>
<span>TRAEFIK HTTPS</span> <span>#core</span>
</div> </div>
</div> </div>
<div class="service-box"> <div class="service-box">
<div class="service-title"> <div class="service-title">
<a href="https://vault.local" target="_blank">vault.homelab</a> <a href="https://nas.rooks.dev" target="_blank">TrueNAS SCALE</a>
<span class="badge-status badge-online">ONLINE</span> <span class="badge-status badge-online">ONLINE</span>
</div> </div>
<p class="service-desc">HashiCorp Vault secret storage, certificate authority, &amp; mTLS renewal.</p> <p class="service-desc">Primary storage pool managing 48TB ZFS RaidZ2 array with daily scrub jobs.</p>
<div class="service-stats"> <div class="service-stats">
<span>PING: 2ms</span> <span>NFS / SMB</span>
<span>SEALED: FALSE</span> <span>#storage</span>
</div> </div>
</div> </div>
<div class="service-box"> <div class="service-box">
<div class="service-title"> <div class="service-title">
<a href="https://nextcloud.local" target="_blank">cloud.homelab</a> <a href="https://vault.rooks.dev" target="_blank">Vaultwarden Secrets</a>
<span class="badge-status badge-online">ONLINE</span> <span class="badge-status badge-online">E2EE</span>
</div> </div>
<p class="service-desc">Encrypted private cloud file storage &amp; automated system backup target.</p> <p class="service-desc">Rust implementation of Bitwarden API hosting credentials, SSH keys, &amp; 2FA.</p>
<div class="service-stats"> <div class="service-stats">
<span>PING: 6ms</span> <span>2FA / AUTH</span>
<span>STORAGE: 1.2TB</span> <span>#secrets</span>
</div> </div>
</div> </div>
<div class="service-box"> <div class="service-box">
<div class="service-title"> <div class="service-title">
<a href="https://wireguard.local" target="_blank">wireguard.homelab</a> <a href="https://git.rooks.dev" target="_blank">Forgejo Git Forge</a>
<span class="badge-status badge-internal">INTERNAL</span> <span class="badge-status badge-online">PUBLIC</span>
</div> </div>
<p class="service-desc">WireGuard mesh VPN gateway connecting cloud VPS instances to homelab node.</p> <p class="service-desc">Self-hosted Git platform for dotfiles, playbooks, and CTF binary writeups.</p>
<div class="service-stats"> <div class="service-stats">
<span>PING: 12ms</span> <span>PORT: 3000</span>
<span>PEERS: 6 ACTIVE</span> <span>#dev-git</span>
</div>
</div>
<div class="service-box">
<div class="service-title">
<a href="https://chef.rooks.dev" target="_blank">CyberChef Workbench</a>
<span class="badge-status badge-online">PUBLIC</span>
</div>
<p class="service-desc">Hex decoding, Base64 operations, regex extraction, &amp; payload analysis.</p>
<div class="service-stats">
<span>OPEN WEB</span>
<span>#security-tool</span>
</div>
</div>
<div class="service-box">
<div class="service-title">
<a href="https://pve.rooks.dev" target="_blank">Proxmox VE (v8.2)</a>
<span class="badge-status badge-online">ONLINE</span>
</div>
<p class="service-desc">Hypervisor cluster hosting Debian LXC containers &amp; KVM virtual machines.</p>
<div class="service-stats">
<span>PORT: 8006</span>
<span>#compute</span>
</div> </div>
</div> </div>
@@ -371,7 +395,7 @@
<div class="panel"> <div class="panel">
<div class="panel-header"> <div class="panel-header">
<span>/var/log/articles.index</span> <span>/var/log/articles.index</span>
<span>POST COUNT: 4</span> <span>POST COUNT: 5</span>
</div> </div>
<div class="panel-body" style="padding: 0;"> <div class="panel-body" style="padding: 0;">
<table class="blog-table"> <table class="blog-table">
@@ -385,28 +409,34 @@
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>2026-08-02</td> <td>2026-07-20</td>
<td><a href="#" class="post-link">Hardening Traefik Ingress with HashiCorp Vault mTLS</a></td> <td><a href="#" class="post-link">Reverse Engineering IoT Firmware: SPI Flash Extraction</a></td>
<td><span class="tag-badge">[#homelab] [#traefik]</span></td> <td><span class="tag-badge">[#firmware] [#hardware]</span></td>
<td>8 min</td> <td>8 min</td>
</tr> </tr>
<tr> <tr>
<td>2026-07-18</td> <td>2026-07-15</td>
<td><a href="#" class="post-link">DEFCON CTF Qualifier: Memory Corruption &amp; Heap Exploitation</a></td> <td><a href="#" class="post-link">Building a High-Availability Traefik Router with Docker Compose</a></td>
<td><span class="tag-badge">[#homelab] [#traefik]</span></td>
<td>12 min</td>
</tr>
<tr>
<td>2026-07-10</td>
<td><a href="#" class="post-link">POSIX sh vs. Bash: Portability in Modern Scripts</a></td>
<td><span class="tag-badge">[#posix-sh] [#unix]</span></td>
<td>6 min</td>
</tr>
<tr>
<td>2026-06-28</td>
<td><a href="#" class="post-link">CTF Write-up: Heap Exploitation in glibc 2.35</a></td>
<td><span class="tag-badge">[#ctf] [#binary]</span></td> <td><span class="tag-badge">[#ctf] [#binary]</span></td>
<td>14 min</td> <td>15 min</td>
</tr> </tr>
<tr> <tr>
<td>2026-06-29</td> <td>2026-06-14</td>
<td><a href="#" class="post-link">Custom Linux Kernel Compilation for BPF Network Tracing</a></td> <td><a href="#" class="post-link">Zero-Trust Network Isolation with WireGuard &amp; OPNsense VLANs</a></td>
<td><span class="tag-badge">[#linux] [#ebpf]</span></td> <td><span class="tag-badge">[#networking] [#wireguard]</span></td>
<td>11 min</td> <td>10 min</td>
</tr>
<tr>
<td>2026-05-14</td>
<td><a href="#" class="post-link">Minimalist Dotfiles &amp; Hyprland Keybindings Optimization</a></td>
<td><span class="tag-badge">[#hyprland] [#dots]</span></td>
<td>5 min</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -424,25 +454,31 @@
<div class="panel-body"> <div class="panel-body">
<div class="conf-block"> <div class="conf-block">
<span class="conf-comment"># Identity &amp; System Purpose</span><br> <span class="conf-comment"># Identity &amp; Systems Architecture</span><br>
<span class="conf-key">AUTHOR</span> = <span class="conf-val">"River Rooks"</span><br> <span class="conf-key">AUTHOR</span> = <span class="conf-val">"River Rooks"</span><br>
<span class="conf-key">ROLE</span> = <span class="conf-val">"Systems Architect &amp; Cybersecurity Researcher"</span><br> <span class="conf-key">ROLE</span> = <span class="conf-val">"Systems Architecture &amp; Cybersecurity"</span><br>
<span class="conf-key">AFFILIATION</span> = <span class="conf-val">"University of Alabama College of Engineering"</span><br><br> <span class="conf-key">AFFILIATION</span> = <span class="conf-val">"University of Alabama College of Engineering"</span><br>
<span class="conf-key">PGP_KEY</span> = <span class="conf-val">"0x4A8E92F1C0B3D4E7"</span><br><br>
<span class="conf-comment"># Active Skillset Matrix</span><br> <span class="conf-comment"># Active Skillset Matrix</span><br>
<span class="conf-key">DOMAINS</span> = [<span class="conf-val">"Network Forensics"</span>, <span class="conf-val">"Self-Hosted Infrastructure"</span>, <span class="conf-val">"Linux Kernel Hardening"</span>]<br> <span class="conf-key">DOMAINS</span> = [<span class="conf-val">"Network Forensics"</span>, <span class="conf-val">"Self-Hosted Infrastructure"</span>, <span class="conf-val">"Bare-Metal Virtualization"</span>]<br>
<span class="conf-key">LANGUAGES</span> = [<span class="conf-val">"POSIX sh"</span>, <span class="conf-val">"Python"</span>, <span class="conf-val">"C"</span>, <span class="conf-val">"Lua"</span>]<br> <span class="conf-key">LANGUAGES</span> = [<span class="conf-val">"POSIX sh"</span>, <span class="conf-val">"Python"</span>, <span class="conf-val">"Go"</span>, <span class="conf-val">"Lua"</span>, <span class="conf-val">"ARM Assembly"</span>]<br>
<span class="conf-key">TOOLS</span> = [<span class="conf-val">"Docker"</span>, <span class="conf-val">"Traefik"</span>, <span class="conf-val">"WireGuard"</span>, <span class="conf-val">"Neovim"</span>, <span class="conf-val">"Arch Linux"</span>] <span class="conf-key">STACK</span> = [<span class="conf-val">"Traefik v3"</span>, <span class="conf-val">"WireGuard"</span>, <span class="conf-val">"Proxmox VE"</span>, <span class="conf-val">"TrueNAS"</span>, <span class="conf-val">"Neovim"</span>]
</div> </div>
<p style="font-size: 0.92rem; margin-bottom: 16px;"> <h3 style="font-family: 'IBM Plex Mono', monospace; font-size: 0.95rem; margin-bottom: 12px;">System Modules:</h3>
Focused on building resilient, zero-trust network architectures and low-noise self-hosted environments. <ul style="font-size: 0.88rem; color: var(--text-muted); line-height: 1.8; margin-bottom: 20px; list-style-position: inside;">
Proven CTF participant and open-source dotfiles maintainer. <li><strong style="color: var(--accent-cyan);">/dev/posix-shell-parser</strong> (v1.2.0 • Lua) — Zero-allocation AST lexer</li>
</p> <li><strong style="color: var(--accent-cyan);">/dev/wireguard-mesh</strong> (v0.8.4 • Python) — Full-mesh overlay provisioner</li>
<li><strong style="color: var(--accent-cyan);">/dev/zero-alloc-logger</strong> (v2.1.1 • Go) — High-throughput sync.Pool logger</li>
<li><strong style="color: var(--accent-cyan);">/dev/kernel-bootstrap</strong> (v0.1.0 • ARM ASM) — Bare-metal boot setup</li>
<li><strong style="color: var(--accent-cyan);">/dev/ddns-daemon</strong> (v1.0.2 • Docker API) — Dynamic Cloudflare DNS sync</li>
</ul>
<div style="display: flex; gap: 12px;"> <div style="display: flex; gap: 12px;">
<a href="#" class="btn-action">Download Resume (.PDF)</a> <a href="mailto:river@rooks.dev" class="btn-action">Email: river@rooks.dev</a>
<a href="#" class="btn-action">Fetch PGP Key</a> <a href="https://git.rooks.dev" class="btn-action">Git Repositories ↗</a>
<a href="index.html" class="btn-action">Spec Catalog ↗</a>
</div> </div>
</div> </div>
+85 -45
View File
@@ -268,13 +268,25 @@
<!-- Top Status Navigation --> <!-- Top Status Navigation -->
<header class="top-bar"> <header class="top-bar">
<div> <div style="display: flex; align-items: center; gap: 12px;">
<span class="mode-tag">NORMAL</span> <span class="mode-tag">NORMAL</span>
<span class="filepath">/home/river/dashboard.workspace</span> <span class="filepath">/home/river/dashboard.workspace</span>
<span style="color: var(--border-color);">|</span>
<nav style="display: flex; gap: 8px; font-size: 0.78rem;">
<a href="index.html" style="color: var(--text-primary); text-decoration: none;">Catalog</a>
<span style="color: var(--border-color);">/</span>
<a href="homelab.html" style="color: var(--text-muted); text-decoration: none;">Homelab</a>
<span style="color: var(--border-color);">/</span>
<a href="public-services.html" style="color: var(--text-muted); text-decoration: none;">Services</a>
<span style="color: var(--border-color);">/</span>
<a href="sample-command-center.html" style="color: var(--text-muted); text-decoration: none;">Command</a>
<span style="color: var(--border-color);">/</span>
<a href="sample-dual-pane-explorer.html" style="color: var(--text-muted); text-decoration: none;">Explorer</a>
</nav>
</div> </div>
<div class="status-group"> <div class="status-group">
<span><span class="status-dot"></span> TRAEFIK: MESH_OK</span> <span><span class="status-dot"></span> TRAEFIK: V3.1 OK</span>
<span>SYS_LOAD: 0.14</span> <span>CLUSTER: 10GbE SFP+</span>
<span>UPTIME: 99.98%</span> <span>UPTIME: 99.98%</span>
</div> </div>
</header> </header>
@@ -282,59 +294,71 @@
<!-- Main 3-Tile Dashboard --> <!-- Main 3-Tile Dashboard -->
<main class="dashboard-grid"> <main class="dashboard-grid">
<!-- Left Tile: Homelab Services Directory --> <!-- Left Tile: Homelab & Public Services Directory -->
<section class="tile"> <section class="tile">
<div class="tile-header"> <div class="tile-header">
<span>/etc/services</span> <span>/etc/services</span>
<span>[4 ACTIVE]</span> <span>[CANONICAL SERVICES]</span>
</div> </div>
<div class="tile-body"> <div class="tile-body">
<div class="service-card"> <div class="service-card">
<div class="service-head"> <div class="service-head">
<a href="https://grafana.local" target="_blank">grafana.homelab</a> <a href="https://proxy.rooks.dev" target="_blank">Traefik Proxy (v3.1)</a>
<span class="badge-online">[ONLINE]</span> <span class="badge-online">[ONLINE]</span>
</div> </div>
<p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">Telemetry & Prometheus monitoring dashboards.</p> <p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">Edge HTTP reverse proxy with dynamic ACME wildcard TLS.</p>
<div class="service-meta"> <div class="service-meta">
<span>PORT: :3000</span> <span>PORT: 443/tcp</span>
<span>HTTPS</span> <span>#core</span>
</div> </div>
</div> </div>
<div class="service-card"> <div class="service-card">
<div class="service-head"> <div class="service-head">
<a href="https://vault.local" target="_blank">vault.homelab</a> <a href="https://nas.rooks.dev" target="_blank">TrueNAS SCALE</a>
<span class="badge-online">[ONLINE]</span> <span class="badge-online">[ONLINE]</span>
</div> </div>
<p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">HashiCorp Vault secret storage & certificates.</p> <p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">Primary storage pool managing 48TB ZFS RaidZ2 array.</p>
<div class="service-meta"> <div class="service-meta">
<span>PORT: :8200</span> <span>NFS / SMB</span>
<span>mTLS</span> <span>#storage</span>
</div> </div>
</div> </div>
<div class="service-card"> <div class="service-card">
<div class="service-head"> <div class="service-head">
<a href="https://nextcloud.local" target="_blank">cloud.homelab</a> <a href="https://vault.rooks.dev" target="_blank">Vaultwarden Secrets</a>
<span class="badge-online">[ONLINE]</span> <span class="badge-online">[E2EE]</span>
</div> </div>
<p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">Private encrypted document & data storage.</p> <p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">Lightweight Rust Bitwarden API hosting credentials &amp; 2FA.</p>
<div class="service-meta"> <div class="service-meta">
<span>PORT: :443</span> <span>2FA / AUTH</span>
<span>HTTPS</span> <span>#secrets</span>
</div> </div>
</div> </div>
<div class="service-card"> <div class="service-card">
<div class="service-head"> <div class="service-head">
<a href="https://wireguard.local" target="_blank">vpn.homelab</a> <a href="https://git.rooks.dev" target="_blank">Forgejo Git Forge</a>
<span class="badge-internal">[INTERNAL]</span> <span class="badge-online">[PUBLIC]</span>
</div> </div>
<p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">WireGuard mesh overlay network ingress.</p> <p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">Self-hosted Git platform for dotfiles, playbooks &amp; CTF code.</p>
<div class="service-meta"> <div class="service-meta">
<span>UDP: :51820</span> <span>PORT: 3000</span>
<span>VPN</span> <span>#dev-git</span>
</div>
</div>
<div class="service-card">
<div class="service-head">
<a href="https://chef.rooks.dev" target="_blank">CyberChef Workbench</a>
<span class="badge-online">[PUBLIC]</span>
</div>
<p style="font-size: 0.8rem; color: var(--text-muted); margin-bottom: 6px;">Hex decoding, Base64, hashing &amp; CTF payload analysis.</p>
<div class="service-meta">
<span>OPEN WEB</span>
<span>#security-tool</span>
</div> </div>
</div> </div>
@@ -349,11 +373,11 @@
</div> </div>
<div class="tile-body"> <div class="tile-body">
<h1 class="hero-title">River Rooks</h1> <h1 class="hero-title">River Rooks</h1>
<div class="subtitle">SYSTEMS ARCHITECT &amp; CYBERSECURITY RESEARCHER</div> <div class="subtitle">SYSTEMS ARCHITECTURE &amp; CYBERSECURITY</div>
<p class="bio-prose"> <p class="bio-prose">
Computer Science &amp; Cybersecurity student at the University of Alabama College of Engineering. Cybersecurity student at the University of Alabama College of Engineering.
Specializing in low-level network forensics, self-hosted infrastructure resilience, and hardened Linux kernel configurations. Focusing on network forensics, self-hosted infrastructure resilience, bare-metal virtualization, and low-level Unix tooling.
</p> </p>
<h2 class="section-title">active_stack</h2> <h2 class="section-title">active_stack</h2>
@@ -365,22 +389,32 @@
<span>[#wireguard]</span> <span>[#wireguard]</span>
<span>[#posix-sh]</span> <span>[#posix-sh]</span>
<span>[#python]</span> <span>[#python]</span>
<span>[#hashicorp-vault]</span> <span>[#golang]</span>
<span>[#rust]</span>
<span>[#proxmox]</span>
<span>[#truenas]</span>
</div> </div>
<h2 class="section-title">featured_projects</h2> <h2 class="section-title">featured_modules</h2>
<div class="project-card"> <div class="project-card">
<div class="project-title">mesh-topology-builder</div> <div class="project-title">/dev/posix-shell-parser <span style="font-size: 0.75rem; color: var(--text-muted);">[v1.2.0 • #lua]</span></div>
<p style="font-size: 0.85rem; color: var(--text-primary);"> <p style="font-size: 0.85rem; color: var(--text-primary);">
Automated WireGuard mesh network provisioner written in POSIX shell and Python. Generates deterministic keypairs and Traefik routing rules. Zero-allocation Lexer and AST parser written in Lua for parsing POSIX shell scripts inside modal terminal buffers.
</p> </p>
</div> </div>
<div class="project-card"> <div class="project-card">
<div class="project-title">pcap-forensics-parser</div> <div class="project-title">/dev/wireguard-mesh <span style="font-size: 0.75rem; color: var(--text-muted);">[v0.8.4 • #wireguard]</span></div>
<p style="font-size: 0.85rem; color: var(--text-primary);"> <p style="font-size: 0.85rem; color: var(--text-primary);">
High-throughput PCAP packet analyzer built for CTF competitions to detect anomalous TCP handshake flags and hidden ICMP payloads. Automated configuration generator computing key matrices and provisioning full-mesh WireGuard private overlays across cloud and homelab nodes.
</p>
</div>
<div class="project-card">
<div class="project-title">/dev/zero-alloc-logger <span style="font-size: 0.75rem; color: var(--text-muted);">[v2.1.1 • #golang]</span></div>
<p style="font-size: 0.85rem; color: var(--text-primary);">
High-throughput structured JSON logger utilizing sync.Pool byte buffers to eliminate heap allocation GC overhead (>500k ops/sec).
</p> </p>
</div> </div>
@@ -396,27 +430,33 @@
<div class="tile-body"> <div class="tile-body">
<div class="article-item"> <div class="article-item">
<div class="article-date">2026-08-02 | #HOMELAB</div> <div class="article-date">2026-07-20 | #FIRMWARE</div>
<a href="#" class="article-link">Hardening Traefik Ingress with HashiCorp Vault mTLS</a> <a href="#" class="article-link">Reverse Engineering IoT Firmware: SPI Flash Extraction</a>
<p style="font-size: 0.78rem; color: var(--text-muted);">Zero-trust certificate auto-renewal pipeline configuration.</p> <p style="font-size: 0.78rem; color: var(--text-muted);">Dumping SPI flash chips via Bus Pirate &amp; flashrom to bypass locked bootloaders.</p>
</div> </div>
<div class="article-item"> <div class="article-item">
<div class="article-date">2026-07-18 | #CTF</div> <div class="article-date">2026-07-15 | #HOMELAB</div>
<a href="#" class="article-link">DEFCON CTF Qualifier: Memory Corruption &amp; Heap Exploitation</a> <a href="#" class="article-link">Building a High-Availability Traefik Router with Docker Compose</a>
<p style="font-size: 0.78rem; color: var(--text-muted);">Deconstructing glibc malloc chunk metadata manipulation.</p> <p style="font-size: 0.78rem; color: var(--text-muted);">Dynamic Docker provider discovery &amp; Let's Encrypt automated TLS wildcard routing.</p>
</div> </div>
<div class="article-item"> <div class="article-item">
<div class="article-date">2026-06-29 | #LINUX</div> <div class="article-date">2026-07-10 | #POSIX-SH</div>
<a href="#" class="article-link">Custom Linux Kernel Compilation for BPF Network Tracing</a> <a href="#" class="article-link">POSIX sh vs. Bash: Portability in Modern Scripts</a>
<p style="font-size: 0.78rem; color: var(--text-muted);">Configuring eBPF probe hooks for real-time socket inspection.</p> <p style="font-size: 0.78rem; color: var(--text-muted);">Eliminating bashisms and adhering to IEEE Std 1003.1 for high-speed bootstrapping.</p>
</div> </div>
<div class="article-item"> <div class="article-item">
<div class="article-date">2026-05-14 | #HYPRLAND</div> <div class="article-date">2026-06-28 | #CTF</div>
<a href="#" class="article-link">Minimalist Dotfiles &amp; Hyprland Keybindings Optimization</a> <a href="#" class="article-link">CTF Write-up: Heap Exploitation in glibc 2.35</a>
<p style="font-size: 0.78rem; color: var(--text-muted);">Ergonomic modal editing &amp; window tiling configuration setup.</p> <p style="font-size: 0.78rem; color: var(--text-muted);">Tcache safe-linking bypass and House of Apple file structure hijacking primitives.</p>
</div>
<div class="article-item">
<div class="article-date">2026-06-14 | #NETWORKING</div>
<a href="#" class="article-link">Zero-Trust Network Isolation with WireGuard &amp; OPNsense VLANs</a>
<p style="font-size: 0.78rem; color: var(--text-muted);">Segregating untrusted IoT devices, homelab servers, and management networks.</p>
</div> </div>
</div> </div>
@@ -427,7 +467,7 @@
<!-- Interactive Terminal Footer Bar --> <!-- Interactive Terminal Footer Bar -->
<footer class="cmd-footer"> <footer class="cmd-footer">
<span class="prompt-symbol">$</span> <span class="prompt-symbol">$</span>
<input type="text" class="cmd-input" placeholder="Type :help, :open <service>, or press Ctrl+K for commands..." readonly> <input type="text" class="cmd-input" placeholder="River Rooks Workspace • Type :help or click links to navigate..." readonly>
</footer> </footer>
</body> </body>
+148 -68
View File
@@ -207,12 +207,24 @@
<!-- Top Breadcrumbs Bar --> <!-- Top Breadcrumbs Bar -->
<header class="top-nav"> <header class="top-nav">
<div> <div style="display: flex; align-items: center; gap: 12px;">
<span class="status-dot"></span> <span class="status-dot"></span>
<span>RIVER ROOKS // TREE EXPLORER</span> <span style="font-weight: 700;">RIVER ROOKS // TREE EXPLORER</span>
<span style="color: var(--border-color);">|</span>
<nav style="display: flex; gap: 8px; font-size: 0.78rem;">
<a href="index.html" style="color: var(--text-primary); text-decoration: none;">Catalog</a>
<span style="color: var(--border-color);">/</span>
<a href="homepage.html" style="color: var(--text-muted); text-decoration: none;">Sample 1</a>
<span style="color: var(--border-color);">/</span>
<a href="homelab.html" style="color: var(--text-muted); text-decoration: none;">Homelab</a>
<span style="color: var(--border-color);">/</span>
<a href="public-services.html" style="color: var(--text-muted); text-decoration: none;">Services</a>
<span style="color: var(--border-color);">/</span>
<a href="sample-dashboard.html" style="color: var(--text-muted); text-decoration: none;">Dashboard</a>
</nav>
</div> </div>
<div> <div>
<span>POSITION: /home/river/services/grafana.md</span> <span style="color: var(--text-muted);">HOST: pve-node02.lan [10GbE]</span>
</div> </div>
</header> </header>
@@ -225,13 +237,22 @@
<div class="tree-view"> <div class="tree-view">
<div class="tree-folder">▾ /services/</div> <div class="tree-folder">▾ /services/</div>
<div class="tree-item active" onclick="selectItem(this, 'grafana')">grafana.md <span>[SVC]</span></div> <div class="tree-item active" onclick="selectItem(this, 'traefik')">traefik.md <span>[SVC]</span></div>
<div class="tree-item" onclick="selectItem(this, 'vault')">vault.md <span>[SVC]</span></div> <div class="tree-item" onclick="selectItem(this, 'truenas')">truenas.md <span>[SVC]</span></div>
<div class="tree-item" onclick="selectItem(this, 'wireguard')">wireguard.md <span>[SVC]</span></div> <div class="tree-item" onclick="selectItem(this, 'vaultwarden')">vaultwarden.md <span>[SVC]</span></div>
<div class="tree-item" onclick="selectItem(this, 'forgejo')">forgejo.md <span>[SVC]</span></div>
<div class="tree-item" onclick="selectItem(this, 'cyberchef')">cyberchef.md <span>[SVC]</span></div>
<div class="tree-folder">▾ /notes/</div> <div class="tree-folder">▾ /notes/</div>
<div class="tree-item" onclick="selectItem(this, 'traefik-note')">traefik-mtls.md <span>[BLOG]</span></div> <div class="tree-item" onclick="selectItem(this, 'spi-flash')">spi-flash.md <span>[BLOG]</span></div>
<div class="tree-item" onclick="selectItem(this, 'ctf-note')">defcon-ctf.md <span>[BLOG]</span></div> <div class="tree-item" onclick="selectItem(this, 'ha-traefik')">ha-traefik.md <span>[BLOG]</span></div>
<div class="tree-item" onclick="selectItem(this, 'posix-sh')">posix-sh.md <span>[BLOG]</span></div>
<div class="tree-item" onclick="selectItem(this, 'ctf-heap')">ctf-heap.md <span>[BLOG]</span></div>
<div class="tree-folder">▾ /modules/</div>
<div class="tree-item" onclick="selectItem(this, 'shell-parser')">shell-parser.lua <span>[DEV]</span></div>
<div class="tree-item" onclick="selectItem(this, 'mesh-builder')">wireguard-mesh.py <span>[DEV]</span></div>
<div class="tree-item" onclick="selectItem(this, 'zero-logger')">zero-logger.go <span>[DEV]</span></div>
<div class="tree-folder">▾ /resume/</div> <div class="tree-folder">▾ /resume/</div>
<div class="tree-item" onclick="selectItem(this, 'whoami')">whoami.md <span>[CV]</span></div> <div class="tree-item" onclick="selectItem(this, 'whoami')">whoami.md <span>[CV]</span></div>
@@ -253,31 +274,34 @@
<main class="main-pane"> <main class="main-pane">
<div class="doc-container" id="doc-view"> <div class="doc-container" id="doc-view">
<!-- Default Content: Grafana Service --> <!-- Default Content: Traefik Proxy -->
<div class="doc-path">file:///home/river/services/grafana.md</div> <div class="doc-path">file:///home/river/services/traefik.md</div>
<h1 class="doc-title">Service: grafana.homelab</h1> <h1 class="doc-title">Service: Traefik Proxy (v3.1)</h1>
<p> <p>
Primary telemetry and Prometheus monitoring dashboard. Aggregates host node resource usage, Docker container stats, and Traefik router throughput. Edge HTTP reverse proxy and load balancer with dynamic Docker provider discovery and ACME Let's Encrypt TLS wildcard certificate management.
</p> </p>
<div class="code-block"> <div class="code-block">
<div class="code-header">docker-compose.yml</div> <div class="code-header">traefik.yml</div>
<div class="code-content"> <div class="code-content">
<span style="color: var(--accent-cyan);">services:</span> entryPoints:
<span style="color: var(--accent-cyan);">grafana:</span> web:
image: grafana/grafana-oss:latest address: ":80"
container_name: homelab_grafana websecure:
ports: address: ":443"
- "3000:3000" certificatesResolvers:
restart: unless-stopped cloudflare:
acme:
dnsChallenge:
provider: cloudflare
</div> </div>
</div> </div>
<div class="tag-cluster"> <div class="tag-cluster">
<span>[#homelab]</span> <span>[#core]</span>
<span>[#prometheus]</span> <span>[#docker-traefik]</span>
<span>[#telemetry]</span> <span>[PORT: 443/tcp]</span>
<span>[STATUS: ONLINE]</span> <span>[STATUS: ONLINE]</span>
</div> </div>
@@ -289,79 +313,135 @@
<!-- Bottom Status Bar --> <!-- Bottom Status Bar -->
<footer class="status-bar"> <footer class="status-bar">
<div>UTF-8 | LF | POSIX Shell</div> <div>UTF-8 | LF | POSIX Shell</div>
<div>Use Arrow Keys / Mouse to inspect workspace items</div> <div>River Rooks • Canonical Content Dataset Compliant</div>
</footer> </footer>
<script> <script>
const docs = { const docs = {
'grafana': ` 'traefik': `
<div class="doc-path">file:///home/river/services/grafana.md</div> <div class="doc-path">file:///home/river/services/traefik.md</div>
<h1 class="doc-title">Service: grafana.homelab</h1> <h1 class="doc-title">Service: Traefik Proxy (v3.1)</h1>
<p>Primary telemetry and Prometheus monitoring dashboard. Aggregates host node resource usage, Docker container stats, and Traefik router throughput.</p> <p>Edge HTTP reverse proxy and load balancer with dynamic Docker provider discovery and ACME Let's Encrypt TLS wildcard certificate management.</p>
<div class="code-block"> <div class="code-block">
<div class="code-header">docker-compose.yml</div> <div class="code-header">traefik.yml</div>
<div class="code-content"> <div class="code-content">
<span style="color: var(--accent-cyan);">services:</span> entryPoints:
<span style="color: var(--accent-cyan);">grafana:</span> web:
image: grafana/grafana-oss:latest address: ":80"
container_name: homelab_grafana websecure:
ports: address: ":443"
- "3000:3000" certificatesResolvers:
restart: unless-stopped cloudflare:
acme:
dnsChallenge:
provider: cloudflare
</div> </div>
</div> </div>
<div class="tag-cluster"><span>[#homelab]</span><span>[#prometheus]</span><span>[#telemetry]</span><span>[STATUS: ONLINE]</span></div> <div class="tag-cluster"><span>[#core]</span><span>[#docker-traefik]</span><span>[PORT: 443/tcp]</span><span>[STATUS: ONLINE]</span></div>
`, `,
'vault': ` 'truenas': `
<div class="doc-path">file:///home/river/services/vault.md</div> <div class="doc-path">file:///home/river/services/truenas.md</div>
<h1 class="doc-title">Service: vault.homelab</h1> <h1 class="doc-title">Service: TrueNAS SCALE</h1>
<p>HashiCorp Vault cluster managing secrets, SSH keys, internal PKI certificates, and mTLS auto-renewal for homelab nodes.</p> <p>Primary storage pool managing 48TB ZFS RaidZ2 array across 6x 16TB enterprise SAS drives with daily snapshots and NFS/SMB exports.</p>
<div class="tag-cluster"><span>[#storage]</span><span>[#zfs]</span><span>[PORT: NFS / SMB]</span><span>[STATUS: ONLINE]</span></div>
`,
'vaultwarden': `
<div class="doc-path">file:///home/river/services/vaultwarden.md</div>
<h1 class="doc-title">Service: Vaultwarden Secrets</h1>
<p>Lightweight Rust implementation of the Bitwarden API hosting encrypted credentials, SSH keys, and TOTP authentication tokens.</p>
<div class="tag-cluster"><span>[#secrets]</span><span>[#security]</span><span>[PORT: 443/tcp]</span><span>[STATUS: 2FA/AUTH]</span></div>
`,
'forgejo': `
<div class="doc-path">file:///home/river/services/forgejo.md</div>
<h1 class="doc-title">Service: Forgejo Git Forge</h1>
<p>Self-hosted Git forge hosting homelab infrastructure-as-code repos, Ansible playbooks, dotfiles, and CTF binary writeup scripts.</p>
<div class="tag-cluster"><span>[#dev-git]</span><span>[#git]</span><span>[PORT: 3000/tcp]</span><span>[STATUS: PUBLIC]</span></div>
`,
'cyberchef': `
<div class="doc-path">file:///home/river/services/cyberchef.md</div>
<h1 class="doc-title">Service: CyberChef Workbench</h1>
<p>Web-based data transformation Swiss Army knife for hex decoding, Base64 operations, regex extraction, and CTF payload analysis.</p>
<div class="tag-cluster"><span>[#security-tool]</span><span>[#crypto]</span><span>[STATUS: PUBLIC]</span></div>
`,
'spi-flash': `
<div class="doc-path">file:///home/river/notes/iot-firmware-spi-extraction.md</div>
<h1 class="doc-title">Reverse Engineering IoT Firmware: SPI Flash Extraction</h1>
<p>Physical hardware-level dumping of SPI flash memory chips using Bus Pirate and flashrom to bypass locked bootloaders.</p>
<div class="code-block"> <div class="code-block">
<div class="code-header">vault-config.hcl</div> <div class="code-header">extract_firmware.sh</div>
<div class="code-content"> <div class="code-content">
storage "file" { path = "/vault/file" } flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
listener "tcp" { address = "0.0.0.0:8200" tls_disable = 0 } md5sum firmware_dump.bin
ui = true
</div> </div>
</div> </div>
<div class="tag-cluster"><span>[#vault]</span><span>[#security]</span><span>[#mtls]</span><span>[STATUS: ONLINE]</span></div> <div class="tag-cluster"><span>[#firmware]</span><span>[#hardware]</span><span>[#security]</span><span>[DATE: 2026-07-20]</span></div>
`, `,
'wireguard': ` 'ha-traefik': `
<div class="doc-path">file:///home/river/services/wireguard.md</div> <div class="doc-path">file:///home/river/notes/ha-traefik-docker.md</div>
<h1 class="doc-title">Service: wireguard.homelab</h1> <h1 class="doc-title">Building a High-Availability Traefik Router</h1>
<p>Encrypted WireGuard mesh network ingress connecting offsite cloud VPS nodes directly to the internal homelab network.</p> <p>Architecting automated TLS wildcard certificate propagation and dynamic Docker container discovery failover routing.</p>
<div class="tag-cluster"><span>[#networking]</span><span>[#wireguard]</span><span>[#vpn]</span><span>[STATUS: INTERNAL]</span></div> <div class="tag-cluster"><span>[#homelab]</span><span>[#docker-traefik]</span><span>[DATE: 2026-07-15]</span></div>
`, `,
'traefik-note': ` 'posix-sh': `
<div class="doc-path">file:///home/river/notes/traefik-mtls.md</div> <div class="doc-path">file:///home/river/notes/posix-sh-vs-bash.md</div>
<h1 class="doc-title">Hardening Traefik Ingress with HashiCorp Vault mTLS</h1> <h1 class="doc-title">POSIX sh vs. Bash: Portability in Modern Scripts</h1>
<p>Technical write-up detailing zero-trust certificate auto-renewal pipelines using Vault PKI backend and Traefik dynamic configuration reloads.</p> <p>Eliminating bashisms and adhering to IEEE Std 1003.1 for high-speed bootstrapping in Alpine and embedded targets.</p>
<div class="tag-cluster"><span>[#blog]</span><span>[#traefik]</span><span>[#security]</span><span>[DATE: 2026-08-02]</span></div> <div class="tag-cluster"><span>[#posix-sh]</span><span>[#unix]</span><span>[DATE: 2026-07-10]</span></div>
`, `,
'ctf-note': ` 'ctf-heap': `
<div class="doc-path">file:///home/river/notes/defcon-ctf.md</div> <div class="doc-path">file:///home/river/notes/ctf-heap-glibc-2-35.md</div>
<h1 class="doc-title">DEFCON CTF Qualifier: Memory Corruption Write-Up</h1> <h1 class="doc-title">CTF Write-up: Heap Exploitation in glibc 2.35</h1>
<p>Deep-dive analysis on exploitation techniques involving glibc malloc heap metadata corruption and arbitrary write primitives.</p> <p>Tcache safe-linking bypass and House of Apple file structure hijacking primitives for arbitrary code execution.</p>
<div class="tag-cluster"><span>[#ctf]</span><span>[#binary]</span><span>[#pwn]</span><span>[DATE: 2026-07-18]</span></div> <div class="tag-cluster"><span>[#ctf]</span><span>[#binary-exploitation]</span><span>[DATE: 2026-06-28]</span></div>
`,
'shell-parser': `
<div class="doc-path">file:///home/river/modules/posix-shell-parser.lua</div>
<h1 class="doc-title">Module: Custom POSIX Shell Parser (v1.2.0)</h1>
<p>Zero-allocation Lexer and AST parser written in Lua for real-time syntax coloring in modal editors.</p>
<div class="code-block">
<div class="code-header">lexer.lua</div>
<div class="code-content">
local function tokenize(src)
local tokens = {}
for pos, char in ipairs(src) do
if char == ";" or char == "|" then table.insert(tokens, { type = "OPERATOR", value = char }) end
end
return tokens
end
</div>
</div>
<div class="tag-cluster"><span>[#lua]</span><span>[#ast-parser]</span><span>[VERSION: v1.2.0]</span></div>
`,
'mesh-builder': `
<div class="doc-path">file:///home/river/modules/wireguard-mesh.py</div>
<h1 class="doc-title">Module: WireGuard Mesh Topology Builder (v0.8.4)</h1>
<p>Matrix topology generator creating atomic configuration files and key pairings across multi-cloud and homelab nodes.</p>
<div class="tag-cluster"><span>[#networking]</span><span>[#wireguard]</span><span>[VERSION: v0.8.4]</span></div>
`,
'zero-logger': `
<div class="doc-path">file:///home/river/modules/zero-alloc-logger.go</div>
<h1 class="doc-title">Module: Zero-Allocation Logger (Go v2.1.1)</h1>
<p>High-throughput structured JSON logger utilizing sync.Pool byte buffers to eliminate heap allocations (>500k ops/sec).</p>
<div class="tag-cluster"><span>[#golang]</span><span>[#performance]</span><span>[VERSION: v2.1.1]</span></div>
`, `,
'whoami': ` 'whoami': `
<div class="doc-path">file:///home/river/resume/whoami.md</div> <div class="doc-path">file:///home/river/resume/whoami.md</div>
<h1 class="doc-title">River Rooks - Biography</h1> <h1 class="doc-title">River Rooks - Systems Architecture &amp; Cybersecurity</h1>
<p>Cybersecurity student at the University of Alabama College of Engineering, focusing on network forensics, self-hosted infrastructure, and hardened kernel configs.</p> <p>Cybersecurity student at the University of Alabama College of Engineering, focusing on network forensics, self-hosted infrastructure, and bare-metal virtualization.</p>
<div class="tag-cluster"><span>[#cs]</span><span>[#cybersecurity]</span><span>[#resume]</span></div> <div class="tag-cluster"><span>[#cybersecurity]</span><span>[#systems]</span><span>[UA COLLEGE OF ENGINEERING]</span></div>
`, `,
'stack': ` 'stack': `
<div class="doc-path">file:///home/river/resume/active_stack.conf</div> <div class="doc-path">file:///home/river/resume/active_stack.conf</div>
<h1 class="doc-title">Active Engineering Stack</h1> <h1 class="doc-title">Active Engineering Stack</h1>
<p>System configuration & tech stack specifications:</p>
<div class="code-block"> <div class="code-block">
<div class="code-header">stack.conf</div> <div class="code-header">stack.conf</div>
<div class="code-content"> <div class="code-content">
LANGUAGES="POSIX sh, Python, C, Lua" DOMAINS="Network Forensics, Self-Hosted Infrastructure, Linux Kernel Hardening"
TOOLS="Docker, Traefik, WireGuard, HashiCorp Vault, Neovim" LANGUAGES="POSIX sh, Python, Go, Rust, Lua, ARM Assembly"
OS="Arch Linux / POSIX Compliance" STACK="Traefik v3, WireGuard, Proxmox VE, TrueNAS SCALE, Neovim"
</div> </div>
</div> </div>
<div class="tag-cluster"><span>[#arch-linux]</span><span>[#neovim]</span><span>[#wireguard]</span></div>
` `
}; };
+21 -16
View File
@@ -296,6 +296,11 @@
<a href="companion.html" class="nav-link">Sample 3</a> <a href="companion.html" class="nav-link">Sample 3</a>
<a href="document-flow.html" class="nav-link">Sample 4</a> <a href="document-flow.html" class="nav-link">Sample 4</a>
<a href="portfolio.html" class="nav-link">Sample 5</a> <a href="portfolio.html" class="nav-link">Sample 5</a>
<a href="homelab.html" class="nav-link">Sample 6</a>
<a href="public-services.html" class="nav-link">Sample 7</a>
<a href="sample-dashboard.html" class="nav-link">Sample 8</a>
<a href="sample-command-center.html" class="nav-link">Sample 9</a>
<a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10</a>
</nav> </nav>
</header> </header>
@@ -326,15 +331,15 @@
<div class="status-panel"> <div class="status-panel">
<div class="status-row"> <div class="status-row">
<span class="status-label">Target:</span> <span class="status-label">Target:</span>
<span class="status-value">AGY-Node-A2</span> <span class="status-value">pve-node02.lan</span>
</div> </div>
<div class="status-row"> <div class="status-row">
<span class="status-label">Status:</span> <span class="status-label">Status:</span>
<span class="status-value" style="color: var(--accent);">ANIMATING</span> <span class="status-value" style="color: var(--accent);">ANIMATING</span>
</div> </div>
<div class="status-row"> <div class="status-row">
<span class="status-label">Engine:</span> <span class="status-label">Cluster:</span>
<span class="status-value">Vanilla JS</span> <span class="status-value">10GbE SFP+</span>
</div> </div>
</div> </div>
</div> </div>
@@ -343,7 +348,7 @@
<!-- Right Pane - Scrollable List of Cards --> <!-- Right Pane - Scrollable List of Cards -->
<main class="right-pane"> <main class="right-pane">
<div class="scroll-content"> <div class="scroll-content">
<h2 class="section-title">Developer Workspace Projects</h2> <h2 class="section-title">River Rooks // System Modules</h2>
<div class="tile-list"> <div class="tile-list">
@@ -351,10 +356,10 @@
<a href="#" class="tile"> <a href="#" class="tile">
<div class="tile-header"> <div class="tile-header">
<h3 class="tile-title">Custom POSIX Shell Parser</h3> <h3 class="tile-title">Custom POSIX Shell Parser</h3>
<span class="tile-meta">v1.2.0</span> <span class="tile-meta">v1.2.0 • [#lua]</span>
</div> </div>
<p class="tile-description"> <p class="tile-description">
A lightweight Lexer and AST parser written in Lua for parsing POSIX compliant shell scripts. Highly optimized for syntax coloring inside modal environments. A lightweight Lexer and AST parser written in Lua for parsing POSIX-compliant shell scripts. Highly optimized for syntax coloring inside modal environments without runtime heap allocations.
</p> </p>
</a> </a>
@@ -362,10 +367,10 @@
<a href="#" class="tile"> <a href="#" class="tile">
<div class="tile-header"> <div class="tile-header">
<h3 class="tile-title">WireGuard Mesh Topology Builder</h3> <h3 class="tile-title">WireGuard Mesh Topology Builder</h3>
<span class="tile-meta">v0.8.4</span> <span class="tile-meta">v0.8.4 • [#wireguard]</span>
</div> </div>
<p class="tile-description"> <p class="tile-description">
Automated configuration generator for setting up full-mesh WireGuard private overlays across cloud instances and local homelab nodes. Automated configuration generator for computing key matrices and setting up full-mesh WireGuard private overlays across cloud instances and local homelab nodes.
</p> </p>
</a> </a>
@@ -373,10 +378,10 @@
<a href="#" class="tile"> <a href="#" class="tile">
<div class="tile-header"> <div class="tile-header">
<h3 class="tile-title">Zero-Allocation Logger (Go)</h3> <h3 class="tile-title">Zero-Allocation Logger (Go)</h3>
<span class="tile-meta">v2.1.1</span> <span class="tile-meta">v2.1.1 • [#golang]</span>
</div> </div>
<p class="tile-description"> <p class="tile-description">
A high-performance JSON structure logger that uses sync.Pool buffers to avoid memory allocation overhead during intensive disk operations. A high-performance JSON structure logger that uses sync.Pool buffers to avoid memory allocation overhead during intensive disk operations (>500k ops/sec).
</p> </p>
</a> </a>
@@ -384,10 +389,10 @@
<a href="#" class="tile"> <a href="#" class="tile">
<div class="tile-header"> <div class="tile-header">
<h3 class="tile-title">Embedded Kernel Boot Strap</h3> <h3 class="tile-title">Embedded Kernel Boot Strap</h3>
<span class="tile-meta">v0.1.0</span> <span class="tile-meta">v0.1.0 • [#arm-cortex]</span>
</div> </div>
<p class="tile-description"> <p class="tile-description">
Minimalist boot sector and initial kernel bootstrap for ARM Cortex-M microcontrollers to handle memory map initialization and early UART status printouts. Minimalist boot sector and initial kernel bootstrap for ARM Cortex-M microcontrollers to handle vector table offset mapping and early UART status printouts.
</p> </p>
</a> </a>
@@ -395,18 +400,18 @@
<a href="#" class="tile"> <a href="#" class="tile">
<div class="tile-header"> <div class="tile-header">
<h3 class="tile-title">Traefik Cloudflare Dynamic DNS Daemon</h3> <h3 class="tile-title">Traefik Cloudflare Dynamic DNS Daemon</h3>
<span class="tile-meta">v1.0.2</span> <span class="tile-meta">v1.0.2 • [#docker-traefik]</span>
</div> </div>
<p class="tile-description"> <p class="tile-description">
Background controller daemon designed to sync Docker container network labels with Cloudflare DNS records to route traffic to local homelab subdomains. Background controller daemon designed to sync Docker container network labels with Cloudflare DNS records to route traffic to local homelab subdomains dynamically.
</p> </p>
</a> </a>
</div> </div>
<footer class="pane-footer"> <footer class="pane-footer">
<span>Split Panel Spec Sample</span> <span>Sample 2: Split Panel Layout</span>
<span>© 2026 Developer System</span> <span>© 2026 River Rooks</span>
</footer> </footer>
</div> </div>
</main> </main>