Rainlogger

A service to log and track rainfall.

RainLogger

Rainfall logging, for a farm that used to track it on a paper calendar.

Live app · Frontend source · Backend source

My family farm has always logged rain gauge readings by hand, day by day, on a paper calendar. It works, but it doesn’t add up, doesn’t chart, and doesn’t survive a coffee spill. I built RainLogger to replace that calendar with something that logs a reading in two taps and actually shows you the pattern behind the numbers.

RainLogger calendar view

RainLogger graph view

RainLogger table view

RainLogger new log entry

What it does

  • Log a rainfall measurement for a given day and location in seconds
  • Table, calendar, and bar-graph views of the same data — filter by month, year, and location
  • Multiple locations, multiple authenticated users, one shared history
  • Installable as an app on phone or desktop, works offline, Spanish and English

How it’s built

A React 19 + TypeScript SPA (React Router 7, MUI) talking to an Express 5 + MongoDB API.

  • Shared component library — the calendar view is built on @macolmenerori/component-library, a package I publish and maintain myself, so it stays consistent with my other projects instead of being reimplemented per app.
  • Auth as its own service — login and sessions are handled by a standalone JWT microservice (opensesame-back) that this app talks to over HTTPS, shared across several of my projects rather than duplicated into each API.
  • Installable PWA — a service worker precaches the app shell and auto-updates in the background, so it opens instantly.
  • CI/CD — every pull request on both repos runs a full verify gate (audit, lint, types, tests, build) in GitHub Actions; the whole stack — database, auth, API, and frontend — also spins up in one command with Docker Compose and seeded demo data.

Take a look at the live app — it’s what replaced the calendar on the wall.