Shipped this project!
Shipped Mr. Fortune 🔮 — an interactive fortune-teller web app built with HTML, CSS, and vanilla JS.
Focused on user flow, state management, and making something actually fun to revisit.
Shipped Mr. Fortune 🔮 — an interactive fortune-teller web app built with HTML, CSS, and vanilla JS.
Focused on user flow, state management, and making something actually fun to revisit.
🛠️ Devlog 1 – Mr. Fortune
I started this project as a simple fortune-teller idea, but it quickly turned into a much larger experiment in state management and user flow.
My initial versions broke often — screens wouldn’t transition correctly, buttons wouldn’t respond, and features conflicted with each other. Instead of patching issues endlessly, I decided to restart from scratch and rebuild the app in a more structured way. This helped me understand the importance of planning flow before adding features.
One of the biggest challenges was managing multiple screens (user input, category selection, card choice, result, history, admin panel) using only vanilla JavaScript. I refactored the logic several times to avoid silent failures and ensure that every user action led to a clear next step.
I also implemented systems like daily usage limits, cooldowns, per-category limits, and a testing/admin mode. These features forced me to think about edge cases, persistence using local storage, and how to give users feedback when actions were blocked.
Most of my time was spent debugging and improving UX rather than writing new features. Small details like animations, transitions, and visual feedback made a big difference in how polished the project felt.
Overall, this project helped me learn how to:
structure a multi-screen web app without frameworks
manage application state reliably
debug UI and logic issues effectively
iterate on a project instead of abandoning it when things break
This was a challenging but rewarding project, and rebuilding it properly taught me more than trying to rush features.
Log in to leave a comment
Started this project as a simple calculator, then realized “simple” calculators can still be annoying if done wrong 💀
The first version auto-calculated everything, which felt chaotic, so I rebuilt the logic to behave like a real calculator — it now waits for the user to press = before doing any math.
I rewrote the entire JavaScript logic to properly handle:
operator selection and display
clean input flow (no jumps, no surprises)
a real +/- toggle instead of a fake button
floating point precision issues (because JavaScript math is cursed)
I also improved the UI by showing the selected operation (like 8 ×) so users always know what’s going on. The goal was to keep it minimal, readable, and not annoying to use.
Overall, this project helped me understand state management in JavaScript (current value, previous value, operator) and how small UX decisions can make or break an app.
Still improving it, but this version finally feels ship-worthy 🚢🔥