Projects

Open-source tools built on practical principles: a single source of truth, explicit exceptions, and native concurrency first.

fastapi-forge

Python 3.12FastAPIredis.asynciopydantic

A production-ready async FastAPI template with clean layers (api/core/services/repos), typed config, and Redis used for three distinct concerns: caching, a Lua sliding-window rate limiter, and a distributed lock. Includes JSON logs with request-id, multi-stage Dockerfile and a CI pipeline enforcing quality gates.

MIT Read

redisjobs

Python 3.12redis.asynciopytestfakeredis

An async, Redis-backed job queue for Python. Delivery uses atomic LMOVE/BLMOVE leasing plus a reaper that re-schedules jobs from crashed workers (at-least-once). Includes retries with exponential backoff and jitter, a dead-letter queue, delayed/scheduled jobs, priorities, cooperative cancellation and structured logging.

MIT Read

debian-bootstrap

Python 3.11BashUFWfail2ban

An idempotent Debian 12 bootstrap: sudo user, hardened SSH, UFW, fail2ban, unattended security upgrades, Docker from the official repo, swap, NTP and systemd templates. Each stage checks state before applying and only changes what needs changing, with a full --dry-run and per-run logs.

MIT Read

loglens

Python 3.12contextvarsFastAPIaiohttp

Structured logging with correlation ids for asyncio/FastAPI/aiohttp. The id lives in a contextvar and is inherited by spawned tasks automatically. Production JSON output, colorful dev output, on-by-default redaction of secrets, and ready-made pure-ASGI middleware for FastAPI and aiohttp, with zero core dependencies.

MIT Read

async-web-collector

Python 3.12httpxselectolaxlxml

An async, dependency-light toolkit for collecting public web data politely: bounded concurrency, per-host rate limiting, retries with jitter honouring Retry-After, and robots.txt enforcement by default. Extracts via CSS selectors (selectolax) and XPath (lxml), exports to JSON or CSV, with a full YAML-driven CLI.

MIT Read

envguard

Python 3.10+pydantic-settingspytestpyproject

A pydantic-settings-powered library adding the pieces every app re-implements: profiles (dev/staging/prod) with clear load precedence, automatic secret detection and redaction from logs and repr, actionable errors that name the exact missing environment variables, and a CLI to generate and validate .env files.

MIT Read