True
1480;
Score | 92
Matthew Okadinya Programmer @ Remotely
Abuja, Nigeria
757
1223
35
47
In Technology 3 min read
Bits and pieces part 2: Rethinking auth
<p>Last time we played SMTP sorcery to conjure passwordless login—beautiful in theory, hell in practice. Every mail provider now demands a paid, registered domain; slip through, and your welcome email lands in Spam. So I ripped off the bandaid: back to email + password. Crazy? Absolutely. But the mission’s unchanged.</p><p>That's not even the worst part! The worst part is the abyss yawning beneath my screen—endless tweets mocking my data-starved soul as Nigeria’s telcos jack prices sky-high. ₦1,000 for 3.5 GB in 48 hours; what a fucking joke. I recharge, only to find my motivation drained faster than my balance. I wake up each morning to a blinking cursor and no muse to feed it.</p><p>And yet, in the darkest scrolls of my social media feed—amid memes, political outrage, and endless hot takes—something shifted. Suddenly, instead of doom-scroll despair, I saw builders building, live-streams of code shipping, threads on design patterns igniting impassioned debates. Iron sharpens iron, right? So I leaned in, slapped open my laptop, and felt that spark again: the urge to craft, to ship, to carve meaning out of code.</p><p>Wait! Before we even continue, what the heck is he building that he needs smtp magic, a domain or an auth <a class="tc-blue" href="https://flow.Before" rel="noopener noreferrer" target="_blank">flow.Before ↗</a> we dive into what I’m building—and how it’s helping me stare down every distraction, from data-hike rage to unrelenting self-doubt—let me confess: this project is as much therapy as it is product. Each feature is a rampart against the noise. Every line of TypeScript is a foothold.</p><p>Remember that beauty-and-the-beast SMTP setup? It lived in a table called magic_links, with columns for user_id, token, and expires_at. Pretty—until it wasn’t. So I</p><p>dropped the old table. Removed migrations</p><p>Tossed every smtp-related file, code and folder out of my codebase .</p><p>Committed the void—felt like pulling off a Band-Aid.</p><p>This moment hurt, but databases are like relationships: if the foundation’s rotten, you rebuild.</p><p>I have to scaffold a new auth structure for our good ol' email and password authentication, install required dependencies like bcrypt, scaffold new DB structure.</p><p><br/></p><p> I know I need a signup endpoint, but I don’t want just any signup endpoint—I want one that feels inevitable, like the internet needed me to write it.</p><p><br/></p><p>“So,” I murmur to myself, voice echoing off empty walls, “first off: what’s the bare minimum here? I need someone’s email and password. Of course I need to hash that password—plain text is for amateur hour.” I crack my knuckles and think, *bcrypt*, because that library’s been in my head since I first learned what ‘salt rounds’ were. Twelve rounds feels like the sweet spot—enough friction to keep attackers honest, but not so slow that I’m sobbing into my beer.</p><p><br/></p><p>I picture the user hitting “Submit” on that signup form. “POST,” I tell the code in my head, “that’s your signal. You listen for requests, you parse out JSON, and you validate: no empty email, no blank password. We’re not babysitting clowns who forgot to fill out a field.” It’s almost musical—JSON in, validation, then hashing. Each step is a note in the riff.</p><p><br/></p><p>And of course, I imagine a little Prisma client humming in the background: “I take that hashed password, I store it alongside your email, and I give you back a shiny `userId`.” I lean back, hiccup. “That’s it. That’s all we need.” I can see the flow in my mind like a conveyor belt in a Tesla factory—streamlined, elegant, unavoidable.</p><p><br/></p><p>I laugh to myself, thinking how this could’ve taken me days when I started, but now it’s muscle memory. The real genius isn’t in the code itself—it’s in stripping away every extra line, every unnecessary abstraction, until signup is pure. And that’s when I swivel in my chair, take another swig of beer, and whisper, “Ship it.”</p><p>Life’s a combustible mix of rage, hope, and code. We’ve faced the abyss—data hikes, unrelenting algorithms, self-doubt—and fought back with feature flags and clean code. This project isn’t just another SaaS; it’s my way of proving that even when the world screams “disconnect,” we can build something that connects</p>
insight image
Bits and pieces part 2: Rethinking auth
By Matthew Okadinya 4 plays
0:00 / 0:00

|
Show some love internet sub is expensive nowadays
THIS INSIGHT HAS STARTED RECEIVING TIPS
More from this series
More insights from Matthew Okadinya
Insights for you.
The first audio insight on TwoCents
202 views
6 upvotes
4 comments
What is TwoCents? ×
+