Lars Oberhofer
← All work

Füllplan

Planning software · 2026

Product / Software / Operations

A customer’s wish is not the filling plan.

My family’s company fills wine for other producers. The week used to be planned in a spreadsheet, on notes and on printouts. Now customers book their own filling jobs, and the bottling line works from the plan the system prints.

A filling week: one job fixed on Thursday among placeholder jobs, a bar for jobs pencilled into the week without a day, and a tray for new bookings MonTueWedThuFri Week 46 · pencilled in, no day yet New bookings this job
Customer’s wish
Thursday
Rough plan
Week 46
Filling day
Thursday
Status, derived
Planned for Thursday, as the customer wished
One filling job in a week. An illustration: the other jobs are placeholders, and the status rule is simplified; the real one also follows materials, documents and the filling record.

I built it with the people who use it, starting with the mistakes that cost the most on the line.

My workSoftware engineer, part-time: the product, the data model, the application and its server.

Used byCustomers, through a booking form, and the office. The line works from the printed plan.

Decision / Data model

Three facts, one derived status.

A customer’s wish, the rough plan and the fixed filling day are stored as separate facts. The status on screen is derived from them and is never set by hand.

The model follows the work: customer, setup, order, position. One order can hold several positions that are planned separately.

The system warns and the person decides. A holiday, for example, shows on the board as advice, because sometimes the line runs anyway. Hard blocks are meant only for the few places where a mistake is expensive.

customersetuporderposition wishrough planfilling day statusderived
The data model. Drawn for this page from the system’s own map.

Context / The company

The job it does.

My parents run two companies in Edesheim on the German wine route: a winery, and the larger one, which fills wine for other producers and now also removes the alcohol from it.

The filling line was planned from a spreadsheet, notes and printouts that drifted apart, and three people planned in parallel. The system follows the path of a job: a customer books it, details get clarified, it is pencilled into a week, fixed on a filling day, materials and documents are checked, and it is filled and closed with a record.

It does this one job for the people on the line and stays away from becoming a general ERP. The new de-alcoholisation line is planned as a machine of its own, with its own rate, because it is a different process.

Operations / Server

Running it.

Next.js and PostgreSQL run on a Linux server I set up and hardened.

The database is backed up every day, a restore is tested automatically every week, and an outside monitor checks the application every five minutes. The live data came over from the old planning workbook.

Stack
Next.js · PostgreSQL · a Linux server I run
Where
Oberhofer GmbH, Edesheim
When
2026

Sources: the Füllplan repository’s system map and status (9 September 2026) and its workbook import, and the vault’s project and operations notes; none is public. The week is an illustration with placeholder jobs; it shows no real bookings or quantities.