Overview
Ulusal Gaz — Desktop Sales & Certificate Application
A fully offline Flutter Windows desktop application I built for Ulusal Gaz, an industrial gas sales company. No online database or API dependency at all — all data lives in a local SQLite file that travels with the app folder itself (portable-mode distribution).
Key Features
- Dynamic gas templates: Gas types aren't a fixed table. Each type is defined as a JSON-based, reorderable template with fixed specifications and employee-fillable fields.
- Snapshot-based sales records: Every sale stores its own copy of the template data at the time of creation, so historical records stay intact even if the template is later changed or deleted.
- Automatic certificate generation: One click after a sale produces a PDF and an Excel (XLSX) certificate matching the company's letterhead layout, with system fonts embedded at runtime for proper Turkish character support.
- Year-based auto document numbering: Every certificate gets a unique document number assigned inside a database transaction; numbers never get reused even if a record is deleted.
- Direct printing: A "Print" button drives PowerShell + Excel COM automation to print the certificate at its exact custom paper size (11.2×15.2 cm), auto-registering the printer paper form if it's missing.
Technical Notes
The app uses Riverpod for state management, sqflite_common_ffi for a
portable local database, the pdf/printing packages for certificate
generation, and a custom XLSX service that edits the sheet XML directly
inside the ZIP archive to work around page-setup limitations of the
excel package. On the printing side, I built a flow that automatically
registers the custom paper size with the Windows printer driver via the
AddForm API when it's missing.




