A modern, cross-platform desktop application for small-scale farm management. Built with Wails (Go + React) for a native experience with a beautiful web-based UI.
- π Livestock Management - Track animals with lineage (mother/father relationships)
- πΌ Milk Production - Record daily milk yields by animal, track sales and payments
- πΆ Breeding & Pregnancy - Record breeding events, track pregnancies, link calves to parents
- πΎ Crop Management - Manage fields, track planting cycles, costs, and yields
- π¦ Inventory - Track supplies with low-stock alerts
- π½οΈ Feed Management - Log daily feeding records and monitor stock levels
- π₯ Health & Vet Records - Treatments, vaccinations, and follow-up reminders
- π° Financial Tracking - Income/expense tracking with visual summaries
- π Auto-Updates - Built-in update manager with GitHub Releases integration
Download the latest version for your platform from GitHub Releases:
- Download
farmland-windows-amd64-installer.exe. - Run the installer and follow the prompts.
- Farmland will be installed to
Program Files, with shortcuts on your Desktop and Start Menu.
We provide packages for most major distributions:
- Debian/Ubuntu: Download
farmland-linux-amd64.deband install withsudo apt install ./farmland-linux-amd64.deb. - Fedora/RHEL/openSUSE: Download
farmland-linux-amd64.rpmand install withsudo dnf install ./farmland-linux-amd64.rpmorrpm -i. - Generic: Download
farmland-linux-amd64.tar.gz, extract it, and run thefarmlandbinary.
- Download the
.zipfor your architecture (arm64for Apple Silicon,amd64for Intel). - Extract and move
Farmland.appto your/Applicationsfolder.
go install github.com/wailsapp/wails/v2/cmd/wails@latest# Ubuntu/Debian
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev
# Fedora
sudo dnf install gtk3-devel webkit2gtk3-devel# Clone the repository
git clone https://github.com/danielkosgei/farmland.git
cd farmland
# Install frontend dependencies
cd frontend && npm install && cd ..
# Development mode (hot reload)
wails dev
# Production build
wails build -cleanThe built binary will be in build/bin/.
farmland/
βββ app.go # Application struct and lifecycle
βββ main.go # Entry point with Wails configuration
βββ database.go # SQLite database initialization
βββ models.go # Data structures
βββ *_service.go # Business logic services
βββ frontend/
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components
β β βββ index.css # Design system
β βββ package.json
βββ .github/
β βββ workflows/ # CI/CD pipelines
βββ wails.json # Wails configuration
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β βDashboardβ βLivestockβ βBreeding β β Crops β ... β
β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ β
βββββββββΌβββββββββββΌβββββββββββΌβββββββββββΌβββββββββββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Wails Runtime (IPC Bridge) β
βββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Backend (Go) β
β βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββββ β
β βLivestockSvcβ βBreedingSvcβ β CropsSvc β βFinancialSvcβ β
β βββββββ¬ββββββ βββββββ¬ββββββ βββββββ¬ββββββ ββββββββ¬βββββββ β
ββββββββββΌββββββββββββββΌββββββββββββββΌβββββββββββββββΌββββββββββ
β β β β
βΌ βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SQLite Database β
β (~/.farmland/farmland.db) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
go test -v ./...# Install golangci-lint
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
# Run linter
golangci-lint runData is stored locally in SQLite at:
- Windows:
%USERPROFILE%\.farmland\farmland.db - macOS/Linux:
~/.farmland/farmland.db
Simply copy the farmland.db file to back up all your data.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Releases are automated via GitHub Actions. To create a new release:
git tag v1.0.0
git push origin v1.0.0This triggers the release workflow which builds binaries for all platforms and creates a GitHub Release.
This project is licensed under the MIT License - see the LICENSE file for details.
- Wails - Build desktop apps using Go & Web Technologies
- React - UI library
- Lucide - Beautiful icons
- modernc.org/sqlite - Pure Go SQLite driver
