Stack

Birlikte ürettiğim araçlar ve her birinin yerini nasıl hak ettiği.

Beyaz tahta daha geniş bir ekran istiyor — notlar sırayla aşağıda.

not

Neden bu şekil

Seçimlerin çoğu tek bir kısıttan geliyor: bir side project, kimse kullanmazken ucuza çalışmalı ve çok kişi kullanırken de bozulmamalı.

Cloudflare'in ücretsiz katmanı API'yi, veritabanını ve storage'ı mevcut yükün tamamı için karşılıyor. Frontend'i Vercel karşılıyor. Kullanımla ölçeklenen tek kalem AI provider'ları, o da bilinçli bir tercih.

ne nerede çalışıyor
VercelCloudflare · ücretsiz katmanHTTPSfetch + sessionSQLput · getLLM çağrılarıKullanıcılartarayıcı · mobilNext.jsuygulama + sessionHono APIWorkersVeritabanıDrizzleStorageyüklemelerAI provider'larıölçülen tek kalemBackend1Veritabanı2Bulut1Dış1Model1

Diğer mesele şu: yüzeyi tek bir kişinin kafasında tutabileceği kadar küçük tutmak istiyorum. Gece 11'de bir şey bozulduğunda, bir microservices diyagramı açmak zorunda kalmadan düzeltebilmek istiyorum.

Bu stack'le gerçekten ürün çıkarırken edindiğim daha pratik notlar fisle.co/blog'da.

#meta
kaynak

modelcontextprotocol / typescript-sdk

github.com/modelcontextprotocol/typescript-sdk · TypeScript

Tool-use'un her uygulama için yeniden yazılan ısmarlama bir JSON sözleşmesi değil, bir protokol olmasını istiyordum. Bir tool'u bir kez yazıp herhangi bir client'ın onunla konuşabilmesi olayın özü; production'da MCP tool-use'un gerçekten kazandırdığı şey de bu.

#mcp#tools
kaynak

vercel / ai

github.com/vercel/ai · TypeScript

Provider'lar arasında tek bir arayüz. Farklı modeller farklı işlerde iyi ve maliyet/latency profili akışın neresinde olduğuna göre değişiyor; o yüzden task başına routing bir rewrite değil, bir config değişikliği olarak kalıyor.

#llm#providers
kaynak

langfuse / langfuse

github.com/langfuse/langfuse · TypeScript

Bir pipeline birden fazla provider çağırmaya başladığında "bugün daha kötü gibiydi" debug edilebilir bir cümle olmaktan çıkıyor. Trace'ler ve eval'ler, sürekli istediğim ama sürekli ertelediğim kısım.

#evals#observability
kaynak

strands-agents / harness-sdk

github.com/strands-agents/harness-sdk · Python

porti-code'un loop'unu tam da anlayabilmek için sıfırdan yazdım. Bu, aynı problemin bunu tam zamanlı yapan insanlar tarafından çözülmüş hâli — kendi cevabımla karşılaştırarak okumaya değer.

#agents
kaynak

vllm-project / vllm

github.com/vllm-project/vllm · Python

Bugün gönderdiğim her şey API-first. Bu, açık bir modeli self-host etmenin daha ucuz cevap hâline geleceği gün için koyduğum yer imi.

#inference#self-hosting
kaynak

anthropics / claude-code-action

github.com/anthropics/claude-code-action · TypeScript

AI'ı iş akışının içine sokma çabasının bariz bir sonraki adımı: agent'ın terminalimde değil, doğrudan pull request üzerinde review yapması.

#ci#agents
kaynak

vercel / next.js

github.com/vercel/next.js · JavaScript

App Router, varsayılan olarak Server Components. Client component'e yalnızca gerçekten state'e ya da bir browser API'sine ihtiyacım olan yerde iniyorum; bu da gönderdiğim JavaScript miktarını bir kaza değil, bir karar hâline getiriyor.

#react#rsc
kaynak

shadcn-ui / ui

github.com/shadcn-ui/ui · TypeScript

Boğuştuğum bir dependency değil, sahibi olduğum component'ler. Radix primitive'leriyle birlikte artık tam teşekküllü bir component library'ye elim gitmiyor — tasarım alışılmadık bir şey istediğinde dosyayı düzenliyorum.

#components#radix
kaynak

pmndrs / zustand

github.com/pmndrs/zustand · TypeScript

Küçük client state'i için. Provider ağacı yok, reducer merasimi yok. Bir state parçası bundan fazlasına ihtiyaç duyacak kadar büyükse, genellikle yeri server'dır.

#state
kaynak

TanStack / query

github.com/TanStack/query · TypeScript

Gerçek bir yaşam döngüsü olan client-side fetching için — mutation'lar, optimistic update'ler, invalidation. Server state client state değildir; bug'ların çoğu öyleymiş gibi davranmaktan çıkıyor.

#data-fetching
kaynak

honojs / hono

github.com/honojs/hono · TypeScript

Küçük, hızlı ve Web Standards üzerine kurulu; o yüzden Workers'ta evinde gibi. Tüm API yüzeyi kafanda tutabileceğin kadar küçük — alternatifi Express artı kimsenin okumadığı dört middleware paketi.

#workers#router
kaynak

oven-sh / bun

github.com/oven-sh/bun · Rust

Runtime, bundler, test runner ve package manager tek bir binary'de. Bir toolchain'de sevdiğim şeylerin çoğu, silebildiğim parçalardı.

#runtime#tooling
kaynak

better-auth / better-auth

github.com/better-auth/better-auth · TypeScript

Next.js uygulaması ile Workers API'si arasındaki session'lar için tek bir doğruluk kaynağı. Client ile server'ı senkron tutmak burada kendi yazacağım her şeyden daha kolay; auth da zaten en son akıllılık yapmak isteyeceğim yer.

#auth#sessions
kaynak

taskforcesh / bullmq

github.com/taskforcesh/bullmq · TypeScript

Extraction işinin yeri bir request'in içi değil. Zaten çalıştırdığım Redis'in üstünde retry, backoff ve dead letter queue.

#queues#redis
kaynak

drizzle-team / drizzle-orm

github.com/drizzle-team/drizzle-orm · TypeScript

Typed schema, codegen adımı yok ve ürettiği SQL, benim yazacağım SQL'in ta kendisi. Çıktısını okuyabildiğim bir ORM, debug edebildiğim bir ORM'dir.

#sql#types
kaynak

colinhacks / zod

github.com/colinhacks/zod · TypeScript

Sınırlarda validation; type'lar da yanında ayrıca bakılmak yerine schema'dan kendiliğinden çıkıyor. Aynı schema hem request'i doğruluyor hem de tool'u modele tarif ediyor — zod-2-jsonSchema'yı yazmam da böyle oldu.