Skip to content
Live in production

AquaLog: An aquarium logbook that works offline

An aquarium logbook for people who keep fish: tanks and cleanings, a journal of every fish, water tests, what the hobby costs, the store room and reminders, in one calm app that still works with no signal. It began in Lovable from its founder's brief. We engineered what sits underneath: reminders that follow each keeper's own day, one model for money in any currency, a database that refuses impossible values and walls each keeper's records off, and an admin console whose audit log cannot be rewritten.

At a glance

AquaLog is an aquarium logbook for fishkeepers: tanks and cleanings, a livestock journal, water tests, hobby spending, a store room and reminders, in one web app that works offline. It began in Lovable from its founder's brief; Plutonapps engineered the system underneath, from one notion of a day to one model for money. It is live at aqualog.space, with free guides and tools beside the app.

Updated AquaLog's own site, aqualog.space (opens in a new tab)

Automated test files
159
Stack
React · TanStack Start · PostgreSQL
In development since
June 2026
Tables with row-level security
13 of 13
01

The Lovable prototype

What was AquaLog designed to do?

AquaLog started in Lovable on June 14, 2026, from its founder's own brief: many aquariums of different sizes, cleanings kept only in memory, the fish in each tank, the money, and a store room to keep track of. The first version took that shape in Lovable as a set of screens for tanks, fish, finances and stock. That brief became the specification, and the six records on today's home page still follow it.

02

The divide

What did Plutonapps engineer?

Plutonapps engineered six parts of the system under AquaLog's screens: the notion of a day, money, privileges, value limits, the admin console and offline use. Each row sets the risk beside what replaced it.

01

Reminders converted every log with a fixed UTC offset, so a keeper outside UTC could log a water change on the wrong day, and a monthly cadence stored as 30 days drifted five days off the calendar in a year.

One notion of a day

Each keeper now carries a time zone, and the trigger that schedules the next reminder uses it. Cadence is stored as a number and a unit, so monthly means a real calendar month, and the old count of days is derived from that pair, so the two can never disagree.

02

Costs booked outside the transactions table had no currency at all, a half-typed currency could break a row's formatting for good, and four ways of writing money disagreed: a filter's price never reached the budget.

One model for money

Every amount now has a currency beside it, checked for shape. A costed record owns at most one linked expense, kept in step by a single database function, while expenses a keeper enters by hand are never touched by it. Stock carries its price per unit, so the store room can be valued.

03

Postgres grants every new function to the public by default. One function took any keeper's id and returned their time zone, a genuine read across accounts.

Privileges closed at the database

Every table in the first schema has row-level security switched on, and the default public grant on database functions is revoked. The function that read across accounts is no longer callable by clients at all.

04

The browser is not a trust boundary. A hand-written request with a valid session could store a fish count of a billion trillion and poison every total on the dashboard.

Limits the database enforces

Every numeric limit the forms check is mirrored as a constraint in the database, which holds the authoritative copy, so an impossible value is refused whichever way it arrives.

05

Running a product means acting on people's accounts, and an action nobody can trace, or a log that can be edited afterwards, is a trust problem.

An admin console with a record

The admin console writes every action to an audit log that is append-only three times over: no grant to change it, no policy to change it, and a trigger that refuses any change. An account switch can suspend a user, and every admin request re-checks the session and the role in the database.

06

Fish rooms and store rooms are not known for good reception, and a change that fails silently is a log that is quietly wrong.

Readable with no signal

AquaLog installs as an app, keeps tanks, logs and stock readable offline from a cache scoped to the signed-in keeper, and holds a change made offline until there is a connection instead of dropping it.

03

In production

Real screens from the live product.

aqualog.space
Your aquariums, finally organised

Your aquariums, finally organised

The public home page: what AquaLog keeps, the one-time-code sign-in and the offline promise, above the page's own preview of the dashboard, drawn with sample figures.

aqualog.space / guides / aquarium water parameters
A fishkeeping guide, answer first

A fishkeeping guide, answer first

One of the public guides: a short answer at the top, then the target reading for each water parameter and why it matters.

aqualog.space / tools / water change calculator
The water change calculator

The water change calculator

One of the four free tools: a current, target and tap-water reading in, the water change that gets there out, in one go or in smaller steps.

04

Guarantees

What do we hold ourselves to while it runs?

Dates

Each keeper's own time zone, real calendar months

Money

A currency beside every amount, one linked expense

Access

Row-level security and revoked default grants

Audit

An admin log nobody can rewrite

05

Results

What were the results?

Automated test files in the production build
159
Tables in its first schema with row-level security on
13 of 13
Numbered database migrations, each safe to re-run
22
Fishkeeping guides on its public site, beside 4 free tools
29
Languages its public pages are published in, besides English
22

Counted from AquaLog's own repository at its production build of October 17, 2026, and from its live sitemap on October 24, 2026. It has no published user figures, so none are quoted.

Stack and timeline

Product
An aquarium logbook: tanks and cleanings, livestock, water parameters, hobby finances, a store room and reminders
Built in Lovable
The first version, from the founder's own brief
Stack
React 19 · TanStack Start · Tailwind CSS v4 · TanStack Query · Clerk · Supabase PostgreSQL · Vercel
Sign-in
A six-digit code sent by email, with no password
Timeline
First commit June 14, 2026, in Lovable · direct engineering from August 17 · production build October 17, 2026
Status
Live at aqualog.space
FAQ

Questions

What else do people ask about AquaLog?

What does AquaLog keep track of?

Six records a fishkeeper keeps: tanks and their cleanings, every fish and what happened to it, water test results, what the hobby costs, the food, medicine and spares in the store room, and reminders for each recurring job.

Does AquaLog work offline?

Yes. It installs to a phone's home screen, tanks, logs and stock stay readable with no signal, and a change made offline waits for a connection instead of failing silently.

What did Plutonapps build for AquaLog?

The system under its screens: reminders that follow each keeper's own time zone and real calendar months, one model for money with a currency beside every amount, row-level security with tightened function privileges, value limits enforced by the database, and an admin console with an audit log nobody can rewrite.

Is AquaLog live?

Yes. AquaLog is live at aqualog.space, with its fishkeeping guides and free tools beside the app.

Starter is the plan we start everyone on.

Bring us what you made. We will build it like this.

Get started$2,999 per month

Billed yearly. Month to month is $4,999 per month. Billed quarterly, it is $3,999 per month.

See plans and pricing