Recently I launched a new web app called Inexpire. It’s something I’ve been kicking around for about a year but finally got it out the door. Since I’m a fan of “build in public”, let’s walk through the app.
What is Inexpire?
Inexpire.com is a web application designed to track expiration dates and inventory numbers of things in your house. Hopefully that doesn’t sound too boring… let’s try it again. Stop wasting food!
Just enter your food (or whatever you want to track the expiration of) and Inexpire will show you what you have in your fridge/pantry, how much you have, and when it expires.
The app is built for tracking food, but I also use it to track medicine, household project items (like screws/nails), laundry detergent, or anything else I might buy in bulk and need to track the quantity of.
Why would I use this? Why did you build this?
At the beginning of the pandemic, my family stocked up on canned goods and frozen foods and things we would need to keep the number of grocery trips low. I quickly realized that a lot of this food would go to waste if I wasn’t carefully keeping track of the expiration dates. I wanted to make sure I used the food before it expired. That gave me the original idea, but it still took a few months to start writing any code.
Then a few months ago, we started looking for a new house. We ended up buying a farm and I knew that the problem would only get bigger: now I’m dealing not just with canned goods expiring, but a huge amount of fresh produce that would need to be eaten or preserved. And then the preserved foods would have their own expiration timer. I would actually need something to track all of this.
How did you build Inexpire?
I started with an AWS-based serverless application. Using DynamoDB for storage and AWS Lambda for the backend, with a React frontend hosted on S3. And then my motivation dropped. I ran into some issues that required research, research that my brain did not want to do. It became a chore to manage the AWS console and deploy to Lambda and pick through the data in DynamoDB. React threw some problems my way, and my relationship with React is already not great. I shelved the project for a few months.
Finally when we bought the new house I knew I needed to get this done. I was writing for an audience of one, my only customer was myself. If it’s not fun, why force myself to do it?
So I re-wrote the whole thing in Ruby on Rails with Postgres as the database. I had it done and online in under 24 hours. I do think serverless is the way of the future, but for sheer speed of development, nothing beats Rails yet.
How are you using Inexpire?
I have a bottle of soy sauce in my fridge. I very rarely cook with soy sauce, and usually when I am going to make something with soy sauce I will buy another bottle. Now I have two bottles. By the time I make something with soy sauce again, one of those bottles is likely expired. I might just buy a third bottle to be safe. But with Inexpire.com, I can check if I have soy sauce at home (and when it expires) even if I’m at the store.
On the other hand, I go through a loaf or two of bread every week. The turnover is so high that it would take longer to track that on Inexpire than it would be worth. I don’t put staple food items in, just the items that will likely expire before I remember they exist.
And then as I’m using items in my kitchen, I will tell Inexpire that I just used two eggs. I am now out of eggs, and Inexpire adds them to my shopping list (inexpire.com/shopping). When I am at the store, I can see all the items that are out of stock, with a reminder to buy those items.
As I buy another dozen eggs, I go back to the eggs listing on Inexpire and add 12 to the quantity (and update the expiration date). They’re removed from my shopping list and ready to be tracked again.
Good question. I’m going to wait and see. I built Inexpire.com for myself, to track my own household items. So now I’m using it like a customer, and making bug reports/feature requests to myself. I don’t have a game plan, I don’t have a todo list, I don’t have a roadmap. The future is wide open, unless the app just works perfectly at version one. If that’s the case, I’m a happy customer and can work on other things.