<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[AtendePraMim Blog]]></title><description><![CDATA[Insights on building SaaS at scale]]></description><link>https://staging-biz.atendepramim.net/en/</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 12:56:43 GMT</lastBuildDate><atom:link href="https://staging-biz.atendepramim.net/en/feed.xml" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><language><![CDATA[en]]></language><atom:link href="https://staging-biz.atendepramim.net/en/feed.xml" rel="self" type="application/rss+xml"/><item><title><![CDATA[Building SaaS Auth from Scratch]]></title><description><![CDATA[A deep dive into session management, 2FA, and magic links for multi-tenant applications]]></description><link>https://staging-biz.atendepramim.net/en/blog/building-saas-auth</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/building-saas-auth</guid><category><![CDATA[engineering]]></category><category><![CDATA[authentication]]></category><category><![CDATA[security]]></category><category><![CDATA[nextjs]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Building+SaaS+Auth+from+Scratch&amp;type=blog&amp;author=AtendePraMim+Team" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Getting Started with AtendePraMim]]></title><description><![CDATA[Learn how to set up your first project with the AtendePraMim platform]]></description><link>https://staging-biz.atendepramim.net/en/blog/getting-started</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/getting-started</guid><category><![CDATA[guides]]></category><category><![CDATA[getting-started]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[setup]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Getting+Started+with+AtendePraMim&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Scaling Your SaaS with Redis]]></title><description><![CDATA[How to use Redis for sessions, rate limiting, job queues, and real-time features]]></description><link>https://staging-biz.atendepramim.net/en/blog/scaling-with-redis</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/scaling-with-redis</guid><category><![CDATA[engineering]]></category><category><![CDATA[redis]]></category><category><![CDATA[infrastructure]]></category><category><![CDATA[performance]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Scaling+Your+SaaS+with+Redis&amp;type=blog&amp;author=AtendePraMim+Team" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Webhook signing with HMAC]]></title><description><![CDATA[Verifying the sender of incoming webhooks with HMAC signatures — the pattern Stripe, GitHub, and every mature provider uses.]]></description><link>https://staging-biz.atendepramim.net/en/blog/webhook-signing-hmac</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/webhook-signing-hmac</guid><category><![CDATA[engineering]]></category><category><![CDATA[webhooks]]></category><category><![CDATA[security]]></category><category><![CDATA[hmac]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Webhook+signing+with+HMAC&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Rate limiting strategies that actually scale]]></title><description><![CDATA[Token buckets, sliding windows, and Redis — the real patterns behind production rate limits.]]></description><link>https://staging-biz.atendepramim.net/en/blog/rate-limiting-strategies</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/rate-limiting-strategies</guid><category><![CDATA[engineering]]></category><category><![CDATA[rate-limiting]]></category><category><![CDATA[redis]]></category><category><![CDATA[performance]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Rate+limiting+strategies&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Multi-tenant database design]]></title><description><![CDATA[Shared schema, schema-per-tenant, or database-per-tenant — picking the model before the first row lands.]]></description><link>https://staging-biz.atendepramim.net/en/blog/multi-tenant-database</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/multi-tenant-database</guid><category><![CDATA[engineering]]></category><category><![CDATA[database]]></category><category><![CDATA[multi-tenancy]]></category><category><![CDATA[postgres]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Multi-tenant+database+design&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Background jobs with BullMQ]]></title><description><![CDATA[Queues, retries, and the outbox pattern — running async work in a way that survives crashes and redeploys.]]></description><link>https://staging-biz.atendepramim.net/en/blog/background-jobs-bullmq</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/background-jobs-bullmq</guid><category><![CDATA[engineering]]></category><category><![CDATA[bullmq]]></category><category><![CDATA[redis]]></category><category><![CDATA[jobs]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Background+jobs+with+BullMQ&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Stripe webhooks and idempotency]]></title><description><![CDATA[Why your invoice handler runs three times, and how to make that OK.]]></description><link>https://staging-biz.atendepramim.net/en/blog/stripe-webhook-idempotency</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/stripe-webhook-idempotency</guid><category><![CDATA[engineering]]></category><category><![CDATA[stripe]]></category><category><![CDATA[webhooks]]></category><category><![CDATA[idempotency]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Stripe+webhooks+idempotency&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Preventing SSRF in file uploads]]></title><description><![CDATA[Why your image proxy is one webhook away from probing the AWS metadata endpoint.]]></description><link>https://staging-biz.atendepramim.net/en/blog/preventing-ssrf-uploads</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/preventing-ssrf-uploads</guid><category><![CDATA[security]]></category><category><![CDATA[ssrf]]></category><category><![CDATA[security]]></category><category><![CDATA[uploads]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Preventing+SSRF+in+file+uploads&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Designing OAuth2 scopes]]></title><description><![CDATA[Why `user:read` isn't enough, and how to scope tokens without painting yourself into a corner.]]></description><link>https://staging-biz.atendepramim.net/en/blog/oauth2-scopes</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/oauth2-scopes</guid><category><![CDATA[security]]></category><category><![CDATA[oauth2]]></category><category><![CDATA[api]]></category><category><![CDATA[security]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Designing+OAuth2+scopes&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Session cookies vs JWTs]]></title><description><![CDATA[The debate is over. For browser auth in 2026, use encrypted session cookies.]]></description><link>https://staging-biz.atendepramim.net/en/blog/sessions-vs-jwts</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/sessions-vs-jwts</guid><category><![CDATA[security]]></category><category><![CDATA[sessions]]></category><category><![CDATA[jwt]]></category><category><![CDATA[auth]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Sessions+vs+JWTs&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[i18n in the App Router with next-intl]]></title><description><![CDATA[Locale routing, server translations, and the gotchas that bite every team once.]]></description><link>https://staging-biz.atendepramim.net/en/blog/i18n-app-router</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/i18n-app-router</guid><category><![CDATA[guides]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[i18n]]></category><category><![CDATA[next-intl]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=i18n+in+the+App+Router&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Zero-downtime Postgres migrations]]></title><description><![CDATA[Adding columns, renaming tables, and changing types without taking the site down.]]></description><link>https://staging-biz.atendepramim.net/en/blog/zero-downtime-migrations</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/zero-downtime-migrations</guid><category><![CDATA[engineering]]></category><category><![CDATA[postgres]]></category><category><![CDATA[migrations]]></category><category><![CDATA[database]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Zero-downtime+migrations&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Observability without the enterprise price tag]]></title><description><![CDATA[Structured logs, three golden metrics, and a couple of tracing spans — enough to debug production at 2am.]]></description><link>https://staging-biz.atendepramim.net/en/blog/observability-basics</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/observability-basics</guid><category><![CDATA[engineering]]></category><category><![CDATA[observability]]></category><category><![CDATA[logging]]></category><category><![CDATA[monitoring]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Observability+basics&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item><item><title><![CDATA[Email deliverability for SaaS products]]></title><description><![CDATA[SPF, DKIM, DMARC — and why your transactional email is landing in spam even though you did everything the docs said.]]></description><link>https://staging-biz.atendepramim.net/en/blog/email-deliverability</link><guid isPermaLink="false">https://staging-biz.atendepramim.net/en/blog/email-deliverability</guid><category><![CDATA[guides]]></category><category><![CDATA[email]]></category><category><![CDATA[deliverability]]></category><category><![CDATA[dns]]></category><dc:creator><![CDATA[Alexandre Awadallak]]></dc:creator><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><enclosure url="https://staging-biz.atendepramim.net/api/og?title=Email+deliverability&amp;type=blog" length="0" type="image/png"/><dc:creator>Alexandre Awadallak</dc:creator></item></channel></rss>