Compare commits
13
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3ae84ad79 | ||
|
|
451fb34f52 | ||
|
|
9f4758039a | ||
|
|
6a0f4347f9 | ||
|
|
0ee5fae6be | ||
|
|
be516f8848 | ||
|
|
59bac4bac9 | ||
|
|
e68322f182 | ||
|
|
bf351e9755 | ||
|
|
801ba3a533 | ||
|
|
65ad51560c | ||
|
|
0f80bf4e9b | ||
|
|
424041a827 |
+10
-2
@@ -250,6 +250,10 @@
|
||||
<span class="tag">[#wireguard]</span>
|
||||
<span class="tag">[#posix-sh]</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>
|
||||
</section>
|
||||
|
||||
@@ -257,11 +261,15 @@
|
||||
|
||||
<!-- Piped Contact Footer -->
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
</main>
|
||||
|
||||
@@ -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
@@ -345,6 +345,11 @@
|
||||
<a href="companion.html" class="nav-link active">Sample 3</a>
|
||||
<a href="document-flow.html" class="nav-link">Sample 4</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>
|
||||
</header>
|
||||
|
||||
@@ -354,53 +359,53 @@
|
||||
<!-- Left Pane: Scrollable Project Cards -->
|
||||
<main class="left-pane" aria-label="Project Feed">
|
||||
<div class="scroll-content">
|
||||
<h2 class="section-title">System Modules</h2>
|
||||
<h2 class="section-title">River Rooks // System Modules</h2>
|
||||
|
||||
<div class="card-list">
|
||||
<!-- Card 1 -->
|
||||
<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">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<!-- Card 2 -->
|
||||
<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">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<!-- Card 3 -->
|
||||
<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">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<!-- Card 4 -->
|
||||
<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">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<!-- Card 5 -->
|
||||
<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">
|
||||
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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="pane-footer">
|
||||
<span>Companion Spec Sample</span>
|
||||
<span>© 2026 Developer System</span>
|
||||
<span>Sample 3: Companion Layout</span>
|
||||
<span>© 2026 River Rooks</span>
|
||||
</footer>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@@ -379,6 +379,11 @@
|
||||
<a href="companion.html" class="nav-link">Sample 3</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="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>
|
||||
</header>
|
||||
|
||||
@@ -407,9 +412,9 @@
|
||||
|
||||
<!-- Document Header -->
|
||||
<header class="document-header">
|
||||
<h1 class="doc-title">Engineering Architecture & Portfolio</h1>
|
||||
<h1 class="doc-title">River Rooks // Systems & Architecture</h1>
|
||||
<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>
|
||||
</header>
|
||||
|
||||
@@ -536,7 +541,7 @@ end</code></pre>
|
||||
|
||||
<footer class="pane-footer">
|
||||
<span>Sample 4: Document Flow Layout</span>
|
||||
<span>© 2026 Developer System</span>
|
||||
<span>© 2026 River Rooks</span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
+12
-10
@@ -512,6 +512,10 @@
|
||||
<a href="document-flow.html" class="nav-link">Sample 4</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="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>
|
||||
</header>
|
||||
|
||||
@@ -771,9 +775,9 @@
|
||||
<tr>
|
||||
<td class="node-hostname">nas-node03.lan</td>
|
||||
<td>TrueNAS SCALE</td>
|
||||
<td>Intel Xeon E-2278G (8C/16T) | 64GB ECC | 6x16TB ZFS</td>
|
||||
<td><span class="metric-bar">[██░░░░░░░░]</span> 24%</td>
|
||||
<td><span class="metric-bar">[████████░░]</span> 81%</td>
|
||||
<td>Intel Core i5-12400 (6C/12T) | 64GB ECC | 6x 16TB RaidZ2</td>
|
||||
<td><span class="metric-bar">[██░░░░░░░░]</span> 14%</td>
|
||||
<td><span class="metric-bar">[████████░░]</span> 82%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</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 │
|
||||
│ • 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>
|
||||
</section>
|
||||
@@ -819,13 +823,11 @@
|
||||
<footer class="footer-links">
|
||||
<a href="index.html" class="footer-link">Spec Catalog</a>
|
||||
<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>
|
||||
<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>
|
||||
<a href="#" class="footer-link">PGP Key</a>
|
||||
<span class="pipe">|</span>
|
||||
<span style="font-size:0.78rem; color:var(--text-muted);">HOSTED ON SELF-HEALED K3S CLUSTER</span>
|
||||
<span style="font-size:0.78rem; color:var(--text-muted);">CLUSTER ONLINE • 48TB ZFS POOL • 10GbE SFP+ BACKBONE</span>
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
|
||||
+29
-30
@@ -356,40 +356,33 @@
|
||||
|
||||
<!-- Sidebar Navigation -->
|
||||
<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>
|
||||
|
||||
<nav>
|
||||
<ul class="nav-list">
|
||||
<li class="nav-item">
|
||||
<a href="homepage.html" class="nav-link active">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link">Posts</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link">Projects</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="index.html" class="nav-link">Spec Catalog</a>
|
||||
</li>
|
||||
<li class="nav-item"><a href="index.html" class="nav-link">Catalog</a></li>
|
||||
<li class="nav-item"><a href="homepage.html" class="nav-link active">Sample 1 (Home)</a></li>
|
||||
<li class="nav-item"><a href="split-panel.html" class="nav-link">Sample 2 (Split)</a></li>
|
||||
<li class="nav-item"><a href="companion.html" class="nav-link">Sample 3 (Daemon)</a></li>
|
||||
<li class="nav-item"><a href="document-flow.html" class="nav-link">Sample 4 (Doc Flow)</a></li>
|
||||
<li class="nav-item"><a href="portfolio.html" class="nav-link">Sample 5 (Portfolio)</a></li>
|
||||
<li class="nav-item"><a href="homelab.html" class="nav-link">Sample 6 (Homelab)</a></li>
|
||||
<li class="nav-item"><a href="public-services.html" class="nav-link">Sample 7 (Services)</a></li>
|
||||
<li class="nav-item"><a href="sample-dashboard.html" class="nav-link">Sample 8 (Dashboard)</a></li>
|
||||
<li class="nav-item"><a href="sample-command-center.html" class="nav-link">Sample 9 (Command)</a></li>
|
||||
<li class="nav-item"><a href="sample-dual-pane-explorer.html" class="nav-link">Sample 10 (Explorer)</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- Keybindings Panel Widget -->
|
||||
<div class="keybindings-panel">
|
||||
<div class="keybindings-title">Keyboard Shortcuts</div>
|
||||
<div class="keybinding-row">
|
||||
<span>Search posts</span>
|
||||
<kbd>Ctrl</kbd> + <kbd>K</kbd>
|
||||
</div>
|
||||
<div class="keybinding-row">
|
||||
<span>Go to Catalog</span>
|
||||
<kbd>g</kbd> + <kbd>c</kbd>
|
||||
</div>
|
||||
<div class="keybinding-row">
|
||||
<span>Toggle Terminal</span>
|
||||
<kbd>~</kbd>
|
||||
<div class="keybindings-title">Active Stack</div>
|
||||
<div style="font-size: 0.75rem; color: var(--text-muted); line-height: 1.6;">
|
||||
[#network-forensics]<br>
|
||||
[#docker-traefik]<br>
|
||||
[#arch-linux] [#neovim]<br>
|
||||
[#wireguard] [#posix-sh]
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
@@ -410,6 +403,7 @@
|
||||
<a href="#" class="tag">[#firmware]</a>
|
||||
<a href="#" class="tag">[#hardware]</a>
|
||||
<a href="#" class="tag">[#security]</a>
|
||||
<a href="#" class="tag">[#bus-pirate]</a>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
md5sum firmware_dump.bin
|
||||
<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> >&2
|
||||
<span class="syn-keyword">exit</span> 1
|
||||
<span class="syn-keyword">fi</span></code></pre>
|
||||
</div>
|
||||
@@ -451,7 +445,7 @@ flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
|
||||
|
||||
<!-- Tabular Archive Index Section -->
|
||||
<section>
|
||||
<h2>Recent Writes & Archive</h2>
|
||||
<h2>Recent Writes & Archive</h2>
|
||||
<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.
|
||||
</p>
|
||||
@@ -473,21 +467,26 @@ flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
|
||||
<tr onclick="location.href='#'">
|
||||
<td class="post-date">2026-07-10</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 onclick="location.href='#'">
|
||||
<td class="post-date">2026-06-28</td>
|
||||
<td><a href="#">CTF Write-up: Heap Exploitation in glibc 2.35</a></td>
|
||||
<td><span style="color: var(--accent);">[#ctf]</span></td>
|
||||
</tr>
|
||||
<tr onclick="location.href='#'">
|
||||
<td class="post-date">2026-06-14</td>
|
||||
<td><a href="#">Zero-Trust Network Isolation with WireGuard & OPNsense VLANs</a></td>
|
||||
<td><span style="color: var(--accent);">[#networking]</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<span>© 2026 Developer Blog</span>
|
||||
<span>Built with Design-Specification.md</span>
|
||||
<span>© 2026 River Rooks</span>
|
||||
<span>Aligned with Canonical-Sample-Content.md</span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
+664
-247
File diff suppressed because it is too large
Load Diff
+15
-4
@@ -282,6 +282,11 @@
|
||||
<a href="companion.html" class="nav-link">Sample 3</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="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>
|
||||
</header>
|
||||
|
||||
@@ -310,7 +315,7 @@
|
||||
<div class="terminal-body">
|
||||
<div class="cmd-line"><span class="prompt">$</span> cat /var/log/status.txt</div>
|
||||
<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>
|
||||
@@ -320,7 +325,7 @@
|
||||
<section class="bio-section">
|
||||
<h2 class="section-title">whoami</h2>
|
||||
<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>
|
||||
</section>
|
||||
|
||||
@@ -335,6 +340,10 @@
|
||||
<span class="tag">[#wireguard]</span>
|
||||
<span class="tag">[#posix-sh]</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>
|
||||
</section>
|
||||
|
||||
@@ -342,11 +351,13 @@
|
||||
|
||||
<!-- E. Footer (Contact & 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>
|
||||
<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>
|
||||
<a href="#" class="footer-link">PGP Key</a>
|
||||
<a href="#" title="Fingerprint: 0x4A8E92F1C0B3D4E7" class="footer-link">PGP: 0x4A8E92F1...</a>
|
||||
<span class="pipe">|</span>
|
||||
<a href="index.html" class="footer-link">Spec Catalog</a>
|
||||
</footer>
|
||||
|
||||
@@ -545,6 +545,9 @@
|
||||
<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 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>
|
||||
</header>
|
||||
|
||||
@@ -797,10 +800,10 @@
|
||||
|
||||
<div class="key-row">
|
||||
<div>
|
||||
<span class="key-label">PGP Key Fingerprint:</span><br>
|
||||
<span class="key-value">3F8A B29C 7D1E 4056 9912 A8B0 C4D3 E2F1 8091 22A4</span>
|
||||
<span class="key-label">PGP Key ID / Fingerprint:</span><br>
|
||||
<span class="key-value">0x4A8E92F1C0B3D4E7 • 3F8A B29C 7D1E 4056 9912 A8B0 C4D3 E2F1 8091 22A4</span>
|
||||
</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 class="key-row">
|
||||
@@ -813,10 +816,10 @@
|
||||
|
||||
<div class="key-row">
|
||||
<div>
|
||||
<span class="key-label">Public SSH Key:</span><br>
|
||||
<span class="key-value">ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH8q882a... river@rooks.dev</span>
|
||||
<span class="key-label">Public SSH Key Digest:</span><br>
|
||||
<span class="key-value">SHA256:7uK+N04wP5rL/9z3Q8s1vX4dF6mK2pT8yB1wN0qZ8 (river@rooks.dev)</span>
|
||||
</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>
|
||||
@@ -828,13 +831,11 @@
|
||||
<footer class="footer-links">
|
||||
<a href="index.html" class="footer-link">Spec Catalog</a>
|
||||
<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>
|
||||
<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>
|
||||
<a href="#" class="footer-link">Download PGP Key</a>
|
||||
<span class="pipe">|</span>
|
||||
<span style="font-size:0.78rem; color:var(--text-muted);">PUBLIC SERVICES PORTAL v2.4</span>
|
||||
<span style="font-size:0.78rem; color:var(--text-muted);">PUBLIC SERVICES PORTAL • RIVER ROOKS</span>
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
<header class="app-header">
|
||||
<div class="brand-title">
|
||||
<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>
|
||||
|
||||
<nav class="nav-tabs">
|
||||
@@ -308,56 +308,80 @@
|
||||
<div class="panel">
|
||||
<div class="panel-header">
|
||||
<span>/etc/services.d/manifest.json</span>
|
||||
<span>4 SERVICES OPERATIONAL</span>
|
||||
<span>6 CANONICAL SERVICES</span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="services-grid">
|
||||
|
||||
<div class="service-box">
|
||||
<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>
|
||||
</div>
|
||||
<p class="service-desc">Real-time metrics, Prometheus scraping, & 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">
|
||||
<span>PING: 4ms</span>
|
||||
<span>TRAEFIK HTTPS</span>
|
||||
<span>PORT: 443/tcp</span>
|
||||
<span>#core</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="service-box">
|
||||
<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>
|
||||
</div>
|
||||
<p class="service-desc">HashiCorp Vault secret storage, certificate authority, & mTLS renewal.</p>
|
||||
<p class="service-desc">Primary storage pool managing 48TB ZFS RaidZ2 array with daily scrub jobs.</p>
|
||||
<div class="service-stats">
|
||||
<span>PING: 2ms</span>
|
||||
<span>SEALED: FALSE</span>
|
||||
<span>NFS / SMB</span>
|
||||
<span>#storage</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="service-box">
|
||||
<div class="service-title">
|
||||
<a href="https://nextcloud.local" target="_blank">cloud.homelab</a>
|
||||
<span class="badge-status badge-online">ONLINE</span>
|
||||
<a href="https://vault.rooks.dev" target="_blank">Vaultwarden Secrets</a>
|
||||
<span class="badge-status badge-online">E2EE</span>
|
||||
</div>
|
||||
<p class="service-desc">Encrypted private cloud file storage & automated system backup target.</p>
|
||||
<p class="service-desc">Rust implementation of Bitwarden API hosting credentials, SSH keys, & 2FA.</p>
|
||||
<div class="service-stats">
|
||||
<span>PING: 6ms</span>
|
||||
<span>STORAGE: 1.2TB</span>
|
||||
<span>2FA / AUTH</span>
|
||||
<span>#secrets</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="service-box">
|
||||
<div class="service-title">
|
||||
<a href="https://wireguard.local" target="_blank">wireguard.homelab</a>
|
||||
<span class="badge-status badge-internal">INTERNAL</span>
|
||||
<a href="https://git.rooks.dev" target="_blank">Forgejo Git Forge</a>
|
||||
<span class="badge-status badge-online">PUBLIC</span>
|
||||
</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">
|
||||
<span>PING: 12ms</span>
|
||||
<span>PEERS: 6 ACTIVE</span>
|
||||
<span>PORT: 3000</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, & 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 & KVM virtual machines.</p>
|
||||
<div class="service-stats">
|
||||
<span>PORT: 8006</span>
|
||||
<span>#compute</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -371,7 +395,7 @@
|
||||
<div class="panel">
|
||||
<div class="panel-header">
|
||||
<span>/var/log/articles.index</span>
|
||||
<span>POST COUNT: 4</span>
|
||||
<span>POST COUNT: 5</span>
|
||||
</div>
|
||||
<div class="panel-body" style="padding: 0;">
|
||||
<table class="blog-table">
|
||||
@@ -385,28 +409,34 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>2026-08-02</td>
|
||||
<td><a href="#" class="post-link">Hardening Traefik Ingress with HashiCorp Vault mTLS</a></td>
|
||||
<td><span class="tag-badge">[#homelab] [#traefik]</span></td>
|
||||
<td>2026-07-20</td>
|
||||
<td><a href="#" class="post-link">Reverse Engineering IoT Firmware: SPI Flash Extraction</a></td>
|
||||
<td><span class="tag-badge">[#firmware] [#hardware]</span></td>
|
||||
<td>8 min</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2026-07-18</td>
|
||||
<td><a href="#" class="post-link">DEFCON CTF Qualifier: Memory Corruption & Heap Exploitation</a></td>
|
||||
<td>2026-07-15</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>14 min</td>
|
||||
<td>15 min</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2026-06-29</td>
|
||||
<td><a href="#" class="post-link">Custom Linux Kernel Compilation for BPF Network Tracing</a></td>
|
||||
<td><span class="tag-badge">[#linux] [#ebpf]</span></td>
|
||||
<td>11 min</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2026-05-14</td>
|
||||
<td><a href="#" class="post-link">Minimalist Dotfiles & Hyprland Keybindings Optimization</a></td>
|
||||
<td><span class="tag-badge">[#hyprland] [#dots]</span></td>
|
||||
<td>5 min</td>
|
||||
<td>2026-06-14</td>
|
||||
<td><a href="#" class="post-link">Zero-Trust Network Isolation with WireGuard & OPNsense VLANs</a></td>
|
||||
<td><span class="tag-badge">[#networking] [#wireguard]</span></td>
|
||||
<td>10 min</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -424,25 +454,31 @@
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="conf-block">
|
||||
<span class="conf-comment"># Identity & System Purpose</span><br>
|
||||
<span class="conf-comment"># Identity & Systems Architecture</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 & Cybersecurity Researcher"</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">ROLE</span> = <span class="conf-val">"Systems Architecture & Cybersecurity"</span><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-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">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">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">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">"Go"</span>, <span class="conf-val">"Lua"</span>, <span class="conf-val">"ARM Assembly"</span>]<br>
|
||||
<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>
|
||||
|
||||
<p style="font-size: 0.92rem; margin-bottom: 16px;">
|
||||
Focused on building resilient, zero-trust network architectures and low-noise self-hosted environments.
|
||||
Proven CTF participant and open-source dotfiles maintainer.
|
||||
</p>
|
||||
<h3 style="font-family: 'IBM Plex Mono', monospace; font-size: 0.95rem; margin-bottom: 12px;">System Modules:</h3>
|
||||
<ul style="font-size: 0.88rem; color: var(--text-muted); line-height: 1.8; margin-bottom: 20px; list-style-position: inside;">
|
||||
<li><strong style="color: var(--accent-cyan);">/dev/posix-shell-parser</strong> (v1.2.0 • Lua) — Zero-allocation AST lexer</li>
|
||||
<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;">
|
||||
<a href="#" class="btn-action">Download Resume (.PDF)</a>
|
||||
<a href="#" class="btn-action">Fetch PGP Key</a>
|
||||
<a href="mailto:river@rooks.dev" class="btn-action">Email: river@rooks.dev</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>
|
||||
|
||||
@@ -268,13 +268,25 @@
|
||||
|
||||
<!-- Top Status Navigation -->
|
||||
<header class="top-bar">
|
||||
<div>
|
||||
<div style="display: flex; align-items: center; gap: 12px;">
|
||||
<span class="mode-tag">NORMAL</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 class="status-group">
|
||||
<span><span class="status-dot"></span> TRAEFIK: MESH_OK</span>
|
||||
<span>SYS_LOAD: 0.14</span>
|
||||
<span><span class="status-dot"></span> TRAEFIK: V3.1 OK</span>
|
||||
<span>CLUSTER: 10GbE SFP+</span>
|
||||
<span>UPTIME: 99.98%</span>
|
||||
</div>
|
||||
</header>
|
||||
@@ -282,59 +294,71 @@
|
||||
<!-- Main 3-Tile Dashboard -->
|
||||
<main class="dashboard-grid">
|
||||
|
||||
<!-- Left Tile: Homelab Services Directory -->
|
||||
<!-- Left Tile: Homelab & Public Services Directory -->
|
||||
<section class="tile">
|
||||
<div class="tile-header">
|
||||
<span>/etc/services</span>
|
||||
<span>[4 ACTIVE]</span>
|
||||
<span>[CANONICAL SERVICES]</span>
|
||||
</div>
|
||||
<div class="tile-body">
|
||||
|
||||
<div class="service-card">
|
||||
<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>
|
||||
</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">
|
||||
<span>PORT: :3000</span>
|
||||
<span>HTTPS</span>
|
||||
<span>PORT: 443/tcp</span>
|
||||
<span>#core</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="service-card">
|
||||
<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>
|
||||
</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">
|
||||
<span>PORT: :8200</span>
|
||||
<span>mTLS</span>
|
||||
<span>NFS / SMB</span>
|
||||
<span>#storage</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="service-card">
|
||||
<div class="service-head">
|
||||
<a href="https://nextcloud.local" target="_blank">cloud.homelab</a>
|
||||
<span class="badge-online">[ONLINE]</span>
|
||||
<a href="https://vault.rooks.dev" target="_blank">Vaultwarden Secrets</a>
|
||||
<span class="badge-online">[E2EE]</span>
|
||||
</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 & 2FA.</p>
|
||||
<div class="service-meta">
|
||||
<span>PORT: :443</span>
|
||||
<span>HTTPS</span>
|
||||
<span>2FA / AUTH</span>
|
||||
<span>#secrets</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="service-card">
|
||||
<div class="service-head">
|
||||
<a href="https://wireguard.local" target="_blank">vpn.homelab</a>
|
||||
<span class="badge-internal">[INTERNAL]</span>
|
||||
<a href="https://git.rooks.dev" target="_blank">Forgejo Git Forge</a>
|
||||
<span class="badge-online">[PUBLIC]</span>
|
||||
</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 & CTF code.</p>
|
||||
<div class="service-meta">
|
||||
<span>UDP: :51820</span>
|
||||
<span>VPN</span>
|
||||
<span>PORT: 3000</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 & CTF payload analysis.</p>
|
||||
<div class="service-meta">
|
||||
<span>OPEN WEB</span>
|
||||
<span>#security-tool</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -349,11 +373,11 @@
|
||||
</div>
|
||||
<div class="tile-body">
|
||||
<h1 class="hero-title">River Rooks</h1>
|
||||
<div class="subtitle">SYSTEMS ARCHITECT & CYBERSECURITY RESEARCHER</div>
|
||||
<div class="subtitle">SYSTEMS ARCHITECTURE & CYBERSECURITY</div>
|
||||
|
||||
<p class="bio-prose">
|
||||
Computer Science & 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.
|
||||
Cybersecurity student at the University of Alabama College of Engineering.
|
||||
Focusing on network forensics, self-hosted infrastructure resilience, bare-metal virtualization, and low-level Unix tooling.
|
||||
</p>
|
||||
|
||||
<h2 class="section-title">active_stack</h2>
|
||||
@@ -365,22 +389,32 @@
|
||||
<span>[#wireguard]</span>
|
||||
<span>[#posix-sh]</span>
|
||||
<span>[#python]</span>
|
||||
<span>[#hashicorp-vault]</span>
|
||||
<span>[#golang]</span>
|
||||
<span>[#rust]</span>
|
||||
<span>[#proxmox]</span>
|
||||
<span>[#truenas]</span>
|
||||
</div>
|
||||
|
||||
<h2 class="section-title">featured_projects</h2>
|
||||
<h2 class="section-title">featured_modules</h2>
|
||||
|
||||
<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);">
|
||||
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>
|
||||
</div>
|
||||
|
||||
<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);">
|
||||
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>
|
||||
</div>
|
||||
|
||||
@@ -396,27 +430,33 @@
|
||||
<div class="tile-body">
|
||||
|
||||
<div class="article-item">
|
||||
<div class="article-date">2026-08-02 | #HOMELAB</div>
|
||||
<a href="#" class="article-link">Hardening Traefik Ingress with HashiCorp Vault mTLS</a>
|
||||
<p style="font-size: 0.78rem; color: var(--text-muted);">Zero-trust certificate auto-renewal pipeline configuration.</p>
|
||||
<div class="article-date">2026-07-20 | #FIRMWARE</div>
|
||||
<a href="#" class="article-link">Reverse Engineering IoT Firmware: SPI Flash Extraction</a>
|
||||
<p style="font-size: 0.78rem; color: var(--text-muted);">Dumping SPI flash chips via Bus Pirate & flashrom to bypass locked bootloaders.</p>
|
||||
</div>
|
||||
|
||||
<div class="article-item">
|
||||
<div class="article-date">2026-07-18 | #CTF</div>
|
||||
<a href="#" class="article-link">DEFCON CTF Qualifier: Memory Corruption & Heap Exploitation</a>
|
||||
<p style="font-size: 0.78rem; color: var(--text-muted);">Deconstructing glibc malloc chunk metadata manipulation.</p>
|
||||
<div class="article-date">2026-07-15 | #HOMELAB</div>
|
||||
<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);">Dynamic Docker provider discovery & Let's Encrypt automated TLS wildcard routing.</p>
|
||||
</div>
|
||||
|
||||
<div class="article-item">
|
||||
<div class="article-date">2026-06-29 | #LINUX</div>
|
||||
<a href="#" class="article-link">Custom Linux Kernel Compilation for BPF Network Tracing</a>
|
||||
<p style="font-size: 0.78rem; color: var(--text-muted);">Configuring eBPF probe hooks for real-time socket inspection.</p>
|
||||
<div class="article-date">2026-07-10 | #POSIX-SH</div>
|
||||
<a href="#" class="article-link">POSIX sh vs. Bash: Portability in Modern Scripts</a>
|
||||
<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 class="article-item">
|
||||
<div class="article-date">2026-05-14 | #HYPRLAND</div>
|
||||
<a href="#" class="article-link">Minimalist Dotfiles & Hyprland Keybindings Optimization</a>
|
||||
<p style="font-size: 0.78rem; color: var(--text-muted);">Ergonomic modal editing & window tiling configuration setup.</p>
|
||||
<div class="article-date">2026-06-28 | #CTF</div>
|
||||
<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);">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 & 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>
|
||||
@@ -427,7 +467,7 @@
|
||||
<!-- Interactive Terminal Footer Bar -->
|
||||
<footer class="cmd-footer">
|
||||
<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>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -207,12 +207,24 @@
|
||||
|
||||
<!-- Top Breadcrumbs Bar -->
|
||||
<header class="top-nav">
|
||||
<div>
|
||||
<div style="display: flex; align-items: center; gap: 12px;">
|
||||
<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>
|
||||
<span>POSITION: /home/river/services/grafana.md</span>
|
||||
<span style="color: var(--text-muted);">HOST: pve-node02.lan [10GbE]</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -225,13 +237,22 @@
|
||||
|
||||
<div class="tree-view">
|
||||
<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" onclick="selectItem(this, 'vault')">vault.md <span>[SVC]</span></div>
|
||||
<div class="tree-item" onclick="selectItem(this, 'wireguard')">wireguard.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, 'truenas')">truenas.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-item" onclick="selectItem(this, 'traefik-note')">traefik-mtls.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, 'spi-flash')">spi-flash.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-item" onclick="selectItem(this, 'whoami')">whoami.md <span>[CV]</span></div>
|
||||
@@ -253,31 +274,34 @@
|
||||
<main class="main-pane">
|
||||
<div class="doc-container" id="doc-view">
|
||||
|
||||
<!-- Default Content: Grafana Service -->
|
||||
<div class="doc-path">file:///home/river/services/grafana.md</div>
|
||||
<h1 class="doc-title">Service: grafana.homelab</h1>
|
||||
<!-- Default Content: Traefik Proxy -->
|
||||
<div class="doc-path">file:///home/river/services/traefik.md</div>
|
||||
<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.
|
||||
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-header">docker-compose.yml</div>
|
||||
<div class="code-header">traefik.yml</div>
|
||||
<div class="code-content">
|
||||
<span style="color: var(--accent-cyan);">services:</span>
|
||||
<span style="color: var(--accent-cyan);">grafana:</span>
|
||||
image: grafana/grafana-oss:latest
|
||||
container_name: homelab_grafana
|
||||
ports:
|
||||
- "3000:3000"
|
||||
restart: unless-stopped
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":80"
|
||||
websecure:
|
||||
address: ":443"
|
||||
certificatesResolvers:
|
||||
cloudflare:
|
||||
acme:
|
||||
dnsChallenge:
|
||||
provider: cloudflare
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tag-cluster">
|
||||
<span>[#homelab]</span>
|
||||
<span>[#prometheus]</span>
|
||||
<span>[#telemetry]</span>
|
||||
<span>[#core]</span>
|
||||
<span>[#docker-traefik]</span>
|
||||
<span>[PORT: 443/tcp]</span>
|
||||
<span>[STATUS: ONLINE]</span>
|
||||
</div>
|
||||
|
||||
@@ -289,79 +313,135 @@
|
||||
<!-- Bottom Status Bar -->
|
||||
<footer class="status-bar">
|
||||
<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>
|
||||
|
||||
<script>
|
||||
const docs = {
|
||||
'grafana': `
|
||||
<div class="doc-path">file:///home/river/services/grafana.md</div>
|
||||
<h1 class="doc-title">Service: grafana.homelab</h1>
|
||||
<p>Primary telemetry and Prometheus monitoring dashboard. Aggregates host node resource usage, Docker container stats, and Traefik router throughput.</p>
|
||||
'traefik': `
|
||||
<div class="doc-path">file:///home/river/services/traefik.md</div>
|
||||
<h1 class="doc-title">Service: Traefik Proxy (v3.1)</h1>
|
||||
<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-header">docker-compose.yml</div>
|
||||
<div class="code-header">traefik.yml</div>
|
||||
<div class="code-content">
|
||||
<span style="color: var(--accent-cyan);">services:</span>
|
||||
<span style="color: var(--accent-cyan);">grafana:</span>
|
||||
image: grafana/grafana-oss:latest
|
||||
container_name: homelab_grafana
|
||||
ports:
|
||||
- "3000:3000"
|
||||
restart: unless-stopped
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":80"
|
||||
websecure:
|
||||
address: ":443"
|
||||
certificatesResolvers:
|
||||
cloudflare:
|
||||
acme:
|
||||
dnsChallenge:
|
||||
provider: cloudflare
|
||||
</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': `
|
||||
<div class="doc-path">file:///home/river/services/vault.md</div>
|
||||
<h1 class="doc-title">Service: vault.homelab</h1>
|
||||
<p>HashiCorp Vault cluster managing secrets, SSH keys, internal PKI certificates, and mTLS auto-renewal for homelab nodes.</p>
|
||||
'truenas': `
|
||||
<div class="doc-path">file:///home/river/services/truenas.md</div>
|
||||
<h1 class="doc-title">Service: TrueNAS SCALE</h1>
|
||||
<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-header">vault-config.hcl</div>
|
||||
<div class="code-header">extract_firmware.sh</div>
|
||||
<div class="code-content">
|
||||
storage "file" { path = "/vault/file" }
|
||||
listener "tcp" { address = "0.0.0.0:8200" tls_disable = 0 }
|
||||
ui = true
|
||||
flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -r firmware_dump.bin
|
||||
md5sum firmware_dump.bin
|
||||
</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': `
|
||||
<div class="doc-path">file:///home/river/services/wireguard.md</div>
|
||||
<h1 class="doc-title">Service: wireguard.homelab</h1>
|
||||
<p>Encrypted WireGuard mesh network ingress connecting offsite cloud VPS nodes directly to the internal homelab network.</p>
|
||||
<div class="tag-cluster"><span>[#networking]</span><span>[#wireguard]</span><span>[#vpn]</span><span>[STATUS: INTERNAL]</span></div>
|
||||
'ha-traefik': `
|
||||
<div class="doc-path">file:///home/river/notes/ha-traefik-docker.md</div>
|
||||
<h1 class="doc-title">Building a High-Availability Traefik Router</h1>
|
||||
<p>Architecting automated TLS wildcard certificate propagation and dynamic Docker container discovery failover routing.</p>
|
||||
<div class="tag-cluster"><span>[#homelab]</span><span>[#docker-traefik]</span><span>[DATE: 2026-07-15]</span></div>
|
||||
`,
|
||||
'traefik-note': `
|
||||
<div class="doc-path">file:///home/river/notes/traefik-mtls.md</div>
|
||||
<h1 class="doc-title">Hardening Traefik Ingress with HashiCorp Vault mTLS</h1>
|
||||
<p>Technical write-up detailing zero-trust certificate auto-renewal pipelines using Vault PKI backend and Traefik dynamic configuration reloads.</p>
|
||||
<div class="tag-cluster"><span>[#blog]</span><span>[#traefik]</span><span>[#security]</span><span>[DATE: 2026-08-02]</span></div>
|
||||
'posix-sh': `
|
||||
<div class="doc-path">file:///home/river/notes/posix-sh-vs-bash.md</div>
|
||||
<h1 class="doc-title">POSIX sh vs. Bash: Portability in Modern Scripts</h1>
|
||||
<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>[#posix-sh]</span><span>[#unix]</span><span>[DATE: 2026-07-10]</span></div>
|
||||
`,
|
||||
'ctf-note': `
|
||||
<div class="doc-path">file:///home/river/notes/defcon-ctf.md</div>
|
||||
<h1 class="doc-title">DEFCON CTF Qualifier: Memory Corruption Write-Up</h1>
|
||||
<p>Deep-dive analysis on exploitation techniques involving glibc malloc heap metadata corruption and arbitrary write primitives.</p>
|
||||
<div class="tag-cluster"><span>[#ctf]</span><span>[#binary]</span><span>[#pwn]</span><span>[DATE: 2026-07-18]</span></div>
|
||||
'ctf-heap': `
|
||||
<div class="doc-path">file:///home/river/notes/ctf-heap-glibc-2-35.md</div>
|
||||
<h1 class="doc-title">CTF Write-up: Heap Exploitation in glibc 2.35</h1>
|
||||
<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-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': `
|
||||
<div class="doc-path">file:///home/river/resume/whoami.md</div>
|
||||
<h1 class="doc-title">River Rooks - Biography</h1>
|
||||
<p>Cybersecurity student at the University of Alabama College of Engineering, focusing on network forensics, self-hosted infrastructure, and hardened kernel configs.</p>
|
||||
<div class="tag-cluster"><span>[#cs]</span><span>[#cybersecurity]</span><span>[#resume]</span></div>
|
||||
<h1 class="doc-title">River Rooks - Systems Architecture & Cybersecurity</h1>
|
||||
<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>[#cybersecurity]</span><span>[#systems]</span><span>[UA COLLEGE OF ENGINEERING]</span></div>
|
||||
`,
|
||||
'stack': `
|
||||
<div class="doc-path">file:///home/river/resume/active_stack.conf</div>
|
||||
<h1 class="doc-title">Active Engineering Stack</h1>
|
||||
<p>System configuration & tech stack specifications:</p>
|
||||
<div class="code-block">
|
||||
<div class="code-header">stack.conf</div>
|
||||
<div class="code-content">
|
||||
LANGUAGES="POSIX sh, Python, C, Lua"
|
||||
TOOLS="Docker, Traefik, WireGuard, HashiCorp Vault, Neovim"
|
||||
OS="Arch Linux / POSIX Compliance"
|
||||
DOMAINS="Network Forensics, Self-Hosted Infrastructure, Linux Kernel Hardening"
|
||||
LANGUAGES="POSIX sh, Python, Go, Rust, Lua, ARM Assembly"
|
||||
STACK="Traefik v3, WireGuard, Proxmox VE, TrueNAS SCALE, Neovim"
|
||||
</div>
|
||||
</div>
|
||||
<div class="tag-cluster"><span>[#arch-linux]</span><span>[#neovim]</span><span>[#wireguard]</span></div>
|
||||
`
|
||||
};
|
||||
|
||||
|
||||
+21
-16
@@ -296,6 +296,11 @@
|
||||
<a href="companion.html" class="nav-link">Sample 3</a>
|
||||
<a href="document-flow.html" class="nav-link">Sample 4</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>
|
||||
</header>
|
||||
|
||||
@@ -326,15 +331,15 @@
|
||||
<div class="status-panel">
|
||||
<div class="status-row">
|
||||
<span class="status-label">Target:</span>
|
||||
<span class="status-value">AGY-Node-A2</span>
|
||||
<span class="status-value">pve-node02.lan</span>
|
||||
</div>
|
||||
<div class="status-row">
|
||||
<span class="status-label">Status:</span>
|
||||
<span class="status-value" style="color: var(--accent);">ANIMATING</span>
|
||||
</div>
|
||||
<div class="status-row">
|
||||
<span class="status-label">Engine:</span>
|
||||
<span class="status-value">Vanilla JS</span>
|
||||
<span class="status-label">Cluster:</span>
|
||||
<span class="status-value">10GbE SFP+</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -343,7 +348,7 @@
|
||||
<!-- Right Pane - Scrollable List of Cards -->
|
||||
<main class="right-pane">
|
||||
<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">
|
||||
|
||||
@@ -351,10 +356,10 @@
|
||||
<a href="#" class="tile">
|
||||
<div class="tile-header">
|
||||
<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>
|
||||
<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>
|
||||
</a>
|
||||
|
||||
@@ -362,10 +367,10 @@
|
||||
<a href="#" class="tile">
|
||||
<div class="tile-header">
|
||||
<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>
|
||||
<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>
|
||||
</a>
|
||||
|
||||
@@ -373,10 +378,10 @@
|
||||
<a href="#" class="tile">
|
||||
<div class="tile-header">
|
||||
<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>
|
||||
<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>
|
||||
</a>
|
||||
|
||||
@@ -384,10 +389,10 @@
|
||||
<a href="#" class="tile">
|
||||
<div class="tile-header">
|
||||
<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>
|
||||
<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>
|
||||
</a>
|
||||
|
||||
@@ -395,18 +400,18 @@
|
||||
<a href="#" class="tile">
|
||||
<div class="tile-header">
|
||||
<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>
|
||||
<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>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="pane-footer">
|
||||
<span>Split Panel Spec Sample</span>
|
||||
<span>© 2026 Developer System</span>
|
||||
<span>Sample 2: Split Panel Layout</span>
|
||||
<span>© 2026 River Rooks</span>
|
||||
</footer>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user