I built a simple PWA to solve a specific problem I have on weekends: cooking large cuts of meat (Brisket/Pork Shoulder) that require 12+ hour cook times and have non-linear heating curves.
The Problem: Planning those lengthy cooks. Knowing when you should expect to light, wrap and pull is something i didn't want to think about.
The Solution: I built a backward-chaining calculator. You input the target eating time, and it calculates the entry points for "Light Fire," "Wrap," and "Pull" based on the meat weight and cooking temp. I also included a logbook for a quick reference when wanting to reproduce those perfect cooks.
The Stack:
Frontend: React + Vite + TypeScript (Tailwind for UI)
Backend: Firebase (Auth & Firestore) for the logbook persistence
Hosting: Netlify
The Logic: It applies different time-per-pound coefficients based on the ambient smoker temp (225°F vs 275°F) and suggests rest periods (e.g., 1-hour minimum for Brisket) to ensure quality.
It works offline (PWA) which is helpful when I'm in the backyard away from WiFi.
Would love feedback on the UI responsiveness or any edge cases you find in the scheduling logic. This should be taken as an estimate and a guide and I will continue to improve the algorithm.
NateShenner•35m ago
I built a simple PWA to solve a specific problem I have on weekends: cooking large cuts of meat (Brisket/Pork Shoulder) that require 12+ hour cook times and have non-linear heating curves.
The Problem: Planning those lengthy cooks. Knowing when you should expect to light, wrap and pull is something i didn't want to think about.
The Solution: I built a backward-chaining calculator. You input the target eating time, and it calculates the entry points for "Light Fire," "Wrap," and "Pull" based on the meat weight and cooking temp. I also included a logbook for a quick reference when wanting to reproduce those perfect cooks.
The Stack:
Frontend: React + Vite + TypeScript (Tailwind for UI)
Backend: Firebase (Auth & Firestore) for the logbook persistence
Hosting: Netlify
The Logic: It applies different time-per-pound coefficients based on the ambient smoker temp (225°F vs 275°F) and suggests rest periods (e.g., 1-hour minimum for Brisket) to ensure quality.
It works offline (PWA) which is helpful when I'm in the backyard away from WiFi.
Would love feedback on the UI responsiveness or any edge cases you find in the scheduling logic. This should be taken as an estimate and a guide and I will continue to improve the algorithm.