Back to Blog

Fixing the Missing Images Problem in Rekkoku

Royan Gagas
September 29, 2025
Share
product
personal
journey
development
Fixing the Missing Images Problem in Rekkoku

Recently, I ran into an interesting issue on Rekkoku, my side project that recommends food places. The problem?

Some post images suddenly disappeared.



Context

When a user creates a post on Rekkoku, the system doesn’t require manual uploads. Instead, it scrapes metadata from the shared link preview pulling the place name, description, and thumbnail photo directly from Google Maps metadata.

It worked perfectly… until it didn’t.



The Problem

After debugging the network calls, I noticed that the image URLs were returning HTTP 403 (Forbidden).

My conclusion: Google Maps rotates or expires certain thumbnail image URLs after a certain period. This means that old URLs are no longer accessible, leaving broken images on Rekkoku.



The First Attempt

At first, I thought of building a scheduler that runs every two weeks, scanning all places and refreshing any broken images.

But since Rekkoku still has a small user base (easy enough to monitor manually), I decided on a simpler approach: 👉 Build an on-demand API to handle this issue.



The Solution

Here's how the mechanism works:

1.Trigger the API - When I hit the API, the system queries all place records.
2.Check image URLs - For each place, the system checks the image URL. If it returns 403, the entry gets inserted into a table called pending_place_image_refresh.
3.Identify broken entries - After scanning, the API responds with the number of places needing a refresh (e.g., "9 places found").
4.Background refresh - The system then reloads the content in the background.
5.Track Progress - I built another API to check progress, so I can see which places are currently being refreshed and when the process is complete.



The Result

After implementing this mechanism, the missing images came back with fresh thumbnails problem solved. 🎉

This small incident was a good reminder that when relying on external metadata sources, it’s important to plan for expiry, rotation, or API behavior changes.



👉 Next time, I might still implement the scheduled job if Rekkoku grows bigger. But for now, this on-demand API keeps things simple and effective.