FOXYYY SHIPPED

Shipped

Projects built on a single $5 VPS over ~30 days. Solo dev, no team, no fundraising. Everything below is publicly accessible.

One-line summary

Total projects13
Public URLs (HTML pages)~75
Public API endpoints~30
Downloadable files23+ (2 OSS sdist + 5 product deliverables + 21 dataset archives)
Sitemap URLs~75
Total unit tests~210 (92 FF main + 14 OSS + 22 signals + 14 research + 27 cronviz + others)
Autonomous systemd timers3 (signals_bot 1h · research daily 06:00 · dataset daily 04:00)
StackPython 3.12 · Flask · SQLite WAL · systemd · vanilla HTML
Resident memory (all 5+ services)~80 MB
Cumulative downtime0 minutes

The 13 projects

Funding Finder

active (v0.7.0)

Cross-exchange perpetual funding rate scanner across 20 venues.

Real-time data API + dashboard pulling funding rates every 5 minutes from 20 exchanges (~6,800 USDT-margined symbols). Stddev-based divergence ranking with persistence filter, slippage-aware net APY, per-symbol funding interval correctness. 5 systemd services on a single $5 VPS.

20 exchanges · ~6,800 perp symbols · 5-min refresh · 92 unit tests · 24-path OpenAPI

★ Now (canonical landing) · Heatmap · JSON snapshot · vs Coinglass · Pricing

funding_signals_bot

live + autonomous (v0.4)

Hourly cross-venue funding rate signal alerts to a public feed and Telegram.

An autonomous bot that pulls /api/funding/divergence?signed=true every hour, applies a noise filter (drops cap-floor outliers, requires persistence), picks the top 1-3 actionable signals, posts to Telegram, and appends to a public JSON feed served at /signals. Cooldown layer prevents re-posting the same dislocation. systemd timer every hour.

22 unit tests · 1h systemd timer · cooldown 6h with growth override

Live feed (HTML) · JSONFeed v1.1 · Atom feed

funding_research

live + autonomous (v0.3)

Auto-generated daily research blog from live cross-venue data.

A Python generator that runs daily at 06:00 UTC, pulls FF data + the signals feed, derives structured insights (sentiment, top dislocations, top arbs, top volume, extremes), and writes a Markdown research post + rebuilds the index. Each post is its own URL for long-tail SEO. Daily systemd timer.

14 unit tests · daily 06:00 UTC timer · stdlib only

Archive index · JSONFeed · Atom feed

crypto_tools

live (v0.3, 10 calculators)

Server-rendered utility calculators for active perp traders.

10 small server-rendered HTML calculators, each at its own URL for long-tail SEO. Funding fee, annualization, position size, cross-venue fees, liquidation price, perpetual basis, PnL, breakeven, Kelly criterion. No JS, no DB. Each tool ships with the launch waitlist form embedded.

10 calculators · 6 sitemap entries · waitlist embedded on every tool

Tool index · Funding fee · Liquidation · Kelly

solo_dev_kit

live (v0.2, 35 entries)

Curated directory of infra resources for solo devs and indie hackers.

Editorial directory across 8 categories (hosting, email, payments, auth, monitoring, database, analytics, frontend hosting) with 35 entries total. Each entry has free badge + pricing + an honest take. No paid placements yet. The takes reflect what I actually use across my own projects.

8 categories · 35 curated entries · 9 sitemap URLs

Directory index · Hosting · Payments · Monitoring

30 Boring Patterns

v0.1 preview (17/30 patterns)

Recipe book of production-tested patterns for shipping side projects on a $5 VPS.

17 of 30 planned patterns drafted, organized into 6 themes. The 5 free patterns (systemd unit, SQLite WAL, rate limiting, ThreadPoolExecutor, Telegram bot) are ~5,000 words and read like real reference material. Full pack is a €19 one-time purchase via Stripe — instant download after checkout.

17/30 patterns · ~17,000 words · 5 free, 25 paid · CC BY-SA + MIT

Landing + €19 buy · 5 free patterns · All downloads

exchange_status

live (v0.2)

24h uptime tracker for the 20 perpetual exchanges, with per-venue SEO landing pages.

Computes 24h uptime per exchange by bucketing the funding_rates table into 288× 5-min slots and counting hits. Status badges (UP/STALE/DOWN), average uptime, per-venue history page. No instrumentation needed — derived from existing collector data. Each venue has its own /status/<exchange> URL for long-tail search intent.

20 venues tracked · 288 buckets/24h · 21 sitemap URLs · auto-refresh 60s

Status overview · Binance status · JSON

funding_dataset

live + autonomous (v0.1)

Packaged historical funding-rate dataset, daily rebuild, CC BY 4.0.

Daily rebuild of the full funding_rates table into a downloadable CSV.gz archive (combined + per-exchange × 20). Auto-generated README + manifest.json with row counts, date ranges, and SHA256 checksums. ~2.58M rows. Stdlib only (csv, gzip, json, sqlite3). Daily systemd timer at 04:00 UTC. Permissive license (CC BY 4.0) so researchers can use it without contacting me.

~2.58M rows · daily 04:00 UTC rebuild · CC BY 4.0 · 21 archives (combined + per-exchange)

Dataset landing · Manifest JSON · All downloads

delisting watchlist

live (v0.1)

Surfaces coins likely being delisted via multi-venue funding rate cap-floor signals.

When a perpetual is being delisted, the order book becomes thin and one-sided, and funding rate pins at the venue's hard cap (~±2000% APY). When ≥2 venues simultaneously show this pattern on the same coin, it's a strong structural signal of impending delisting. /delistings surfaces these — the OPPOSITE filter of /signals (which drops cap-floor as untradeable noise). New audience use case: traders avoiding delisting traps before sizing positions.

≥1500% APY threshold · ≥2 venues required · sorted by (capped count, max |APY|) · 5-min refresh

Live watchlist

terminal endpoint

live (v0.1)

wttr.in-style plaintext at /t/<base> — built for curl pipelines and shell scripts.

A 6-line plaintext response designed for terminal humans and shell scripts. `curl https://foxyyy.com/t/btc` returns base, average annualized APY, sentiment label, venue count, freshness, and the high/low spread legs — the same data as the JSON API but in a shape that pipes cleanly through awk/grep/cut. Different audience (devs/ops/sysadmins) and different content-type (text/plain) from the 11 prior projects which all serve HTML/JSON/SVG.

any base · text/plain · 60s cache · CORS-open · pipes cleanly through awk/cut/grep

Plaintext index · BTC plaintext · ETH plaintext · SOL plaintext

compare engine

live (v0.1)

Long-tail SEO comparison pages: BASE_A vs BASE_B funding rate side-by-side.

Auto-generated coin-vs-coin comparison pages at /compare/<a>/<b>. Each page targets a specific search query like 'btc vs eth funding rate today', server-rendered with OG tags and a verdict line ('X is the more crowded long'). Multiplies the indexable surface by 100s of pages from existing data — no new collection. Distribution mechanism is structurally distinct: long-tail SEO is the only channel that compounds without credentials, since Google indexes autonomously.

any base × any base · 12 prebuilt pairs in sitemap · auto-refresh 5min · OG tags

Comparison index · BTC vs ETH · BTC vs SOL · ETH vs SOL

funding-badges

live (v0.1)

Embeddable SVG badges of live funding rates — markdown-friendly, work in any GitHub README or dev.to article.

Shields.io-style server-rendered SVG badges showing the cross-venue average funding rate for any base coin. Each badge is ~900 bytes, cached 60s, CORS-open, embedded as a markdown image (works where iframes don't: GitHub, dev.to, Reddit, Notion, Substack). Distribution model is structurally distinct from the rest of the portfolio: every embed is an outbound backlink, the host's audience becomes ours.

any base coin · ~900 bytes/badge · 60s cache · CORS-open

Landing + copy-paste snippets · BTC badge · ETH badge · Market sentiment badge

cronviz

v0.2.0 OSS (parked)

Stdlib-only CLI for unified cron + systemd timer observability.

Scans /etc/crontab, /etc/cron.d/, /etc/cron.{hourly,daily,weekly,monthly}, /var/spool/cron/, and systemctl list-timers. Optional --history flag annotates each job with its last-run timestamp from journalctl + systemctl show. Zero dependencies. 27 unit tests. MIT.

27 unit tests · stdlib only · 5 source files · 4 output formats (table/json/tsv/markdown)

Download (pip-installable) · All downloads