Skip to content

Technology Stack

This page answers the question "what is SmartSoft Inventory built with?" — the languages, runtimes, frameworks, and tools, plus why each is there and what it implies for anyone working on the system.

The stack in one diagram

flowchart TB
    subgraph L5["Presentation"]
        WF["WinForms UI"]
        SK["IrisSkin / Skinner<br/>(theming)"]
        CFX["ChartFX.Lite<br/>(charts)"]
        CR["Crystal Reports<br/>(report rendering)"]
    end
    subgraph L4["Application"]
        APP["smartsoft_inventory<br/>Forms · Class · Module"]
    end
    subgraph L3["SmartSoft FrameWork (shared DLLs)"]
        BLL["BLL<br/>stock · promos · closing"]
        GEN["General<br/>data access · config"]
        GUI["GUI<br/>base forms · controls"]
        STR["Struk<br/>receipt printing"]
        NET["Net · Closing · Laporan · CetakGiro · MyLib"]
    end
    subgraph L2["Platform"]
        NETFX[".NET Framework 3.5 (x86)"]
        COM["COM interop: SQLDMO · Raw printing · QRCode"]
    end
    subgraph L1["Data"]
        SQL[("Microsoft SQL Server")]
    end
    L5 --> L4 --> L3 --> L2 --> L1
    style L3 fill:#e8eaf6,stroke:#3f51b5
    style L1 fill:#e0f2f1,stroke:#00897b

Core platform

Layer Technology Version / detail
Language VB.NET Visual Basic .NET
Runtime .NET Framework 3.5, targeting x86
UI framework Windows Forms (WinForms) Desktop, event-driven
IDE / build Visual Studio 2008 MSBuild-compatible for the main project
Database Microsoft SQL Server 2005 / 2014-era, SQL authentication
Data access ADO.NET SqlConnection / SqlCommand / SqlDataAdapter
Reporting Crystal Reports Report rendering & printing
OS Windows The app is Windows-only end-to-end

Why VB.NET / .NET 3.5?

This is the technology it was originally written in and never migrated from. .NET 3.5 + WinForms + Visual Studio 2008 was a mainstream Windows line-of-business stack at the time. The choice is now a constraint, not a decision: the dependencies below (Crystal Reports, SQLDMO COM interop, skinning DLLs) tie it firmly to this era. Treat the stack as fixed unless a deliberate modernization project says otherwise.

Third-party & UI libraries

Component Role
IrisSkin / Skinner Skinning engine — the themed look of every form. Skin name comes from config.
ChartFX.Lite Charting control used in dashboards/reports.
Crystal Reports The reporting engine; report viewers live under INVENTORY/Form/Laporan/.
MessagingToolkit.QRCode QR-code generation (labels / receipts).
MyControl In-house custom WinForms controls.
Interop.SQLDMO COM interop to SQL-DMO for database admin tasks (backup/restore, server info).

The SmartSoft FrameWork (internal shared libraries)

The heavy lifting lives in a set of internal DLL assemblies — the SmartSoft FrameWork — shared across SmartSoft's product line (Inventory, POS, Service). The application references them as compiled DLLs.

Assembly Responsibility
FrameWork.SmartSoft.BLL Business logic — stock & costing (BLL_STOCK), promotions, point-reward, daily process.
FrameWork.SmartSoft.General Data-access gateway (DataAccessControl), value conversion, registry config, version check.
FrameWork.SmartSoft.GUI Base forms, custom controls, message boxes, skinning glue.
FrameWork.SmartSoft.Struk Receipt / label ("struk") printing, including raw printer access.
FrameWork.SmartSoft.Closing Daily / monthly close, backup, restore, data housekeeping.
FrameWork.SmartSoft.Net Networking — email (SMTP/GMail), FTP, modem messaging.
FrameWork.SmartSoft.Laporan Specific report builders (purchase order, margin/profit).
FrameWork.SmartSoft.CetakGiro Cheque / giro printing for specific banks (Mandiri, BCA).
DataAccessControl Typed data-access classes (tbMaster_*, tv_*) for Inventory / POS / Service.
SmartSoft.Parameter Company (PERUSAHAAN), parameters, computer/system reference entities.
MyLib Cross-cutting utilities — licensing (CdKey), login, Oracle DAC, raw printing, clock sync.

See The SmartSoft FrameWork for a per-assembly deep dive.

Configuration & deployment technology

Concern How it's done
App configuration Stored in the Windows Registry, obfuscated (server, database, credentials, skin). Read at startup via SystemRegistry.
Connection string Built at runtime from registry values; SQL Server authentication with credentials embedded.
Licensing CdKey (MyLib) + a cloud license check at license.smartsoft.co.id gated on an expiry date in REF_SYSTEM.
Clock/locale On startup the app syncs the workstation clock and date/number formats to the SQL Server (SynchroniseDateTime).
Install A Visual Studio setup/installer project (SetupInventory.vdproj) produces a per-PC MSI-style install.

What this stack means for you

Practical consequences

  • Windows-only, no cross-platform. No dotnet CLI build; you need Windows + Visual Studio 2008 (or a matching MSBuild + the DLL dependencies).
  • Desktop, not web. Each till/PC runs the full app and connects directly to SQL Server. There is no application server or API tier.
  • Shared DLLs are external. The app references the FrameWork via relative paths outside the repo — see Build & Deploy.
  • The database is the integration point. Branches/products integrate through shared SQL tables and closing/sync processes, not services.
  • The stack is frozen in time. Modern .NET, EF Core, or a web front-end would be a rewrite, not an upgrade — because of Crystal Reports, SQLDMO, and the skinning DLLs.