<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Edict blog</title><description>Practical articles on mobile backends, written while Edict is in development.</description><link>https://edict.dev/</link><language>en</language><atom:link href="https://edict.dev/blog/rss.xml" rel="self" type="application/rss+xml"/><item><title>Backend context for an AI coding agent in React Native</title><link>https://edict.dev/blog/ai-agent-backend-context-react-native/</link><guid isPermaLink="true">https://edict.dev/blog/ai-agent-backend-context-react-native/</guid><description>A React Native repo shows an agent only the client. Add a project file, a typed API contract, a local backend and read-only tools for safer backend changes.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>react-native</category><category>ai</category><category>agents</category><category>architecture</category></item><item><title>Backend context that keeps AI coding agents safe</title><link>https://edict.dev/blog/backend-context-for-ai-coding-agents/</link><guid isPermaLink="true">https://edict.dev/blog/backend-context-for-ai-coding-agents/</guid><description>Agents make safer backend changes with declarative config, schemas as contracts, MCP tools, dry runs, reviewed migrations and least-privilege credentials.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>agents</category><category>architecture</category><category>security</category></item><item><title>Backend for an Expo app: auth, subscriptions and push</title><link>https://edict.dev/blog/backend-for-an-expo-app/</link><guid isPermaLink="true">https://edict.dev/blog/backend-for-an-expo-app/</guid><description>What an Expo app needs from a backend: verified sign-in tokens, server-side subscription checks, stored push tokens, and secrets kept out of the bundle.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>expo</category><category>react-native</category><category>authentication</category><category>subscriptions</category><category>push-notifications</category></item><item><title>Mobile background jobs: reminders, retries, queues</title><link>https://edict.dev/blog/background-jobs-for-mobile-backends/</link><guid isPermaLink="true">https://edict.dev/blog/background-jobs-for-mobile-backends/</guid><description>Run mobile reminders and background work using a Postgres queue, SKIP LOCKED, idempotency keys, backoff retries, time zone handling and metrics.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>background-jobs</category><category>postgres</category><category>push-notifications</category><category>architecture</category></item><item><title>Mobile API versioning and migrations for old apps</title><link>https://edict.dev/blog/mobile-api-versioning-and-migrations/</link><guid isPermaLink="true">https://edict.dev/blog/mobile-api-versioning-and-migrations/</guid><description>Old app versions stay installed for years. Use expand and contract migrations, additive API changes, minimum versions and feature flags to change safely.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>migrations</category><category>architecture</category><category>database</category><category>testing</category></item><item><title>Per-plan AI quotas without shipping your API key</title><link>https://edict.dev/blog/per-plan-ai-usage-quotas/</link><guid isPermaLink="true">https://edict.dev/blog/per-plan-ai-usage-quotas/</guid><description>Give free and paid users different AI limits by routing model calls through your own gateway, metering usage in Postgres, and never embedding a key in the app.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>architecture</category><category>postgres</category><category>subscriptions</category></item><item><title>Postgres row-level security for mobile app backends</title><link>https://edict.dev/blog/postgres-row-level-security-for-mobile-apps/</link><guid isPermaLink="true">https://edict.dev/blog/postgres-row-level-security-for-mobile-apps/</guid><description>Row-level security lets Postgres enforce that each user sees only their own rows. Covers policy design, common mistakes, performance, and testing policies.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>postgres</category><category>security</category><category>database</category><category>authentication</category></item><item><title>Push notification architecture for APNs and FCM</title><link>https://edict.dev/blog/push-notifications-architecture/</link><guid isPermaLink="true">https://edict.dev/blog/push-notifications-architecture/</guid><description>Model users, devices, tokens, and preferences as separate records, handle token invalidation and quiet hours, and send idempotently across APNs and FCM.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>push-notifications</category><category>architecture</category><category>ios</category><category>android</category></item><item><title>Why subscription entitlements belong on the server</title><link>https://edict.dev/blog/server-side-subscription-entitlements/</link><guid isPermaLink="true">https://edict.dev/blog/server-side-subscription-entitlements/</guid><description>A mobile app should not decide on the device what a user paid for. Verify purchases on a server and keep entitlements in a table fed by store notifications.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>subscriptions</category><category>payments</category><category>architecture</category><category>ios</category></item><item><title>Testing subscription states before a real purchase</title><link>https://edict.dev/blog/testing-subscriptions-locally/</link><guid isPermaLink="true">https://edict.dev/blog/testing-subscriptions-locally/</guid><description>Test trials, renewals, billing retry, expiry and refunds with StoreKit files, sandbox accounts and seeded backend state before any real money moves.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>subscriptions</category><category>testing</category><category>ios</category><category>android</category></item></channel></rss>