<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Ugur Aslim · Engineering Blog</title><description>Production notes on Python, FastAPI, React, security and AI engineering.</description><link>https://uguraslim.com/</link><item><title>Building Multi-Tenant SaaS with SQLAlchemy Row-Level Security</title><link>https://uguraslim.com/blog/building-multi-tenant-saas-with-sqlalchemy-row-level-securit/</link><guid isPermaLink="true">https://uguraslim.com/blog/building-multi-tenant-saas-with-sqlalchemy-row-level-securit/</guid><description>Implement tenant isolation at the database layer using SQLAlchemy&apos;s session management and PostgreSQL policies to prevent data leaks in production SaaS applications.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>Building Audit Logs That Don&apos;t Destroy Your Database: A Production Pattern</title><link>https://uguraslim.com/blog/production-audit-logging-postgresql/</link><guid isPermaLink="true">https://uguraslim.com/blog/production-audit-logging-postgresql/</guid><description>How to design scalable, queryable audit logs in PostgreSQL without performance degradation using partitioning, JSON columns, and smart indexing.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>Astro and Islands Architecture: Why Your Portfolio Doesn&apos;t Need React for Everything</title><link>https://uguraslim.com/blog/astro-islands-architecture/</link><guid isPermaLink="true">https://uguraslim.com/blog/astro-islands-architecture/</guid><description>Astro ships zero JavaScript by default and lets you opt in to interactivity exactly where you need it — through a pattern called Islands Architecture. Here&apos;s how it works, why it&apos;s fast, and when it&apos;s the right choice.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate></item><item><title>Building a Production AI Chat Widget in React: Floating UI, Live SQL Results, and Collapsible Query Blocks</title><link>https://uguraslim.com/blog/react-ai-chat-widget/</link><guid isPermaLink="true">https://uguraslim.com/blog/react-ai-chat-widget/</guid><description>How I built the AI chat widget in CitizenApp — a floating React component that sends natural language questions to Claude, optionally executes safe live SQL queries, and renders the results inline. Architecture decisions, pitfalls, and patterns that generalize.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate></item><item><title>My Cursor + Claude Engineering Workflow: A Real Project Walkthrough</title><link>https://uguraslim.com/blog/cursor-claude-engineering-workflow/</link><guid isPermaLink="true">https://uguraslim.com/blog/cursor-claude-engineering-workflow/</guid><description>Not a productivity tips list. A concrete walkthrough of how I use Cursor and Claude API through an entire feature — from architecture decision to shipped code — on a real FastAPI + React project.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate></item><item><title>Vercel + Render Hybrid Deployment: Why I Split My Stack (and How)</title><link>https://uguraslim.com/blog/vercel-render-hybrid-deployment/</link><guid isPermaLink="true">https://uguraslim.com/blog/vercel-render-hybrid-deployment/</guid><description>Running your React frontend on Vercel Edge and your FastAPI backend on Render Docker isn&apos;t just cost optimisation — it&apos;s an architecture decision with real production consequences. Here&apos;s the full breakdown.</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate></item><item><title>How I Use AI to Ship 3× Faster Without Cutting Corners</title><link>https://uguraslim.com/blog/ai-assisted-engineering/</link><guid isPermaLink="true">https://uguraslim.com/blog/ai-assisted-engineering/</guid><description>AI tools don&apos;t write your architecture — they amplify it. Here&apos;s exactly how I use Claude, Cursor and GitHub Copilot across a real production project, and where human judgment is irreplaceable.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>React 19 + TanStack Query: Patterns That Actually Work in Production</title><link>https://uguraslim.com/blog/react-19-tanstack-query-patterns/</link><guid isPermaLink="true">https://uguraslim.com/blog/react-19-tanstack-query-patterns/</guid><description>React 19 ships with new primitives — Actions, useOptimistic, use() — that change how you think about async state. Here&apos;s how they interact with TanStack Query v5, and which patterns I&apos;ve settled on after shipping with both.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item><item><title>JWT Refresh Token Rotation in FastAPI — The Right Way</title><link>https://uguraslim.com/blog/fastapi-jwt-rotation/</link><guid isPermaLink="true">https://uguraslim.com/blog/fastapi-jwt-rotation/</guid><description>Most JWT implementations have a silent security flaw: refresh tokens that never expire. Here&apos;s how to implement proper rotation with reuse detection in FastAPI.</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate></item><item><title>GDPR-Ready SaaS Architecture: What You Actually Need to Build</title><link>https://uguraslim.com/blog/gdpr-saas-architecture/</link><guid isPermaLink="true">https://uguraslim.com/blog/gdpr-saas-architecture/</guid><description>GDPR compliance isn&apos;t a checkbox — it&apos;s an architectural decision. Here&apos;s what needs to be in place at the infrastructure level before you write the first business logic line.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate></item></channel></rss>