02-347-7730  |  Saeree ERP - Complete ERP Solution for Thai Organizations Contact Us

Our Technology Journey

From Java Swing to Angular

25 Years of Building Government ERP for Thailand

Saeree ERP's roots go back to 1999, when our founder Sureeraya Limpaibul personally joined Jorg Janke's Compiere project and contributed Thai localization — making Thai the 5th language supported (after English, German, French, and Spanish).

In 2019, we rewrote the entire frontend from Java Swing directly to Angular 7 — skipping JSP, jQuery, and every other intermediate technology entirely. Angular was chosen because its object-oriented TypeScript, dependency injection, and separation of HTML templates from component logic mirrors how Java developers think. Today, Saeree ERP runs on Angular 20+ with PrimeNG, serving 10+ Thai government agencies with 16+ modules, 1,000+ database tables, and zero Swing code remaining.

Saeree ERP Angular Technology

25Years of Experience

Why Government ERP Is Different

Unique Challenges of Government ERP Systems

Before discussing the migration, it's important to understand why government ERP systems face unique modernization challenges.

Challenge Commercial ERP Government ERP (Thailand)
Budget cycle Revenue-driven, flexible Annual government budget allocation
Procurement Standard PO workflow Must comply with Government Procurement Act 2017
User licensing Per-seat pricing Unlimited users required — agencies have 50-500+ staff
Accounting IFRS/GAAP Thai government accounting + Revenue Department certification
Deployment Cloud-first Often on-premise for data sovereignty (PDPA)
System lifespan 5-7 year cycles 10-20+ years of continuous operation

That 10-20+ year lifespan is why our technology migration story matters. A system born in 1999 must evolve while maintaining uninterrupted service to government operations.

Technology Journey

From Compiere 1999 to Angular 20+

The Origin Story: Compiere 1999

In 1999, Sureeraya Limpaibul discovered Jorg Janke's Compiere — one of the first open-source ERP systems, built in Java. She joined the project and contributed Thai localization as the 5th language. After English, German, French, and Spanish, Thai was the next language Compiere could speak.

But the relationship with the Compiere community didn't last. After contributing Thai localization, attempts to contribute further went unanswered. The Compiere project was eventually commercialized and sold. This led to a decision that shaped the next 25 years: fork the codebase and build something purpose-built for Thai government agencies.

In 2002, Grand Linux Solution Co., Ltd. was founded, and Saeree ERP was born — years before ADempiere even forked from Compiere in 2006. When ADempiere did fork, Thai localization was already there, waiting — because our founder had put it there seven years earlier.

Generation 1: Compiere/ADempiere + Java Swing (1999-2019)

What Worked Well

  • Rock-solid stability — agencies ran it for years without major issues
  • Rich desktop experience with keyboard shortcuts and fast data entry
  • The Application Dictionary made customization efficient
  • PostgreSQL handled growing datasets as agencies expanded usage

What Became a Problem

  • Users needed to install Java Runtime on every workstation
  • IT departments struggled with version management across hundreds of PCs
  • Remote access required VPN — increasingly impractical
  • Mobile access was impossible
  • New developers didn't want to learn Swing — the talent pool was shrinking

Why Angular? Not React, Vue, or jQuery

Framework Why We Considered It Why We Rejected It
JSP/jQuery Familiar to Java devs Not a real framework — UI logic scattered across files
GWT Java-to-JavaScript compiler Dead ecosystem, Google abandoned it
Vaadin Java backend renders UI Server-side rendering = scalability concerns for 500+ users
React Massive ecosystem Functional programming paradigm — foreign to Java OOP thinking
Vue.js Gentle learning curve Too flexible — no enforced architecture for a 20-person team
Angular Full framework with opinions Winner! — felt like writing Java for the web

The decision came down to one insight: our team thinks in objects, not functions.

Why Angular Felt Like Java

Angular wasn't just "good enough." It felt like someone had taken Java's architecture and rebuilt it for the browser.

Java Concept Angular Equivalent Same Mental Model?
Classes TypeScript Classes
Interfaces TypeScript Interfaces
Dependency Injection Angular DI
Annotations (@Entity) Decorators (@Component)
Packages Modules (NgModule)
Strong Typing TypeScript
MVC Pattern Component + Template + Service
Build Tools (Maven) Angular CLI

The Killer Feature: HTML Separated from Logic

In React, your HTML lives inside your JavaScript (JSX). For a Java developer, this feels wrong — it's like putting your SQL queries inside your entity classes.

Angular does it the Java way:

budget-plan.component.ts  ← The logic (like a Java class)
budget-plan.component.html ← The template (like a JSP/view)
budget-plan.component.css  ← The styling
budget-plan.service.ts   ← The business logic (like a Service layer)

A Java developer looks at this structure and immediately understands where everything goes. There's no cognitive overhead.

Generation 2: Angular 7→20+ with PrimeNG (2019-Present)

The Migration Approach

  • Backend stayed Java — Jersey REST API exposed the same business logic that Swing had consumed
  • Angular frontend consumed the API — each module was rebuilt one at a time
  • Both versions ran in parallel — agencies could switch modules gradually
  • PrimeNG provided enterprise UI components — DataTable, Charts, TreeTable, Dialog — all production-ready

The Result

  • Zero installation — open a browser, start working
  • Responsive design — works on tablets for field inspections
  • Real-time dashboards — budget monitoring with live charts
  • Multi-agency deployment — one codebase, customized per agency via configuration
  • Modern developer experience — new graduates can contribute immediately
Current Architecture

Saeree ERP Architecture (2026)

Angular 20+ Frontend
PrimeNG Components + Custom Modules
TypeScript + HTML Templates + CSS
Jersey Java REST API
Business Logic + Validation Rules
Authentication (SSO/LDAP) + RBAC
PostgreSQL Database
1,000+ Tables + 16+ Modules
Budget + Procurement + HR + Accounting
Specification Detail
FrontendAngular 20+ with PrimeNG
BackendJersey Java REST API
DatabasePostgreSQL
AuthenticationSSO / Microsoft Active Directory / LDAP
Access ControlRole-based, read/write per field
AuditingFull change log on every table
Modules16+ (Budget, Procurement, Inventory, HR, Payroll, Accounting, Fixed Assets, e-Saraban, and more)
Database Tables1,000+
UsersUnlimited (no per-seat licensing)
Lessons Learned

Five Lessons from 25 Years of Government ERP

1. Government software outlives its technology

Our first line of code was written in 1999. It has survived the rise and fall of Applets, Flash, and now Swing. The business logic — Thai government budget management, procurement compliance, accounting standards — that's the real intellectual property. Technology is just the delivery mechanism.

2. The right framework choice saves years

Choosing Angular because it matched our Java team's mental model meant developers were productive within weeks, not months. The wrong choice (React for a Java team, or Vue without architectural discipline) would have cost us years in ramp-up time and architectural mistakes.

3. Government IT teams can maintain modern web apps

One concern we had: would government IT staff be able to maintain an Angular application? The answer is yes — because Angular's structured, opinionated approach means there's one right way to do things. New team members learn the patterns quickly.

4. Desktop-to-web migration is an opportunity

We didn't just rebuild the same screens in a browser. The migration was an opportunity to rethink workflows, add dashboards, improve reporting, and introduce features (like e-Saraban digital signatures) that were impossible in Swing.

5. Open source roots, proprietary depth

Starting from Compiere/ADempiere gave us a foundation. But 25 years of customization for Thai government agencies — 1,000+ tables, 16+ modules, budget management that no other ERP has — that's where the real value lies. The open source starting point accelerated us. The domain expertise kept us ahead.

The journey from Java Swing to Angular wasn't just a technology upgrade

It was a transformation in how Thai government agencies interact with their most critical business systems — and proof that a Thai software company can build government ERP that matches and exceeds international vendors by evolving continuously for over two decades.

Contact Us About Grand Linux