
When building the "Create Post Recommendation" feature for my side project rekkoku.my.id, I stumbled into something that felt annoying.
Users were supposed to submit Google Maps links for their recommendations without uploading any photos or typing in place names. The app would fetch all of that automatically, just like a link preview.
Simple in theory, but not in pratice.

Fetching metadata (name, image, description) from each Google Maps link took time. Like, noticeaby long, especially on mobile or with bad networks.
If I handled that during the form submission users would sit there staring at a loading spinner... thinking:
"Is this broken?" "Should I refresh?"
Not good.
I realized that while the idea was to make things easier for the user, the UX was doing the opposite. Just because I wanted it to look nice (auto-preview!), doesn't mean it has to be synchronous.
Form submission should be instant.
So I built a simple queue + background process flow:

People often say, "Build side projects to learn."
Implementing background jobs might feel overkill for a non-commercial app.
And yeah, it's still just a side project.
Next time you’re tempted to cram everything into the form submission process, ask yourself:
“Can this happen later?” “Does the user need to wait for this part?”
If the answer is no, you probably need a background job.