🐔 The Coop Ledger
Free & open source

Track your flock.

Birds, eggs, income and expenses, supply inventory, hatching, and bedding — running the moment you open it, with nothing to sign up for. Your data stays on your own device unless you choose to sync it somewhere.

No account for local use. Works offline once loaded. Install it like a real app on desktop or Android.
🚧 Actively in development. Features and behavior are still changing, and while care is taken to avoid it, bugs happen — back up your data regularly (Export from Settings → Coops takes a few seconds).
The Coop Ledger's flock tracking screen, showing individual birds with photos, breeds, and ages
What it tracks

Everything a working flock actually generates

🐓
Birds & batches
Individual layers or a whole batch of meat birds, with health logs, harvest tracking, and photos.
🥚
Eggs
Daily counts, freshness at a glance, and production trends over time.
💰
Finances
Every expense and sale, categorized, with real cost-per-dozen and cost-per-pound math.
📦
Supply inventory
Feed and bedding on hand, with photos of the actual products so you know what to buy again.
🐣
Incubation & hatching
Clutch tracking through a full 21-day timeline, down to naming the new chicks.
🌾
Bedding freshness
Know when it's time for a full clean-out versus just a top-off, area by area.
How it works

Two ways to use it — pick either, or switch later

No setup

Just open it

Tap "Open the app," choose local use, and start entering data immediately. Everything lives in your own browser, on your own device — nothing is sent anywhere. Works offline once it's loaded, and can be installed like a real app on desktop or Android for its own icon and window.

Export a backup anytime, from a menu right in the app. Switch to a synced server later without losing anything you've already entered.

Your own server

Sync it across devices

Run your own copy on a home server or NAS with a single Docker command, then connect any device to it with an invite code. Data lives on your server, syncs automatically in the background, and keeps working offline in between — changes push out the next time a connection's available.

Nobody's server but your own. Self-hosting is free, and covered below.

Android

A direct-download Android app, if you'd rather not use the browser

This is the same app, wrapped as a standalone Android package (built with Bubblewrap) instead of something you install from a browser tab. It points at thecoopledger.com just like the web app does, so it works the same way — local-only or synced, your choice.

Since it isn't distributed through the Play Store, Android will show an "unknown source" warning during install — that's expected for any app installed this way, not a sign something's wrong. You'll need to allow it explicitly to continue. Google Play, F-Droid, and other stores are planned for a more familiar install path down the road.

⬇ Download APK
Self-hosting

Runs anywhere Docker does

A Raspberry Pi, a NAS, an old laptop — anything that can run a container. One file, one command.

docker-compose.yml
services:
  coop-ledger:
    image: ghcr.io/tjusczak/thecoopledger:latest
    container_name: coop-ledger
    ports:
      - "8000:8000"
    volumes:
      - ./data:/data
    restart: unless-stopped
then
docker compose up -d

That's it — visit http://<your-server-ip>:8000, grab the invite code from the container's logs, and you're in. Full setup instructions, backup guidance, and the source itself are on GitHub.

View on GitHub ↗
FAQ

Common questions

Do I need to make an account?
Not for local use — open the app and start entering data right away. An account (well, an invite code) is only needed if you connect to a synced server, either your own or one someone else invited you to.
Where does my data actually live?
In local mode, entirely in your own browser's storage on your own device — never sent anywhere. If you switch to a synced server, it lives on that server, which (unless you're using someone else's) is a server you control.
Does it work without internet?
Yes. Local mode never needs a connection after the app has loaded once. Synced mode keeps working offline too — changes queue up and push out automatically the next time a connection's available.
What happens if I clear my browser data?
In local mode, that data is gone — it was only ever stored in that browser. Export a backup from the app periodically, or connect to a synced server, to protect against that.
Is this stable enough to rely on?
This is actively developed, by one person, and things do change — new features, occasional bug fixes, sometimes a data model adjustment under the hood. Care is taken not to break existing data, and nothing here is deliberately experimental, but it hasn't had years of production hardening either. Export a backup regularly (Settings → Coops → Export (.zip)) — it takes a few seconds and it's the best protection against anything going wrong, here or anywhere else.
Can I move from local-only to a synced server later?
Yes, anytime, in either direction, without losing anything already entered.
Is this actually free?
Yes — free and open source. Nothing to pay for local use, and self-hosting costs whatever your own hardware and electricity already cost you.
What devices does it work on?
Any modern browser, desktop or mobile. It can also be installed as a standalone app on desktop (Chrome/Edge) or Android, for its own icon and window instead of a browser tab.