Wine cooperative · Operational PWA
Mountain Ridge Wines
A custom PWA for pooling, vintage and harvest logic, budgeting, and commercial invoicing in one place, on desktop and phone.
Agriculture
Operations
PWA
Planning
Harvest
Invoicing
Result · Monthly close → hours

Vintage 2026
Operational web app
Close status
Hour-scale close
- Pooling locked
- Invoices queued
- Board pack
Grower pool
| Member A | ~40 tonnes | Invoiced |
| Member B | ~30 tonnes | Pooled |
| Member C | ~25 tonnes | Intake |
The brief
A wine cooperative runs on interconnected processes: pooling, vintage, harvest, and invoicing. Spreadsheets and a monthly close cycle were carrying most of the load. A figure changed in one sheet had to be copied into the next, and the close waited on that copying.
What the software covers
The PWA is the operational system for that cycle. Pooling, vintage and harvest logic, budgeting, and commercial invoicing sit in one place. The harvest plan, the budget, and the invoice draw on the same figures, so the cooperative is not reconciling four versions of the season.
The build
We shipped an operational PWA around how they actually work. It installs from the browser, with no app store. SvelteKit on the front, FastAPI and PostgreSQL behind it, packaged with Docker and hosted on a managed server. Implementation was in person, then a retainer through vintage.
How people use it
The same app runs on a desktop and on a phone. There is no second mobile product and no store listing to maintain. That matters in vintage, when the work is in the cellar and at a desk in the same week, and the person updating the harvest is not always the person raising the invoice.
What shipped
Budgeting and operational close moved from a monthly cycle to work that finishes on an hour scale, on desktop and phone, without an app store. The cooperative has one system for the season instead of a chain of spreadsheets.
After go-live
Hosting stays with us on a managed server, with a retainer through vintage so the model can change when the season does. The app is software we run, not a project we hand over and leave.