Writing
Notes from the codebase.
Things I learn while shipping apps — Flutter patterns, architecture decisions, and the small details that are easy to get wrong.

Flutter Web: When It Makes Sense and When It Doesn't
An honest look at Flutter web: where it shines (dashboards, internal tools, app-like PWAs), where it struggles (SEO, content sites), and how to ship it well.
Read article →
Building a .NET API for a Flutter App with ASP.NET Core Minimal APIs
How I build a .NET backend for a Flutter app with ASP.NET Core minimal APIs: typed results, EF Core, JWT auth, ProblemDetails errors, pagination and Dart models.
Read article →
Production-Ready Authentication in Flutter: Tokens, Refresh and Routing
Production-ready authentication in Flutter: secure token storage, a dio interceptor that refreshes once, go_router redirects, Sign in with Apple and account deletion.
Read article →
My App Store and Google Play Release Checklist for Flutter Apps
The App Store and Google Play release checklist I use for Flutter apps: versioning, signing, privacy forms, account deletion, review notes, and staged rollouts.
Read article →
Firebase vs Supabase for Flutter Apps: How I Choose a Backend
Firebase vs Supabase for Flutter apps: documents vs Postgres, security rules vs RLS, offline support, pricing shapes and lock-in, plus when I pick each one.
Read article →
Deep Linking in Flutter with go_router: Universal Links and Android App Links
Set up deep linking in Flutter with go_router, iOS Universal Links and Android App Links: verification files, auth redirects, and testing with adb and simctl.
Read article →
Push Notifications in Flutter with FCM: Foreground, Background and Terminated States
A practical guide to push notifications in Flutter with Firebase Cloud Messaging: permissions, app states, tokens, Android channels, APNs setup and deep links.
Read article →
Local Databases in Flutter with Drift: Tables, Streams and Migrations
A practical guide to local databases in Flutter with Drift: choosing storage, defining tables, typed queries, reactive watch() streams, migrations and testing.
Read article →
Fixing Jank in Flutter Apps: A Practical Guide to Smooth 60fps Performance
How I find and fix jank in Flutter apps with profile mode and DevTools: UI vs raster thread, expensive builds, saveLayer, oversized images and blocking work.
Read article →
Slivers in Flutter: A Practical Guide to CustomScrollView
A practical guide to slivers in Flutter: CustomScrollView, SliverAppBar, SliverList, SliverGrid, sticky headers, and why slivers beat nested ListViews with shrinkWrap.
Read article →
A Git Workflow for Small Mobile Teams (1 to 5 Developers)
A practical Git workflow for small mobile teams: trunk-based vs GitFlow, short branches, small PRs, tags matching store versions, hotfixes and keeping secrets out of Git.
Read article →
Riverpod vs BLoC: How I Choose Flutter State Management in Production
Riverpod vs BLoC for Flutter state management: the same feature built both ways, how each is tested, and the questions I ask before picking one for a project.
Read article →