Decide on a monthly, weekly, or daily dudget and use cash only.
So back in the day, I had a 10$ daily budget.
So every month I would withdrawal 310$, and take 10 every morning.
All plastic cards stay at home.
If I wanted to buy something for more than 10$, I would have to save up.
This way there are no surprises.
Also, it led me to DIY most of the non tech things in my life.
Better yet, get a credit card that earns rewards and treat it like a bill that must be paid each month. I have a Citi double cash card that's 2% rewards for all purchases that I use to pay for almost everything. I also have a citi custom cash card that we use for food exclusively, which is like 5% rewards for the most spent category. I keep upping the limit of both at every opportunity to try and keep spending below 10% monthly. Combined they generate at least 2k a year and I have a near 800 credit score and it's no different than using cash if you are responsible. Free money.