How to add GitHub and Google OAuth to a Next.js App Router SaaS without NextAuth -- handling the callback, exchanging the code for a user profile, upserting the user in Drizzle ORM, and issuing a JWT so the rest of your auth layer stays unchanged.