LabVIEW is useful for connecting instruments, plotting signals, trying signal-processing algorithms, and working out whether a test will do what you need. I see a place for it in that early work.
Production quality assurance, or QA, adds another set of questions. Who tested this unit? Which procedure did they use? Was it repaired and tested again? Where are the photos and final report?
Those questions get harder to answer when measurements live in CSV files, photos are in separate folders, and the final report is assembled somewhere else. I would build the production application around a shared database, with NiceGUI providing the browser interface.
Keep the test record together
A file-based process can work for a small bench setup. As more products, operators, and test stations are added, naming conventions and folder structures have more work to do. A renamed or overwritten file can leave a gap in a unit's history.
I would use PostgreSQL to connect measurements with the unit's serial number, operator, test procedure revision, attachments, and approval status. Repairs and retests would become part of that history instead of separate files someone has to find and interpret.
The application should make it straightforward to answer:
- Who performed the test, and when?
- Which procedure revision was used?
- Did the unit fail, get repaired, or need a retest?
- Where are its photos, calibration records, and signed documents?
- Has the serial number already been used in another process?
- Can we reproduce the final report later?
The database would hold the relationships between those records. NiceGUI would give technicians and engineers a way to enter, search, and review them.
Build the application around the work
A useful test screen shows the measurements. A production application also needs to help people complete the surrounding work.
For this kind of system, I would want:
- Individual sign-ins and permissions appropriate to each role.
- Serial-number checks before a test or approval is saved.
- A history of changes, repairs, retests, and approvals.
- Photos, certificates, and logs attached to the relevant record.
- Searchable results and consistent reports.
- Forms that guide operators through required steps and make failures obvious.
- Settings and procedure information available in the same application.
NiceGUI would be my choice for building that interface in Python. It would not supply a finished QA system on its own. I would still need to design the records, implement the rules, and test that the application handles mistakes and failures correctly.
Make the software easier to maintain
A production application needs to change as products and procedures change. Someone also needs to be able to find and fix a problem after the original developer has moved on.
One reason I prefer Python for this work is that the application is written as text. Forms, database access, validation, tests, and report generation can be searched and reviewed in source control. Changes can be compared with earlier versions, and automated tests can check that an update has not broken existing behavior.
That suits the way I would want to maintain an internal application. The code still needs clear organization and documentation; choosing Python does not do that work for me.
Update the application in one place
With a centrally hosted NiceGUI application, operators would use a browser. The application and its dependencies would be managed on the server rather than installed separately on every operator workstation.
That would let me deploy an update in one place and reduce the chance of different stations running different copies of the application. I would still need to plan updates so they do not interrupt active work, test changes before release, and provide a way to recover if an update fails.
I would also keep hardware-specific test software and drivers in the deployment plan. A browser interface does not remove the need to connect to the instruments and maintain the test stations.
Licensing, the build process, access to development machines, and ongoing support would all be part of the comparison. I would weigh those alongside the cost of maintaining the server, database, backups, and application itself.
Know who changed a record
Shared folders and naming rules depend on people following the process. I would want the application to enforce the parts that matter: who can create a test, edit a result, approve a unit, or change a procedure.
Each important change should be associated with a signed-in user and kept in the record's history. Permissions should limit administrative actions, and backups should be protected and tested by restoring them.
That history is useful during ordinary troubleshooting as well as audits. If a unit comes back months later, the team should be able to find its measurements, attachments, repairs, test revision, and approvals without piecing the story together from emails and file shares.
Generate reports from the saved record
I would generate the final report from the same records people use to review the test. The report would draw together the serial number, measurements, pass/fail result, attachments, procedure revision, operator, and QA approval.
This would reduce the copying between spreadsheets, photos, checklists, and a separate report template. It would also give me a way to reproduce a report from the saved test history rather than reconstructing it by hand.
The report needs to reflect the approved test record, including the revision used. A later procedure change should not make an old result appear to have been tested under the new procedure.
Make the right steps easy to follow
The interface matters because people use it while doing other work at the bench. Required fields, clear pass/fail indicators, and useful error messages can help an operator catch a mistake before saving a record.
I would design the forms around the actual test sequence, including what happens when a unit fails or needs rework. The goal is to make the process easier to follow and leave fewer missing details for someone to repair afterward.
Design review: what I would need to get right
A central database and a browser interface would not guarantee reliable records. I would need tests for permissions, serial-number reuse, incomplete tests, repairs and retests, procedure changes, and report generation.
I would also need a backup-and-restore process and a plan for what operators should do when the application or network is unavailable. Moving records onto a server changes what needs to be maintained; it does not remove that responsibility.
Where I would keep LabVIEW
I would keep LabVIEW where it helps develop the measurement, connect the instruments, or try a signal-processing idea. Those tasks can remain useful parts of a test setup.
For the production application around those tests, I would choose NiceGUI and PostgreSQL. What I want is a straightforward way to keep a unit's measurements, history, attachments, and approvals together, and let the people doing the work find what they need.
Discussion