Halit Software← Home
Blog

All posts

Sep 14, 20266 min

Bots Are Signing Up Through Your Supabase OTP Endpoint, and Your SES Reputation Pays for It

Supabase creates a user and mails a code for any address it has not seen, so a script pointed at /auth/v1/otp turns your sender into a mail cannon. A honeypot cannot see it and project-wide CAPTCHA breaks every installed build of your mobile app. A Before User Created hook does the job.

Sep 6, 20264 min

Supabase Google Sign-In Fails Only on iOS: "Passed nonce and nonce in id_token should either both exist or not"

Google sign-in through Supabase worked on Android and on the web, and failed on iOS with a generic error. The iOS SDK now puts a nonce in every ID token, and the React Native wrapper never tells you what it was.

Jul 18, 20263 min

Fixing Amplify's "You Have Reached the Maximum Number of Apps" Error

Service Quotas said my limit was 25 apps. I had 5. Amplify still refused to create a new one. The real limit is hidden, and the fix takes two minutes.

Jul 18, 20266 min

Deploying umami on AWS Amplify: Three Build Errors and Their Fixes

Self-hosting umami analytics on AWS Amplify sounds simple until the build fails three times. Here is every error I hit and how I fixed each one.

Feb 1, 20265 min

Why I Migrated Away from WordPress

halit.ca scored 49 on Lighthouse with WordPress. Here's why I rebuilt it from scratch with Next.js and MDX.

Aug 22, 20257 min

How to Process Inbound Emails with AWS SES and Lambda

Building a serverless reply-by-email pipeline using AWS SES, S3, and Lambda to turn email replies into portal comments.

Nov 26, 20234 min

How to Upgrade Node.js Version in Amplify Build

Fixing Node.js version incompatibility in AWS Amplify when dependencies like jwt-decode require v18+.