Jung RamaDenpasar; --:--:-- GMT+8

From the pond to the lab, on one system.

An aquaculture monitoring system built on one REST API. Farmers log activity from a pond-side app, managers watch it on a dashboard, and the lab gets clean data to work from. I built the API and the dashboard in the middle.

Role
Software engineering
Stack
Laravel, Vue
Type
Internal system
Domain
Aquaculture
Year
2021

Overview

A fish farm generates data all day. But the data scattered everywhere.

Smartfish is how the fishery got off paper. It tracks what happens across the farm so farmers, managers, and the lab are all looking at the same thing. Feeding, water conditions, fish health. Before this, all the information lived in notebooks.

I worked on solving this. I gathered requirements from the maintenance team and the lab team on what they needed, then built the REST API that serves both the mobile app and the web dashboard, so every side of the farm reads from the same data.


The journey

One piece of data, all the way from the water to a decision.

  1. 01

    Farmer logs it

    Pond-side

    A farmer records something at the pond: a feeding, a water reading, something they noticed.

  2. 02

    App captures it

    Mobile

    The mobile app turns that quick note into structured data.

  3. 03

    One source of truth

    REST API

    Everything reads and writes through the same data layer, so nothing drifts.

  4. 04

    Management sees it

    Dashboard

    Managers see the raw activity as a readable view of the whole farm.

  5. 05

    Labs analyze it

    Labs

    The lab gets it clean and structured, ready for fish-health calls.

One API, three audiences

The same system, seen by three very different people.

Farmers

Pond-side, hands full

A small mobile app for logging activity without downing tools. It has to work fast while you're standing over a pond, not sitting at a desk.

Management

The farm at a glance

A dashboard that turns the stream of pond activity into a clear read on conditions, so checking in doesn't mean chasing people for updates.

Labs

Data ready to analyze

Data handed over in a shape they can actually use, so nobody re-types it and nobody guesses. Their health calls rest on something solid.


Architecture

Building the app as a microservice.

The system serves three very different consumers that grow at different speeds. Farmers log all day, managers check dashboards, and the lab pulls data on its own schedule. Splitting it into services meant each part could change and scale without breaking the others, and a failure in analytics could never stop a farmer from logging a feeding. Passing events over a shared bus keeps the services decoupled, so adding a new consumer, like the lab export, never meant touching the core.

Microservices architecture: a mobile app and dashboard connect through an API gateway to auth, activity, fish-health, and analytics services, each with its own database, communicating over a shared event bus, with a lab export consumer.

Engineering decisions

Three things the build had to get right.

One API for every client

Separate backends for the dashboard and the mobile app would have been the fast path. I built one REST API instead, so both read and write the same records. A farmer's entry at the pond is exactly what a manager sees. No sync jobs, no drift.

Structure the data at the source

The lab can't analyze free-text notes. Every log is captured as structured fields the moment it enters the app, so data reaches the lab ready for analysis instead of being cleaned up and re-typed at the end.

Design for wet hands

Logging happens standing over a pond, not at a desk. With the mobile developers I cut every entry down to a few taps, because a flow that takes a minute is a flow farmers will skip.

Management dashboard
Activity input
Analysis view

Outcome

The farm got off paper — and stayed off.

The notebooks stopped being the system of record. Once logging took a few taps at the pond, the data started flowing on its own, and everyone downstream stopped chasing it.

3 audiences
One source of truth
Farmers, managers, and the lab all read from the same records. What's logged at the pond is exactly what management sees and the lab analyzes.
Off paper
Structured from the start
Feedings, water readings, and fish health went from notebook pages to structured fields the moment they're captured.
Zero re-typing
Lab-ready data
The lab used to clean up and re-enter records before analysis. Now the data arrives in the shape they work in, and health calls rest on something solid.

Next project

CRM

Broker CRM

Real estate · 2023