Snapshot as of 2026-05-09. I specify versions where they affect reproducibility.
Editors / IDE
- WebStorm 2026.2 — primary IDE for TypeScript / Node.js / frontend. Refactoring, symbol navigation, debugging, built-in database tool — everything in one place, no context switching.
- PyCharm 2026.2 — primary IDE for Python (FastAPI, scripts, eval pipelines).
- DataGrip 2026.2 — separate instance for PostgreSQL work: schema, indexes, EXPLAIN plans, migrations in diff mode against drizzle-kit / alembic.
- Cursor — agentic editor for experimenting with code agents outside Claude Code.
- Claude Code (CLI) — daily driver for large tasks. Runs from any repo, context from
CLAUDE.md. WebStorm/PyCharm + Claude Code — two modes of work: manual surgical and agentic batch mode. - TMUX — terminal editor for quick edits.
AI / LLM
- Claude Code — daily driver. Opus 4.7 (1M context) for large refactorings and planning, Sonnet for most tasks, Haiku 4.5 for the RU→EN translation pipeline.
- Cursor — parallel AI editor; useful where the built-in chat is closer to the code than the CLI cycle.
- Anthropic, OpenAI, Gemini SDK — direct runtime calls when fine-grained token/latency control is needed (
/api/checkfor CodeChallenge, eval suites, retrieval services). - LangGraph — orchestration of multi-step agent workflows. Clear state machines on top of tool-use loops.
- LangChain — basic primitives (chains, prompts, output parsers, retrievers).
- LangSmith — traces, eval datasets, regression suites. Without it, agent quality degrades imperceptibly with each prompt tweak.
- n8n, Make — simple solutions for integrations and automation where a full service isn’t needed.
- MCP servers — GitNexus (code graph), llm-wiki (personal wiki), computer-use (when needed). Connected via
.mcp.json. - Skill / agent / hook system — fine-tuning Claude Code for each repo: see
.claude/. Pre-tool hooks, custom skills, subagents for parallel tasks.
Backend
- Python 3.13 + FastAPI — primary stack for production AI/agent services and retrieval pipelines. Pydantic validation, async-first.
- Node.js 24 LTS + TypeScript 5.9 — TS 6 currently breaks
@astrojs/checkandzod-to-ts. Fastify for high-throughput services; Express for legacy. - gRPC — inter-service communication. On the previous project, migrating 20+ microservices from Kafka/GraphQL Federation to gRPC gave −32% latency.
- REST, GraphQL, webhooks — where appropriate.
- Event sourcing on Apache Kafka — for high-throughput systems with audit requirements. Idempotency via outbox pattern and dedup keys.
- Astro 5 — public part and admin islands of this blog.
- Better-Auth — auth infrastructure with PostgreSQL adapter. Used on the admin panel + course progress sync.
- Zod 4 — all DTOs and validation on the TypeScript stack.
- Drizzle ORM + drizzle-kit — schema-first in TypeScript, migrations in SQL.
Data
- PostgreSQL 18 + PostGIS — the only database needed for 99% of tasks. FTS, JSONB, partial indexes, EXPLAIN-first approach.
- MongoDB, DynamoDB — where a document model or AWS-native approach is needed.
- Redis — caches, rate limiting, dedup keys, pub/sub for realtime.
- Apache Kafka — event sourcing, inter-service exchange on high load.
- RabbitMQ — task queues, RPC, fan-out.
- ORMs: Drizzle (TS), Prisma, Sequelize.
Cloud / orchestration
- AWS — EKS, S3, RDS, CloudWatch.
- Kubernetes — production workloads, HPA by custom metrics from Prometheus.
- Docker (multi-stage,
node:24-bookworm-slim) — no alpine for projects with native modules. Images in ghcr.io / private ECR. - GitLab CI/CD — on commercial projects.
- GitHub Actions — on opensource and personal projects. For the blog — image in ghcr.io.
- Dokploy — deploy the blog via webhook after successful push to main, migrations on container startup.
Observability
- OpenTelemetry → Collector → Prometheus → Grafana — full-stack telemetry, built from scratch at the previous job. SLO/SLI dashboards, alerts, error budgets. Gave −45% MTTR.
- Grafana Mimir — long-term storage for traces.
- Pino — structured logs, JSON to stdout.
- Sentry — production errors, source maps in build.
- Plausible — cookie-free analytics, DNT-aware. Cloud instance.
Content build (this blog)
- Pagefind — static index for ⌘K search. Built after
astro build. - Satori + Resvg — per-post / per-landing OG image and course certificate generation in PNG directly on the server.
- rehype-mermaid + Playwright — Mermaid diagrams render to SVG at build time. Cold start is cold, cache is aggressive.
- rehype-katex — LaTeX → KaTeX, build time.
- Vitest 3 + Playwright — unit + e2e tests.
If anything here interests you — write to a@artka.dev.