Issue #16 - The Spark and the Setup

How 'Time for Price' was born, and the first roadblocks I hit... hard.With Adrian Acosta

Welcome to the 3 new people joining this week! Feel free to reply to this email and let me know how I can make this newsletter more useful.

My recent article:

The Idea That Wouldn’t Let Go

Let me take you back.

I was scrolling through a product page online — something shiny, something tempting. $249. Not crazy expensive, but I paused. I thought to myself:

"How many hours of work is that actually costing me?"

That’s when it hit me — this should be automatic. What if I had a Chrome extension that showed me exactly how many work hours any price equated to based on my hourly wage?

And just like that, Time for Price was born.

A small, helpful idea…

...that would drag me into the deepest corners of AWS.

I’m really excited about this, but let me tell you… building it has been a journey.

BUILDING THE BACKBONE

The extension itself was straightforward.

But I wanted a simple landing page to explain what it does, collect interest, and maybe even grow an email list.

For that, I went with something familiar and clean: Java with Spring Boot.

The challenge? Hosting it.

I didn’t want shared hosting. I wanted it to scale and feel real. That’s when I picked AWS Elastic Beanstalk — the “easy” way to deploy full-stack apps.

Yeah... "easy."

I wrote about why I couldn’t use Vercel for this project on my last issue.

STEP 1: DEPLOYING THE SPRING BOOT APP

So I compiled the Spring Boot app into a .jar file — something like time-for-price-web-1.0.0.jar — and uploaded it into Elastic Beanstalk using the web console.

💡 Pro tip I learned the hard way:

If you're using Spring Boot, your app runs on port 8080 by default.

Elastic Beanstalk expects your app to respond on port 5000 — or whatever you configure. (I genuinely still don’t get why it does this.)

So in the Elastic Beanstalk environment settings, I added:

Boom. That did the trick.

For a moment, it actually worked. I had a live site!

But then came the dreaded lock icon 🔓 open,

which means, "Not Secure" warning.

SSL: THE START OF A SAGA

You can’t go live without HTTPS anymore. Chrome, or any browser during this era, literally shames your site if it’s not secure.

So I did what any sane person would do:

→ I opened AWS Certificate Manager (ACM)

→ Requested an SSL cert for my domain (timeforprice.com)

→ Verified ownership via DNS in Route 53

Done, right?

Nope.

Because now I had to figure out how to attach that certificate to my Elastic Beanstalk environment.

Spoiler: Elastic Beanstalk uses a Load Balancer under the hood.

So you have to configure that Load Balancer to use your SSL cert which I did not want to use because of, well… too expensive.

I’ll explain how I totally messed that up in Issue 2. But let’s just say, at this point… I thought everything needed to be rebuilt.

CLOSING THOUGHTS — THE REALITY OF “SIMPLE PROJECTS”

Let me be real:

I didn’t expect setting up a landing page to be this intense.

But here’s what I’ve learned: if it’s worth doing well, it’s going to get messy.

Next time, I’ll tell you how I accidentally nuked my Elastic Beanstalk environment thinking I had to — and what I should’ve done instead.

Stay tuned. It gets wild.

🎬 Teaser for Issue 2:

“It was all going fine until the green lock wouldn't show up. I panicked… and deleted the entire environment.”

Adrian Acosta

If you found this helpful, please consider subscribing to my newsletter for more useful articles and tools about software and web development. Thanks for reading!

Reply

or to participate.