| 3735 |
3735 |
"Framer Motion animations degrade gracefully: prefers-reduced-motion respected and no-JS fallbacks in place.", |
| 3736 |
3736 |
"Both processes — app and tunnel — run under PM2 with save/restore, making the deployment survive reboots." |
| 3737 |
3737 |
] |
|
3738 |
+ }, |
|
3739 |
+ { |
|
3740 |
+ "slug": "hfmarketdata", |
|
3741 |
+ "hero": { |
|
3742 |
+ "headline": "26.5 billion rows of market data, no key required", |
|
3743 |
+ "subheadline": "A full-history downloader, a DuckDB-over-Parquet data lake and an open REST API serving intraday bars and complete options chains at www.hfmarketdata.io." |
|
3744 |
+ }, |
|
3745 |
+ "overview": [ |
|
3746 |
+ "HF Market Data is an open high-frequency market data platform built end to end: ingestion, storage, API and documentation. A single-file downloader pulls everything FirstRate Data publishes — stocks, ETFs, futures, crypto, indices, FX and options — and converts it straight into a query-ready Parquet lake. The full ingestion completed as 745/745 jobs with zero data loss.", |
|
3747 |
+ "The data layer is deliberately radical: 26,464,775,098 rows across 558,814 zstd Parquet files, queried in place by DuckDB with predicate pushdown — no database server anywhere in the stack. Bars span five timeframes from 1-minute to daily, and options coverage runs 66/66 quarters since 2010 across 5,800+ US underlyings with quotes, implied volatilities and full Greeks.", |
|
3748 |
+ "On top sits an open, keyless REST API (FastAPI) serving JSON and CSV — up to 2 million rows per CSV request — with endpoints for bars, multi-ticker watchlists, point-in-time snapshots, options chains and contract histories. The same process serves a React 18 + Vite documentation platform with a full endpoint reference, request snippets in curl, Python and JavaScript, and live example responses." |
|
3749 |
+ ], |
|
3750 |
+ "stats": [ |
|
3751 |
+ { "value": "26.5B", "label": "Rows in the lake" }, |
|
3752 |
+ { "value": "558,814", "label": "Parquet files" }, |
|
3753 |
+ { "value": "350 GB", "label": "Lake size (zstd)" }, |
|
3754 |
+ { "value": "5,800+", "label": "Options underlyings" }, |
|
3755 |
+ { "value": "66/66", "label": "Options quarters since 2010" }, |
|
3756 |
+ { "value": "7", "label": "Asset classes" } |
|
3757 |
+ ], |
|
3758 |
+ "features": [ |
|
3759 |
+ { "icon": "Download", "title": "Full-history downloader", "description": "A single-file, fully resumable downloader ingests everything FirstRate Data publishes across a 745-job plan, with retries, a disk-space guard and a resume manifest." }, |
|
3760 |
+ { "icon": "Database", "title": "DuckDB-over-Parquet lake", "description": "558,814 zstd Parquet files — one per instrument or segment — queried in place with predicate pushdown, no database server required." }, |
|
3761 |
+ { "icon": "Globe", "title": "Open, keyless REST API", "description": "Every endpoint is public and key-free, returning JSON or CSV with precise start/end windows and up to 2 million rows per CSV request." }, |
|
3762 |
+ { "icon": "LineChart", "title": "Intraday to daily bars", "description": "OHLCV bars at 1min, 5min, 30min, 1hour and 1day across stocks, ETFs, futures, crypto, indices and FX, with split and dividend adjustments." }, |
|
3763 |
+ { "icon": "Layers", "title": "Complete options history", "description": "Every quarterly options archive since 2010 — quotes, bid/ask IV, open interest, volume and the full set of Greeks, 16 fields per row." }, |
|
3764 |
+ { "icon": "Clock", "title": "Point-in-time snapshots", "description": "Query a whole watchlist at one precise moment, or pull multi-ticker bars in a single call with per-ticker limits." }, |
|
3765 |
+ { "icon": "RefreshCw", "title": "Zero-loss ingestion", "description": "CSV converts to Parquet via DuckDB with raw archives deleted on the fly — 745/745 jobs completed with zero data loss." }, |
|
3766 |
+ { "icon": "BookOpen", "title": "Live documentation platform", "description": "A React 18 + Vite docs site with parameter tables, curl/Python/JavaScript snippets, live responses and a real-time dataset status page." } |
|
3767 |
+ ], |
|
3768 |
+ "techStack": [ |
|
3769 |
+ { "category": "Data", "items": ["Python", "DuckDB", "Parquet (zstd)", "pandas"] }, |
|
3770 |
+ { "category": "API", "items": ["FastAPI", "Uvicorn", "OpenAPI / Swagger"] }, |
|
3771 |
+ { "category": "Frontend", "items": ["React 18", "Vite 6", "Fraunces / Inter / JetBrains Mono"] }, |
|
3772 |
+ { "category": "Ops", "items": ["ngrok", "Single-process API + static serving", "Resume manifest state"] } |
|
3773 |
+ ], |
|
3774 |
+ "architecture": [ |
|
3775 |
+ { "title": "Ingest", "description": "frd_downloader.py works through a 745-job plan against the FirstRate Data API — options quarters since 2010, stocks and ETFs A–Z across all timeframes and adjustments, futures, crypto, indices and FX — fully resumable via a state manifest." }, |
|
3776 |
+ { "title": "Convert", "description": "Each downloaded archive is converted CSV-to-Parquet through DuckDB with zstd compression, one file per instrument or segment, and the raw zips are deleted on the fly to keep the footprint at 350 GB." }, |
|
3777 |
+ { "title": "Query in place", "description": "The API layer (FastAPI + DuckDB) queries the 26.5-billion-row lake directly with predicate pushdown into the Parquet row groups — no database server, no ETL into a warehouse." }, |
|
3778 |
+ { "title": "Serve openly", "description": "Keyless endpoints expose the live inventory, ticker discovery, OHLCV bars, watchlist snapshots and full options chains with Greeks, in JSON or CSV up to 2 million rows." }, |
|
3779 |
+ { "title": "Document and publish", "description": "The same process serves the React + Vite documentation platform, exposed publicly at www.hfmarketdata.io through ngrok." } |
|
3780 |
+ ], |
|
3781 |
+ "highlights": [ |
|
3782 |
+ "26,464,775,098 rows queried in place — no database server anywhere in the stack", |
|
3783 |
+ "745/745 ingestion jobs completed with zero data loss", |
|
3784 |
+ "Full US options history since 2010: 66/66 quarters, 5,800+ underlyings, quotes, IV and all Greeks", |
|
3785 |
+ "Open and keyless — no signup, no API key, JSON and CSV out of the box", |
|
3786 |
+ "Serves up to 2 million rows in a single CSV request", |
|
3787 |
+ "The entire pipeline is two Python files: a 661-line downloader and a 480-line API" |
|
3788 |
+ ] |
|
3789 |
+ }, |
|
3790 |
+ { |
|
3791 |
+ "slug": "hfchart", |
|
3792 |
+ "hero": { |
|
3793 |
+ "headline": "Every pixel drawn by hand. Zero dependencies.", |
|
3794 |
+ "subheadline": "A high-frequency financial charting platform built on a from-scratch canvas rendering engine — no TradingView, no chart library, no framework." |
|
3795 |
+ }, |
|
3796 |
+ "overview": [ |
|
3797 |
+ "HFChart is a catalogue-grade platform for high-frequency financial charts where every pixel is drawn by hand on a 2D canvas. There is no TradingView widget, no charting library, and no framework anywhere in the stack — the entire application weighs in at 4,805 lines of code with exactly zero dependencies, front end and server included.", |
|
3798 |
+ "Data flows straight from the open HF Market Data API (hfmarketdata.io), queried directly by the browser across 6 asset classes — indices, ETFs, stocks, futures, crypto, and FX — covering roughly 13,200 instruments. Fourteen chart types, from candlesticks and Heikin-Ashi to Renko, Kagi, Point & Figure, and dynamic percent-comparison of up to 4 symbols, are rendered by a custom engine with linear and log scales, multi-pane layouts, and full touch support including two-finger pinch-zoom.", |
|
3799 |
+ "Beyond charting, HFChart ships an Options Lab built on real historical option chains going back to 2010: dated chains as they traded that day, a multi-leg strategy builder with presets, exact payoff analysis with aggregated Greeks, and a day-by-day historical replay that marks positions to market using actual contract prices — not a Black-Scholes simulation. An export button generates a fully interactive, self-contained embed snippet that makes zero network requests." |
|
3800 |
+ ], |
|
3801 |
+ "stats": [ |
|
3802 |
+ { "value": "0", "label": "Dependencies (front + server)" }, |
|
3803 |
+ { "value": "14", "label": "Chart types" }, |
|
3804 |
+ { "value": "8", "label": "Technical indicators" }, |
|
3805 |
+ { "value": "~13,200", "label": "Instruments across 6 asset classes" }, |
|
3806 |
+ { "value": "18.3 KB", "label": "Full embed bundle, gzipped" }, |
|
3807 |
+ { "value": "4,805", "label": "Total lines of code" } |
|
3808 |
+ ], |
|
3809 |
+ "features": [ |
|
3810 |
+ { "icon": "LineChart", "title": "14 chart types", "description": "Candles, hollow candles, OHLC bars, line, step, area, baseline, Heikin-Ashi, Renko, Three-Line Break, Range Bars, Kagi, Point & Figure, and percent comparison — all hand-rendered." }, |
|
3811 |
+ { "icon": "Cpu", "title": "From-scratch canvas engine", "description": "A custom 867-line rendering engine handles panes, linear/log scales, axes, crosshair, and zoom/pan/pinch, with a high-density fast path that switches to hi-lo strokes below 2 px per bar." }, |
|
3812 |
+ { "icon": "BarChart3", "title": "8 built-in indicators", "description": "SMA, EMA, Bollinger, session VWAP with ±2σ bands, and volume profile with POC as overlays, plus RSI, MACD, and ATR in dedicated panes — every calculation implemented from scratch." }, |
|
3813 |
+ { "icon": "FlaskConical", "title": "Options Lab", "description": "Real historical option chains since 2010 with quotes, IV, open interest, and Greeks, a multi-leg builder with presets from covered calls to iron condors, and exact payoff analysis." }, |
|
3814 |
+ { "icon": "Clock", "title": "Real historical replay", "description": "Mark-to-market a strategy day by day through expiry using actual historical contract prices — with a slider, realized P&L, and daily Greeks — not a Black-Scholes simulation." }, |
|
3815 |
+ { "icon": "Package", "title": "Self-contained embeds", "description": "The export button generates an HTML snippet with the data baked in, so the pasted chart stays fully interactive while making zero network requests — one 18.3 KB gzipped script." }, |
|
3816 |
+ { "icon": "Split", "title": "Percent comparison mode", "description": "Overlay up to 4 symbols with dynamic rebasing on the first visible bar, so every zoom and pan recomputes relative performance on the fly." }, |
|
3817 |
+ { "icon": "Palette", "title": "Colorblind-safe by design", "description": "The classic green/red scheme is doubled by a blue/red pair that passes every palette-validator check (CVD ΔE 19.2, contrast ≥ 3:1 on both surfaces), with a fixed, never-recycled categorical series order." }, |
|
3818 |
+ { "icon": "Globe", "title": "Shareable URL state", "description": "Symbol, timeframe, chart type, indicators, theme, and comparison sets all encode into the URL, so any view — including Options Lab setups — can be shared as a link." } |
|
3819 |
+ ], |
|
3820 |
+ "techStack": [ |
|
3821 |
+ { "category": "Frontend", "items": ["Vanilla JavaScript", "Canvas 2D API", "Hand-written CSS design tokens (light/dark)", "Responsive layout with mobile drawer"] }, |
|
3822 |
+ { "category": "Server", "items": ["Python (pure stdlib, 109 lines)", "ThreadingHTTPServer", "Concatenated /embed.js bundle with mtime caching"] }, |
|
3823 |
+ { "category": "Data", "items": ["HF Market Data API (hfmarketdata.io)", "Client-side resampling (1h→4h, 1D→1W, 5min→15m)", "Capability detection via /v1/status"] }, |
|
3824 |
+ { "category": "Testing & Deployment", "items": ["node --test (10/10 passing on options-math.js)", "PM2 + ngrok on custom domain"] } |
|
3825 |
+ ], |
|
3826 |
+ "architecture": [ |
|
3827 |
+ { "title": "Static host & bundle route", "description": "A 109-line pure-stdlib Python server serves the app shell and exposes /embed.js — the full engine (transforms, indicators, renderers, engine, embed bootstrapper) concatenated into a single script with mtime-based caching." }, |
|
3828 |
+ { "title": "Direct browser data fetch", "description": "The browser queries the HF Market Data API directly via a 185-line client; timeframes missing from the data lake are derived client-side by resampling, and timeframe buttons auto-enable through /v1/status as the lake fills." }, |
|
3829 |
+ { "title": "Series transformation", "description": "Raw OHLC bars are reshaped by transforms.js into Heikin-Ashi, Renko (ATR-auto-sized bricks), Kagi, Point & Figure, Three-Line Break, and Range Bars before rendering." }, |
|
3830 |
+ { "title": "Canvas rendering pipeline", "description": "engine.js orchestrates panes, linear/log scales, axes, crosshair, and zoom/pan/pinch interactions while renderers.js draws all 14 chart types plus volume columns, bands, and the volume profile — pixel by pixel." }, |
|
3831 |
+ { "title": "Export & embed", "description": "The export button serializes visible bars, chart type, indicators, and settings into a self-contained snippet that embed-boot.js hydrates into a fully interactive chart with zero network requests; a live iframe variant (?embed=1) is also available." } |
|
3832 |
+ ], |
|
3833 |
+ "highlights": [ |
|
3834 |
+ "4,805 lines of hand-written code with exactly zero dependencies — front end and server", |
|
3835 |
+ "The complete interactive embed bundle ships at 18.3 KB gzipped (68.5 KB raw)", |
|
3836 |
+ "14 chart types and 8 indicators drawn pixel-by-pixel on a 2D canvas — no chart library, no framework", |
|
3837 |
+ "Options Lab replays real historical option chains since 2010 with actual mark-to-market, not a Black-Scholes simulation", |
|
3838 |
+ "Colorblind-safe up/down scheme validated at CVD ΔE 19.2 with ≥ 3:1 contrast on both surfaces", |
|
3839 |
+ "The entire production server is 109 lines of pure Python stdlib" |
|
3840 |
+ ] |
|
3841 |
+ }, |
|
3842 |
+ { |
|
3843 |
+ "slug": "tendril", |
|
3844 |
+ "hero": { |
|
3845 |
+ "headline": "Web ingestion that reaches what other crawlers can't", |
|
3846 |
+ "subheadline": "Tendril scrapes and maps the web from a residential Mac in real WebKit, returning deterministic Markdown and structured data you can regression-test." |
|
3847 |
+ }, |
|
3848 |
+ "overview": [ |
|
3849 |
+ "Cloud crawlers run in headless Chromium on datacenter IPs — and get blocked for it. Tendril takes the opposite bet: it runs on a residential Apple Silicon machine, in WebKit, Safari's actual engine, behind a real IP. Sites that block conventional scrapers often don't block Tendril at all.", |
|
3850 |
+ "Extraction is fully deterministic — zero LLMs in the pipeline. The same page always yields the same Markdown, which means golden-file tests, versioned extraction rules, and reproducible output that enterprise workflows can actually depend on. JSON-LD, OpenGraph, Readability with a density-based fallback, and hand-tuned Turndown rules do the work parsers were built for.", |
|
3851 |
+ "At its core sits a three-tier escalation router: every request starts at a cheap undici HTTP fetch with Safari-fidelity header ordering, and escalates toward a native WKWebView pool and a real Safari driver only on evidence of failure. The whole platform is live at www.ten-dril.com, hardened against SSRF, honouring robots.txt by default, and self-identifying with a bot User-Agent — stealth means matching a real browser's fingerprint, not hiding who you are." |
|
3852 |
+ ], |
|
3853 |
+ "stats": [ |
|
3854 |
+ { "value": "86", "label": "Hermetic tests passing, zero network" }, |
|
3855 |
+ { "value": "0", "label": "LLMs in the extraction path" }, |
|
3856 |
+ { "value": "3", "label": "Tiers in the escalation router" }, |
|
3857 |
+ { "value": "4", "label": "Public API endpoints" }, |
|
3858 |
+ { "value": "3", "label": "MCP tools exposed to agents" }, |
|
3859 |
+ { "value": "6", "label": "Workspace packages in the monorepo" } |
|
3860 |
+ ], |
|
3861 |
+ "features": [ |
|
3862 |
+ { "icon": "Fingerprint", "title": "Real-browser fidelity", "description": "WebKit on macOS ARM behind a residential IP is not a headless-Chromium signature, so sites that block other crawlers often let Tendril through." }, |
|
3863 |
+ { "icon": "FlaskConical", "title": "Deterministic extraction", "description": "No model inference anywhere in the pipeline — the same page always yields the same Markdown, so extraction is covered by golden-file tests." }, |
|
3864 |
+ { "icon": "Map", "title": "Map without rendering", "description": "Merges sitemaps, robots directives, homepage links, and /llms.txt into one deduplicated URL list in seconds." }, |
|
3865 |
+ { "icon": "Split", "title": "Three-tier escalation router", "description": "A pure, unit-tested shouldEscalate() function starts every request at cheap HTTP and escalates to WKWebView or real Safari only on evidence of failure." }, |
|
3866 |
+ { "icon": "Braces", "title": "Structured data harvest", "description": "JSON-LD, OpenGraph, and standard meta are parsed into a normalized structured object alongside clean Markdown and deduplicated links." }, |
|
3867 |
+ { "icon": "Bot", "title": "Agent-ready integrations", "description": "A single-file MCP server (tendril_scrape, tendril_map, tendril_status) and a drop-in Agent Skill plug Tendril into any AI agent with no npm install and no API key." }, |
|
3868 |
+ { "icon": "ShieldCheck", "title": "SSRF-hardened egress", "description": "Resolve-then-validate with IP pinning blocks private addresses and re-checks every redirect hop before any byte is fetched." }, |
|
3869 |
+ { "icon": "Scale", "title": "Fair by default", "description": "Identifiable bot User-Agent with a contact URL, full RFC 9309 robots.txt compliance, and per-host rate limiting are the defaults, not options." }, |
|
3870 |
+ { "icon": "Server", "title": "Self-hosted on Apple Silicon", "description": "Runs on a single Mac under PM2 with ngrok as the sole ingress, the API bound strictly to 127.0.0.1." } |
|
3871 |
+ ], |
|
3872 |
+ "techStack": [ |
|
3873 |
+ { "category": "Core", "items": ["TypeScript (strict)", "Node 22+", "Fastify 5", "pnpm workspaces", "Zod"] }, |
|
3874 |
+ { "category": "Fetch & Rendering", "items": ["undici (Tier 0 HTTP)", "WKWebView pool (Swift, Tier 1)", "Safari + safaridriver (Tier 2)"] }, |
|
3875 |
+ { "category": "Extraction", "items": ["linkedom", "Mozilla Readability", "Turndown", "JSON-LD / OpenGraph harvesting"] }, |
|
3876 |
+ { "category": "Infrastructure & Testing", "items": ["macOS ARM", "PM2", "ngrok reserved domain", "Vitest", "Pino"] } |
|
3877 |
+ ], |
|
3878 |
+ "architecture": [ |
|
3879 |
+ { "title": "Request intake", "description": "A POST to /v1/scrape or /v1/map hits the Fastify API, where Zod schemas validate the payload and SSRF checks resolve and pin the target IP before anything is fetched." }, |
|
3880 |
+ { "title": "Tier 0 HTTP fetch", "description": "undici fetches the page with Safari's exact header order, manual redirect handling with per-hop SSRF revalidation, and gzip/brotli decoding — the cheapest path that serves most traffic." }, |
|
3881 |
+ { "title": "Escalation decision", "description": "The pure shouldEscalate() function inspects status codes, challenge markers, and empty SPA shells; on evidence of blocking, the router escalates toward the WKWebView pool and real Safari tiers." }, |
|
3882 |
+ { "title": "Deterministic extraction", "description": "Raw HTML flows through a versioned pipeline — linkedom parsing, JSON-LD/OpenGraph harvest, Readability with a text-density fallback, and custom Turndown rules — producing Markdown, structured data, and links." }, |
|
3883 |
+ { "title": "Response & delivery", "description": "Every response is a uniform { success, data, error } envelope with an X-Request-Id header, served from a Mac where the API binds only to localhost and ngrok is the sole public ingress." } |
|
3884 |
+ ], |
|
3885 |
+ "highlights": [ |
|
3886 |
+ "Runs in real WebKit on a residential Mac — not a headless-Chromium datacenter signature", |
|
3887 |
+ "Zero LLMs in the extraction path: the same page always yields the same Markdown, verified by golden-file tests", |
|
3888 |
+ "86 hermetic unit and contract tests that pass with no network, on strict TypeScript with Result<T,E> error handling", |
|
3889 |
+ "Full RFC 9309 robots.txt parsing, identifiable bot User-Agent with contact URL, and per-host rate limiting by default", |
|
3890 |
+ "Single-file MCP server and Agent Skill make it a drop-in tool for Claude and any MCP-capable agent — no API key required", |
|
3891 |
+ "SSRF-hardened with resolve-then-validate IP pinning re-checked on every redirect hop" |
|
3892 |
+ ] |
|
3893 |
+ }, |
|
3894 |
+ { |
|
3895 |
+ "slug": "khaelor", |
|
3896 |
+ "hero": { |
|
3897 |
+ "headline": "The autonomous engineer whose every decision you can replay", |
|
3898 |
+ "subheadline": "KHAELOR understands first, designs second, implements third, and verifies always — writing every action, even the ones at 3 AM, into an append-only log you can fork, replay, and diff." |
|
3899 |
+ }, |
|
3900 |
+ "overview": [ |
|
3901 |
+ "KHAELOR is not another coding-agent clone. It is a terminal-native autonomous engineering agent built on a deliberate discipline — understand first, design second, implement third, verify always — enforced at runtime, not just in a prompt. Write tools stay locked behind phase gates until a design artifact is approved.", |
|
3902 |
+ "Every session is event-sourced: an append-only JSONL log with torn-write recovery and byte-exact replay, where the conversation, costs, diffs, and phases are all pure folds over the same history. That makes runs auditable by construction — you can /fork any checkpoint, /replay a run with another model in a throwaway worktree, and /sdiff the two runs.", |
|
3903 |
+ "Beyond the interactive TUI, khaelord is a persistent daemon that pursues structured, event-sourced goals on a schedule: throwaway worktrees, phase gates even at night, mandatory verification, hard budget ceilings, and an async approval queue where a suspended run costs zero. Every overnight decision is one line in a log you replay the next morning." |
|
3904 |
+ ], |
|
3905 |
+ "stats": [ |
|
3906 |
+ { "value": "698", "label": "Tests passing" }, |
|
3907 |
+ { "value": "40", "label": "Durable event types" }, |
|
3908 |
+ { "value": "11", "label": "Tools in the runtime" }, |
|
3909 |
+ { "value": "16 ms", "label": "Coalesced render frames" }, |
|
3910 |
+ { "value": "6", "label": "Capabilities no other CLI agent combines" }, |
|
3911 |
+ { "value": "0", "label": "Invented numbers — real API metadata only" } |
|
3912 |
+ ], |
|
3913 |
+ "features": [ |
|
3914 |
+ { "icon": "Workflow", "title": "Phase gates", "description": "Understand → design → implement is a runtime mechanism — write tools stay locked until a design artifact is approved, with strict, auto, or off modes." }, |
|
3915 |
+ { "icon": "CheckCircle2", "title": "Native verification", "description": "After each edit batch KHAELOR runs your own typecheck, tests, and lint, repairing failures in a bounded loop before handing back." }, |
|
3916 |
+ { "icon": "Split", "title": "Fork, replay, sdiff", "description": "Fork any checkpoint, replay a run with another model in a throwaway worktree, then diff the two runs side by side." }, |
|
3917 |
+ { "icon": "Network", "title": "Semantic repo index", "description": "The symbols and refs tools find definitions with signatures and map callers, callees, and importers before an edit — skeletons instead of whole files." }, |
|
3918 |
+ { "icon": "Brain", "title": "Memory with provenance", "description": "The agent maintains its own MEMORY.md, with every entry anchored to the exact session and event that produced it." }, |
|
3919 |
+ { "icon": "Boxes", "title": "Parallel worktrees", "description": "Spawn subtasks in isolated git worktrees with attenuated capabilities and supervised no-fast-forward merges — your working copy is never touched." }, |
|
3920 |
+ { "icon": "Clock", "title": "khaelord daemon", "description": "A persistent daemon runs structured, scheduled goals overnight with hard budget ceilings, mandatory verification, and an approval queue where a suspended run costs zero." }, |
|
3921 |
+ { "icon": "ShieldCheck", "title": "The honesty contract", "description": "Costs come from real API usage metadata, test results from real exit codes, and permissions are capability-based where silence is never consent." }, |
|
3922 |
+ { "icon": "Terminal", "title": "Custom ANSI renderer", "description": "Print-once scrollback, a bounded live region, 16 ms coalesced frames, and sub-millisecond input latency keep the TUI instantaneous while the model thinks." } |
|
3923 |
+ ], |
|
3924 |
+ "techStack": [ |
|
3925 |
+ { "category": "Core", "items": ["TypeScript", "Node.js ≥ 22", "ESM", "Small-kernel architecture (deriveNext as a pure fold)"] }, |
|
3926 |
+ { "category": "AI Runtime", "items": ["Anthropic SDK", "Streaming model events", "Isolated ModelClient interface", "Real usage-metadata cost accounting"] }, |
|
3927 |
+ { "category": "Terminal", "items": ["Custom ANSI renderer", "khaelis theme (obsidian + magma)", "OKLCH gradients", "truecolor → 256 → 16 → mono ladder"] }, |
|
3928 |
+ { "category": "Quality & Tooling", "items": ["Vitest (698 tests)", "ESLint", "tsc strict typechecking", "Mandatory file-header CI check"] } |
|
3929 |
+ ], |
|
3930 |
+ "architecture": [ |
|
3931 |
+ { "title": "Understand", "description": "The context engine builds tiered context from the semantic RepoGraph — symbols with signatures and reference maps of callers, callees, and importers — feeding the model skeletons instead of whole files." }, |
|
3932 |
+ { "title": "Design", "description": "Phase gates keep all write tools locked until the agent submits a design artifact and it is approved, so implementation never starts before a plan exists." }, |
|
3933 |
+ { "title": "Implement", "description": "The tool runtime executes 11 tools — including a 9-strategy edit replacer — through the Workspace, the single filesystem and process seam, under capability-based deny > ask > allow permissions." }, |
|
3934 |
+ { "title": "Verify", "description": "After each edit batch KHAELOR runs the project's own typecheck, tests, and lint with real exit codes, repairing failures in a bounded loop before claiming anything is done." }, |
|
3935 |
+ { "title": "Record and replay", "description": "Every step appends to a JSONL event log with torn-write recovery; the session state is a pure fold over 40 durable event types, enabling byte-exact replay, forking, and run-vs-run diffing." } |
|
3936 |
+ ], |
|
3937 |
+ "highlights": [ |
|
3938 |
+ "Six capabilities no other CLI agent ships together: phase gates, native verification, fork/replay/sdiff, semantic index, memory with provenance, parallel worktrees", |
|
3939 |
+ "Byte-exact session replay from an append-only JSONL log with torn-write recovery", |
|
3940 |
+ "698 passing tests behind a single npm run check with typecheck, lint, and header enforcement", |
|
3941 |
+ "khaelord runs autonomous overnight goals under hard budget ceilings — a suspended run costs exactly zero", |
|
3942 |
+ "Custom ANSI renderer delivers sub-millisecond input latency with 16 ms coalesced frames", |
|
3943 |
+ "Zero invented numbers: every cost, token count, and test result comes from real API metadata and real exit codes" |
|
3944 |
+ ] |
|
3945 |
+ }, |
|
3946 |
+ { |
|
3947 |
+ "slug": "spbgit", |
|
3948 |
+ "hero": { |
|
3949 |
+ "headline": "A personal GitHub, built from scratch", |
|
3950 |
+ "subheadline": "SPB Git is a self-hosted software forge where every repository is public and clonable, writes are owner-only, and the filesystem is the database." |
|
3951 |
+ }, |
|
3952 |
+ "overview": [ |
|
3953 |
+ "SPB Git is the canonical home for all of Simon-Pierre Boucher's repositories, live at git.spboucher.ai. It implements Git Smart HTTP v2 by hand — streamed upload-pack and receive-pack, anonymous clone and fetch, token-authenticated push, post-receive hooks, and zip/tar.gz snapshots — on a Node.js Fastify server with no SQL or NoSQL database anywhere.", |
|
3954 |
+ "The web UI is a server-rendered showcase designed to match GitHub's polish: pinned repos, an activity feed, a contribution heatmap, badge-perfect README rendering with mermaid diagrams and relative-image resolution, shiki-highlighted file browsing with line anchors, commits, diffs, blame, global search, dynamic Open Graph cards, and an Atom feed. Dark and light themes ship with self-hosted fonts and zero third-party requests.", |
|
3955 |
+ "Day-to-day, everything runs through the spbgit CLI — a terminal command center covering the full lifecycle from repo creation to multi-repo sync and GitHub-style release uploads with sha256 sidecars. Bare repos on disk are the source of truth, expensive renders are cached per repo-and-commit, and a push instantly busts and rewarms the cache." |
|
3956 |
+ ], |
|
3957 |
+ "stats": [ |
|
3958 |
+ { "value": "15", "label": "CLI commands" }, |
|
3959 |
+ { "value": "52", "label": "Weeks of contribution heatmap" }, |
|
3960 |
+ { "value": "200/min", "label": "Public API rate limit" }, |
|
3961 |
+ { "value": "14", "label": "Nightly backups retained" }, |
|
3962 |
+ { "value": "≥ 95", "label": "Lighthouse performance target" }, |
|
3963 |
+ { "value": "0", "label": "Databases — filesystem is the store" } |
|
3964 |
+ ], |
|
3965 |
+ "features": [ |
|
3966 |
+ { "icon": "GitBranch", "title": "Git Smart HTTP v2", "description": "Streamed upload-pack and receive-pack with anonymous clone and token-gated push, packfiles never buffered in memory." }, |
|
3967 |
+ { "icon": "Terminal", "title": "spbgit CLI", "description": "One terminal command center for init, create --push, clone --all, status, sync, releases, and a self-diagnosing doctor." }, |
|
3968 |
+ { "icon": "FileText", "title": "GitHub-grade README rendering", "description": "Badges, mermaid diagrams, task lists, footnotes, emoji shortcodes, and relative images all render pixel-perfect in dark and light themes." }, |
|
3969 |
+ { "icon": "Package", "title": "Releases with binary assets", "description": "DMG, pkg, and zip assets attach to git tags, stream to disk with sha256 sidecars, and download publicly per tag." }, |
|
3970 |
+ { "icon": "KeyRound", "title": "PAT-secured writes", "description": "Personal access tokens are argon2id-hashed at rest, revocable, and tracked with last-used timestamps — reads never need an account." }, |
|
3971 |
+ { "icon": "Search", "title": "Global search", "description": "A cache-backed inverted index searches repo names, descriptions, topics, and README content, refreshed on every push." }, |
|
3972 |
+ { "icon": "Braces", "title": "JSON API", "description": "Public reads and bearer-token writes at /api/v1 cover repos, languages, commits, tokens, and site-wide stats." }, |
|
3973 |
+ { "icon": "Database", "title": "Filesystem as the database", "description": "Bare repos are the source of truth, meta.json holds repo metadata, and every expensive artifact is cached per repo@sha and busted on push." }, |
|
3974 |
+ { "icon": "ShieldCheck", "title": "Hardened by design", "description": "Double path-traversal checks, strict Markdown sanitization, nosniff plus sandbox CSP on raw files, and loopback-only hook routes." } |
|
3975 |
+ ], |
|
3976 |
+ "techStack": [ |
|
3977 |
+ { "category": "Server", "items": ["Node.js 20+ (ESM)", "Fastify 5", "zod", "@fastify/rate-limit", "pino"] }, |
|
3978 |
+ { "category": "Rendering", "items": ["Nunjucks SSR", "markdown-it + GFM plugins", "shiki", "mermaid", "satori + resvg OG cards", "sanitize-html"] }, |
|
3979 |
+ { "category": "CLI & Auth", "items": ["commander", "picocolors", "native fetch", "argon2 PAT hashing"] }, |
|
3980 |
+ { "category": "Ops", "items": ["pm2", "ngrok custom domain", "vitest e2e", "eslint", "nightly backup cron"] } |
|
3981 |
+ ], |
|
3982 |
+ "architecture": [ |
|
3983 |
+ { "title": "Ingress via ngrok", "description": "The public domain git.spboucher.ai terminates TLS at an ngrok tunnel and forwards to the Fastify app on the host node." }, |
|
3984 |
+ { "title": "One server, four surfaces", "description": "Fastify routes every request to the SSR web UI, the /api/v1 JSON API, the /:repo.git Smart HTTP backend, or raw/archive file serving." }, |
|
3985 |
+ { "title": "Filesystem as source of truth", "description": "Bare repositories live under the git root, a single meta.json indexes descriptions, topics, and pins — no database process exists." }, |
|
3986 |
+ { "title": "Push-driven cache lifecycle", "description": "A post-receive hook hits a loopback-only route that busts caches, recomputes language stats, rewarms the README render, logs the activity feed, and regenerates the OG image." }, |
|
3987 |
+ { "title": "Resilient operations", "description": "pm2 keeps the server and tunnel alive across reboots, /healthz feeds monitoring, and a nightly cron archives repos and data, keeping 14 backups." } |
|
3988 |
+ ], |
|
3989 |
+ "highlights": [ |
|
3990 |
+ "Implements the Git Smart HTTP protocol by hand — clone works for any stranger, push is rejected without a PAT", |
|
3991 |
+ "Zero databases: bare git repos plus one meta.json, cached per commit SHA and invalidated by push hooks", |
|
3992 |
+ "README rendering built to be indistinguishable from GitHub, badges and mermaid included", |
|
3993 |
+ "spbgit sync commits, rebases, and pushes every workspace repo in one command", |
|
3994 |
+ "GitHub-style releases serve DMG downloads for the entire Zyquo app suite", |
|
3995 |
+ "SSR pages with self-hosted fonts and no render-blocking third-party requests, targeting Lighthouse 95+" |
|
3996 |
+ ] |
|
3997 |
+ }, |
|
3998 |
+ { |
|
3999 |
+ "slug": "spbdrive", |
|
4000 |
+ "hero": { |
|
4001 |
+ "headline": "Your files, your server, zero compromises", |
|
4002 |
+ "subheadline": "A private, self-hosted cloud drive that previews everything, shares anything, and never phones home." |
|
4003 |
+ }, |
|
4004 |
+ "overview": [ |
|
4005 |
+ "SPB Drive is a self-hosted Google Drive and Dropbox replacement designed for exactly one user. The entire drive sits behind a single argon2id-hashed password; the only public surfaces are share links you explicitly create. It runs live at drive.spboucher.ai from a Fastify server on a Mac Studio node, exposed through an ngrok custom domain.", |
|
4006 |
+ "At its core is a content-addressed blob store: every file is stored once by its sha256 hash, so identical files cost nothing extra, while a SQLite database (WAL mode, FTS5) maps the virtual folder tree onto blobs. Uploads are chunked and resumable in 8 MB slices, entire folder trees drag-and-drop with hierarchy preserved, and everything streams — nothing is ever buffered whole in memory.", |
|
4007 |
+ "Beyond storage, it is a universal previewer and a sharing machine. Video transcodes in the background to play anywhere, Office documents convert to PDF via headless LibreOffice, archives are browsable from the inside, and code highlights in 100+ languages. Any file or folder becomes a clean public URL with optional expiry, password, and download limits — and v2.0 added file versioning, an in-browser text editor, inbound file requests, and storage insights." |
|
4008 |
+ ], |
|
4009 |
+ "stats": [ |
|
4010 |
+ { "value": "27", "label": "Tests passing" }, |
|
4011 |
+ { "value": "100+", "label": "Code languages highlighted" }, |
|
4012 |
+ { "value": "8 MB", "label": "Resumable upload chunks" }, |
|
4013 |
+ { "value": "20", "label": "Versions kept per file" }, |
|
4014 |
+ { "value": "30 days", "label": "Trash retention" }, |
|
4015 |
+ { "value": "0", "label": "Third-party requests" } |
|
4016 |
+ ], |
|
4017 |
+ "features": [ |
|
4018 |
+ { "icon": "HardDrive", "title": "Content-addressed vault", "description": "Files are stored once by sha256 hash for free deduplication, organized in unlimited nested folders with tags, stars, and folder colors." }, |
|
4019 |
+ { "icon": "Eye", "title": "Universal previewer", "description": "Images, video, audio waveforms, PDF, Office-to-PDF, code, Markdown, CSV, notebooks, archives, fonts, and email all preview in-browser — with an elegant fallback for everything else." }, |
|
4020 |
+ { "icon": "Globe", "title": "Sharing machine", "description": "Any file or folder becomes an unguessable base58 URL with optional expiry, argon2 password, download limits, QR codes, Open Graph unfurls, and instant revocation." }, |
|
4021 |
+ { "icon": "Search", "title": "Full-content search", "description": "SQLite FTS5 indexes names, tags, and extracted file contents — it finds a word inside an uploaded PDF." }, |
|
4022 |
+ { "icon": "GitBranch", "title": "File versioning", "description": "Replacing or editing a file archives the previous content, up to 20 CAS-backed versions per file, browsable and restorable from the Info panel." }, |
|
4023 |
+ { "icon": "RefreshCw", "title": "Resumable uploads", "description": "Chunked 8 MB uploads survive interruptions and resume where they left off, with drag-drop of entire folder trees and paste-to-upload." }, |
|
4024 |
+ { "icon": "PenTool", "title": "In-browser editor", "description": "Edit code, Markdown, JSON, or CSV directly in the drive, with every save archived as a new version." }, |
|
4025 |
+ { "icon": "Terminal", "title": "Companion CLI", "description": "The spbdrive CLI handles list, upload, download, share, search, and one-way push sync from any terminal via API-token auth." }, |
|
4026 |
+ { "icon": "ShieldCheck", "title": "Hardened by default", "description": "Argon2id auth with lockout, hashed session ids, CSRF protection, sandboxed previews, and a strict self-only CSP with no third-party requests anywhere." } |
|
4027 |
+ ], |
|
4028 |
+ "techStack": [ |
|
4029 |
+ { "category": "Server", "items": ["Node.js 20+ (ESM)", "Fastify 5", "better-sqlite3 (WAL + FTS5)", "Nunjucks SSR", "pino", "zod"] }, |
|
4030 |
+ { "category": "Media & Previews", "items": ["sharp", "ffmpeg", "LibreOffice headless", "pdf.js", "Shiki", "wavesurfer.js", "SheetJS", "pdftotext"] }, |
|
4031 |
+ { "category": "Security", "items": ["argon2id", "signed base58 tokens", "double-submit CSRF", "CSP default-src 'self'", "sandboxed SVG/HTML"] }, |
|
4032 |
+ { "category": "Ops", "items": ["pm2", "ngrok custom domain", "rsync --link-dest backups", "vitest", "ESLint"] } |
|
4033 |
+ ], |
|
4034 |
+ "architecture": [ |
|
4035 |
+ { "title": "Edge & auth", "description": "An ngrok tunnel terminates TLS at drive.spboucher.ai and forwards to a Fastify server; every route except login, share pages, and healthz requires a session backed by a single argon2id-hashed password with per-IP lockout." }, |
|
4036 |
+ { "title": "Content-addressed storage", "description": "Uploads stream in 8 MB resumable chunks and are sha256-hashed into a content-addressed blob store, so identical bytes are stored exactly once; a SQLite nodes table maps the virtual folder tree onto blobs and garbage-collects at refcount zero." }, |
|
4037 |
+ { "title": "Preview pipeline", "description": "A small in-process job queue (concurrency 2) produces thumbnails, H.264 video transcodes, and LibreOffice PDF conversions, all cached by blob hash — each unique file is processed once, ever." }, |
|
4038 |
+ { "title": "Sharing & search", "description": "Signed base58 tokens serve polished public share pages with expiry, passwords, download caps, and ZIP-all folder streaming, while an FTS5 index over names, tags, and extracted text powers instant full-content search." }, |
|
4039 |
+ { "title": "Operations", "description": "pm2 keeps the server and tunnel alive across reboots; a nightly 02:30 backup writes a SQLite snapshot plus hardlinked blob copies, retaining 14 dailies and 8 weeklies, with a documented and tested restore procedure." } |
|
4040 |
+ ], |
|
4041 |
+ "highlights": [ |
|
4042 |
+ "Previews virtually everything — mkv transcodes to H.264, Office converts to PDF, archives browse from the inside, and unknowns get a graceful fallback card", |
|
4043 |
+ "Zero third-party requests anywhere: fonts, pdf.js, and wavesurfer are all self-hosted behind a strict CSP", |
|
4044 |
+ "Content-addressed storage makes deduplication free — identical files and file versions cost zero extra bytes", |
|
4045 |
+ "Search reaches inside file contents: PDFs, Office documents, and code are text-extracted and FTS5-indexed", |
|
4046 |
+ "Full companion CLI with chunked uploads, share management, and one-way push sync", |
|
4047 |
+ "Nightly hardlink-deduplicated backups with a restore procedure that has actually been tested" |
|
4048 |
+ ] |
|
4049 |
+ }, |
|
4050 |
+ { |
|
4051 |
+ "slug": "svgarden", |
|
4052 |
+ "hero": { |
|
4053 |
+ "headline": "Copy-ready SVG + CSS animations, taught properly", |
|
4054 |
+ "subheadline": "A searchable, zero-dependency bank of 74 self-contained animations where every snippet ships with a live customizer and a short lesson on how it works." |
|
4055 |
+ }, |
|
4056 |
+ "overview": [ |
|
4057 |
+ "SVGarden is a static-first web platform hosting a large, ever-growing library of SVG and CSS animations. Every animation is one self-contained .html file: paste it into a blank page and it works — no frameworks, no CDNs, no build step required by the snippets themselves. Each one carries a short \"How it works\" lesson, so the bank doubles as a course in modern SVG and CSS technique.", |
|
4058 |
+ "The bank currently holds 74 snippets across 14 categories — loaders, filters, backgrounds, scroll-driven scenes, charts, motion paths, text effects, and more — teaching 177 distinct techniques from feTurbulence and goo filters to @property sweeps, animation-timeline, and SMIL morphing. 67 of the 74 snippets need zero JavaScript, and cutting-edge CSS always sits behind @supports with a graceful static fallback and a documented browser-support caveat.", |
|
4059 |
+ "The platform is engineered to scale by design: adding an animation means adding one file, and the gallery, detail pages, category pages, search index, and tag filters all regenerate at build time. A validation script enforces attribution headers, YAML frontmatter, class scoping, self-containment, and a 150-line size cap on every build — and the site itself scores a perfect 100/100 on Lighthouse performance and accessibility." |
|
4060 |
+ ], |
|
4061 |
+ "stats": [ |
|
4062 |
+ { "value": "74", "label": "Copy-ready snippets" }, |
|
4063 |
+ { "value": "14", "label": "Categories" }, |
|
4064 |
+ { "value": "177", "label": "Distinct techniques taught" }, |
|
4065 |
+ { "value": "100/100", "label": "Lighthouse perf & accessibility" }, |
|
4066 |
+ { "value": "90%", "label": "JavaScript-free snippets (67/74)" }, |
|
4067 |
+ { "value": "0", "label": "Dependencies for visitors" } |
|
4068 |
+ ], |
|
4069 |
+ "features": [ |
|
4070 |
+ { "icon": "Package", "title": "Self-contained snippets", "description": "Every animation is one .html file with inline styles that renders correctly when pasted into a blank page — no external assets, ever." }, |
|
4071 |
+ { "icon": "Search", "title": "Instant client-side search", "description": "Lazy-loaded Fuse.js searches titles, tags, and techniques with category and difficulty filters, all on a fully static site." }, |
|
4072 |
+ { "icon": "Palette", "title": "Live customizer", "description": "Controls auto-generated from each snippet's frontmatter tweak --sg-* custom properties in real time and rewrite the code block and clipboard output to match." }, |
|
4073 |
+ { "icon": "BookOpen", "title": "A lesson in every snippet", "description": "Each animation ships with a genuine \"How it works\" explanation, turning the bank into a hands-on classroom for 177 techniques." }, |
|
4074 |
+ { "icon": "Sparkles", "title": "Cutting-edge CSS, safely", "description": "Modern features like @property, animation-timeline, :has(), and linear() sit behind @supports with static fallbacks and rendered browser-support notes." }, |
|
4075 |
+ { "icon": "ShieldCheck", "title": "Validation that fails the build", "description": "A validation script enforces attribution headers, frontmatter, sg- class scoping, self-containment, and the 150-line cap on all 74 snippets before Astro builds." }, |
|
4076 |
+ { "icon": "Zap", "title": "Zero runtime cost", "description": "Astro emits pure static pages with Shiki highlighting done at build time, hitting 100/100 Lighthouse performance and accessibility." }, |
|
4077 |
+ { "icon": "Eye", "title": "Accessible by rule", "description": "Every SVG is either aria-hidden or given role=\"img\" with a title, and all snippets are dark/light safe by design." }, |
|
4078 |
+ { "icon": "Rocket", "title": "One-command deploys", "description": "A deploy script syncs to the node, runs npm ci and the build, restarts pm2, and health-checks both the local server and the public domain." } |
|
4079 |
+ ], |
|
4080 |
+ "techStack": [ |
|
4081 |
+ { "category": "Site & Build", "items": ["Astro 5 (static output)", "Shiki build-time syntax highlighting", "Vanilla CSS with custom properties", "Node.js ≥ 20"] }, |
|
4082 |
+ { "category": "Search & Snippets", "items": ["Fuse.js (lazy-loaded, client-side)", "YAML-in-comment frontmatter", "CSS custom properties (--sg-*)", "validate-snippets.mjs quality gate"] }, |
|
4083 |
+ { "category": "Serving & Ops", "items": ["Express with gzip/brotli and immutable caching", "pm2 (svgarden-web + svgarden-tunnel)", "ngrok reserved domain (www.svgarden.dev)", "/healthz build-info endpoint"] } |
|
4084 |
+ ], |
|
4085 |
+ "architecture": [ |
|
4086 |
+ { "title": "One file per animation", "description": "Each snippet lives at snippets/<category>/<slug>.html with an attribution header, YAML frontmatter (title, tags, difficulty, techniques, how_it_works, customizable), and the raw self-contained markup and CSS." }, |
|
4087 |
+ { "title": "Validation gate", "description": "validate-snippets.mjs runs before every build and fails it if any of the 74 snippets breaks the rules: headers, frontmatter, sg- scoping, self-containment, or the 150-line cap." }, |
|
4088 |
+ { "title": "Static generation", "description": "A single parser (src/lib/snippets.mjs) feeds Astro, which regenerates the gallery, per-snippet detail pages, category pages, tag filters, and the Fuse.js search index — 84 pages per build, never edited by hand." }, |
|
4089 |
+ { "title": "Interactive layer", "description": "Detail pages pair a sandboxed live preview with a customizer whose controls come straight from frontmatter; changes update the preview, the Shiki-highlighted code block, and the copy/download output with attribution attached." }, |
|
4090 |
+ { "title": "Production serving", "description": "An Express server (server.mjs) serves dist/ with compression and cache headers, kept alive by pm2 alongside an ngrok tunnel exposing https://www.svgarden.dev, with /healthz checks wired into deploy.sh." } |
|
4091 |
+ ], |
|
4092 |
+ "highlights": [ |
|
4093 |
+ "74 snippets teaching 177 distinct techniques across 14 categories — average snippet is just 57 lines", |
|
4094 |
+ "Perfect 100/100 Lighthouse scores for both performance and accessibility", |
|
4095 |
+ "90% of snippets (67/74) need zero JavaScript — and visitors need zero dependencies", |
|
4096 |
+ "Every copied snippet works pasted into a blank .html file, paste-tested per batch", |
|
4097 |
+ "Adding an animation is adding one file: 84 pages, search index, and filters regenerate at build time", |
|
4098 |
+ "The site eats its own dog food — vanilla CSS and custom properties, no Tailwind, no third-party trackers" |
|
4099 |
+ ] |
| 3738 |
4100 |
} |
| 3739 |
4101 |
]; |
| 3740 |
4102 |
|