Findr

On-premises system for a government agency in Bali that shortlists SMEs for trade exhibitions, with a Go backend, a Windows service installer and a SwiftUI client for Mac, iPad and iPhone.

Year
2026
Role
Tech lead (team of 4); designed and built the backend, Windows installer and Apple client
Kind
Apple Developer Academy
Status
Shipped
Links
Private source, no public link

Problem

A government agency in Bali shortlisted SMEs for trade exhibitions by hand. It needed a tool that IT staff with no backend experience could install and run on their own machines.

What I built

Findr helps a government agency in Bali shortlist fashion and craft SMEs for trade exhibitions. Its Match feature ranks the whole SME database against each event's criteria: rule-based checks cover the structured criteria and Apple's on-device Foundation Models judge the free-text ones, giving a 0-100 fit score with per-criterion explanations in Indonesian, without sending data off-site. The backend is a single Go binary with an embedded SQLite database, a WinForms app installs it as a Windows service for non-technical IT staff, and the native SwiftUI client runs on macOS, iPadOS and iOS. The client team approved it after a live demo and it is in production use.

Decisions & trade-offs

  • A single Go binary with embedded SQLite instead of a database server, so there is nothing else to install or maintain.
  • A Windows installer that registers the server as a service, so non-technical staff never touch a terminal.
  • On-device Apple Foundation Models for the free-text criteria, so SME data never leaves the agency.
  • Optimistic concurrency (If-Match) and an automatic snapshot before each migration, because several people edit the same data.

Highlights

  • Go backend ships as one static binary with an embedded SQLite database: no other dependencies to install
  • JSON API v1 with admin / editor / user roles, one-time invite codes, access tokens that expire after inactivity, and per-client rate limiting
  • Optimistic concurrency with If-Match on writes; all-or-nothing SME import (merge or replace); export as CSV ZIP or SQL
  • Audit log with a row cap, automatic database snapshot before each migration, graceful shutdown that finishes in-flight requests
  • Admin CLI built into the same binary (create-admin, reset-admin, delete-user)
  • Windows helper installs the server as a service via WinSW, adds a firewall rule, and requires typing DELETE ALL DATA before destructive actions
  • SwiftUI client keeps tokens in the Keychain, reconnects with backoff (2, 5, 10, 30 s), and allows plain http only on local-network addresses
  • Notarized macOS DMG and iOS builds distributed through TestFlight
  • Architecture documented in arc42, in English and Bahasa Indonesia; built spec-first with independent code audits

Stack

  • Go
  • SQLite
  • SwiftUI
  • Swift (macOS, iPadOS, iOS)
  • C# / .NET Framework 4.8 (WinForms)
  • WinSW
  • Apple Intelligence (on-device)