Why We Built This (Inspiration)

We got this idea when we were walking along a local beach and chatted with some traditional fishermen. They told us that finding fish feels like a "gacha game" (a gamble) every single day. They spend up to 70% of their money on fuel just to guess where the fish are, and often come back empty-handed. We wanted to end this gacha struggle so they do not waste their hard-earned money. We were inspired to build something like "Pokemon Go, but for pelagic fish" (like Tongkol or Cakalang) - showing fishermen exactly where the fish are hiding on a map using real science.

What it does

LautPintar is an offline-first PWA map application. Just like Pokemon Go shows where creatures are on a map, LautPintar shows fishermen the best fishing zones and warns them about dangerous weather. Based on sea surface temperature (SST), chlorophyll-a (plankton levels), and ocean current data, the app calculates a "Fishing Potential Score" (FPS) and classifies areas from Low to High potential. The most important feature is that the map works 100% offline at sea.

How we built it

We developed the backend API using FastAPI (Python) and PostgreSQL to store user profiles and trip reports. The server downloads NetCDF satellite data from NASA (MUR SST) and Copernicus Marine Services (CMEMS). Because traditional fishermen use cheap Android phones (2GB-4GB RAM) and lose signal at sea, we decided to pre-generate and compress map tiles (PNG) on our server. We cache these tiles in Redis and serve them using a Progressive Web App (PWA) Service Worker, which saves them directly on the fisherman's phone storage.

Challenges we faced

At first, we tried to send raw coordinate data to the mobile client and render the map layers on the phone. This caused the phone to lag, freeze, and quickly drain the battery because WebGL/Canvas rendering was too heavy for low-end devices. We solved this by moving the heavy GIS calculations entirely to the backend. Now, the server processes the NumPy arrays, applies a Sobel filter for thermal front detection, renders the PNG tiles, and the phone only loads flat images. This reduced client-side RAM usage to almost zero.

What we learned

We learned that building technology for traditional communities requires simplicity. High-end features are useless without offline availability and low hardware requirements. By focusing on database indexing, Redis caching, and Service Workers, we were able to deliver a production-ready solution that works even in the middle of the ocean.

Built With

Share this project:

Updates