</>Levent.
Back to Projects
Other2025

Ulusal Gaz — Desktop Sales & Certificate Application

A fully offline Flutter Windows desktop application built for an industrial gas sales company. Manages sales records through dynamic gas templates, auto-generates sequentially numbered PDF/XLSX certificates, and sends them straight to the printer.

Ulusal Gaz — Desktop Sales & Certificate Application

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.

Ulusal Gaz — Desktop Sales & Certificate Application — 1Ulusal Gaz — Desktop Sales & Certificate Application — 2