open to new roles

$ whoami

Hi, I'm Alfred 

Software Engineer · Indonesia · Remote, any timezone

Six years building production web apps, all of it remote for teams in Singapore and Australia. Right now I build the web side at a 30-person company: six production React apps, most built from scratch. On the side I build Gallerify, a SaaS for photographers.

~/ask-me.shready

$ system
connected to alfredlouis.com. Ask anything about my work.

02 · ~/work --featured

Selected work

Things I've built and shipped, from a live SaaS to internal tools.

[01]2024 - Present
SaaS Platform

Gallerify

SaaS for photographers: client galleries, portfolios, studio CRM, and invoicing. I build it end to end, including payments, infrastructure, and image processing.

Two payment providers, because international customers pay through Lemon Squeezy and Indonesian customers pay through Midtrans. Per-studio custom subdomains on wildcard routing. Face-based photo search on AWS Rekognition so a wedding guest can find photos of themselves in a 500-image gallery, with indexing running as background jobs so nobody waits on an upload.

Next.js 14TypeScriptSupabase (PostgreSQL)RedisCloudflare R2AWS RekognitionLemon SqueezyMidtransAnthropic SDK
[02]Aug 2025 - Jan 2026
Creator Platform

Root Creator

Creator-economy platform at an early-stage startup: storefront, creator dashboard, and content viewer.

I worked across the stack: React and TypeScript features in a pnpm monorepo of three Vite apps sharing an internal component library, all consuming a Hasura GraphQL API through typed codegen hooks, plus CRUD endpoints, transactional email, Xendit payments, and file uploads on the Go service behind it. The founders shut the project down before launch.

React 18TypeScriptViteGoHasura GraphQLJotaiRadix UITiptapTanStack TableClerkXenditCloudflare PagesGCP Cloud Run
[03]2024
Warehouse & Logistics

Inventory Sariadi

Internal warehouse, inventory, and invoicing system for an Indonesian freight consolidation and export logistics business.

Next.js 14TypeScriptMongoDBPrismaNextAuth v5shadcn/uiTanStack TableZod
[04]2025
Corporate Site & CMS

Krispi

Bilingual marketing site and blog CMS for an Indonesian cracker manufacturer selling to international B2B buyers.

Next.js 16React 19TypeScriptTailwind CSS 4PrismaNeon PostgresCloudinaryTiptap

~/work --experiments

Also building

In progress, and honest about where the edges are.

CCTV Analyticsongoing

Kokuo

CCTV analytics system for retail. Two Dockerized pipelines: a YOLO banknote detector running on till cameras, and a face pipeline that clusters visitors across cameras to measure dwell time.

I built the platform around them: Postgres with pgvector, a migration off SQLite, Railway deploys, Cloudflare R2 for image storage, a token-gated Next.js monitor dashboard, and the operational tuning. The cash detector is in production after nine retrain iterations chasing false positives; the face pipeline is still unreliable and camera placement, not threshold tuning, turned out to be the real constraint.

The computer vision code is Python and heavily AI-assisted. I can explain how the system behaves and why it fails, not write the model code myself.

PythonYOLODockerPostgres + pgvectorNext.jsRailwayCloudflare R2

03 · ~/whoami --verbose

About

I started building things for other people's businesses in 2020 and have worked remotely ever since: an Australian agency first, then two Singapore product teams. Six years of standups over video, specs written down properly, and shipping without anyone standing behind me.

At HomePay the core product is mobile and I cover the web side. Six apps: the main admin panel spanning twenty-odd domain areas, a project accounting dashboard, an internal ops tool for matching homeowner leads to interior designers, a public referral campaign site, a video consultation app with in-call chat and a shared whiteboard, and the share-preview app that catches links shared out of the mobile app and hands visitors back into it. Each one starts as an empty repo and ends up deployed, which means I care about the boring parts too: build config, deploys, form validation nobody wants to write. I run the same stack across the internal tools so moving between them is free, and something lighter on the public-facing one where bundle size and first load actually matter.

Before that, three years at Codomo working on Rolljak, a live audience engagement platform used by SMU, SUTD, and Accenture. Rails monolith, server-rendered views, jQuery, Postgres query tuning, and mentoring interns through their first production code.

On the side I build Gallerify: payments, infra, subdomains, and image processing. It's the first time I've had to live with my own shortcuts for a year, which has taught me more about “maintainable” than any job has.

I like simple architecture, boring dependencies, and code someone else can pick up in a week.

6

years remote

4

companies shipped for

6

production apps in my hands right now

Experience

  • Software Engineer @HomePay / EZiD

    August 2024 - Present · Singapore (Remote)

    Software engineer at a 30-person company matching homeowners with interior designers and handling renovation escrow payments. Core product is mobile; I cover the web applications.

    • Ship features on the main admin panel (React 18, TypeScript, Redux, MUI), an inherited back-office across 20+ domain areas, and drive a systematic Jest and React Testing Library coverage rollout across every module. The SPAs deploy to S3 and CloudFront via the Serverless Framework, with CI on Bitbucket Pipelines.
    • Project accounting SPA: projects, expenses, collections, suppliers, reporting, zipped multi-file exports
    • Internal ops dashboard: kanban lead board, WhatsApp conversation history, role-gated routes, lead delivery and checkout
    • Public referral campaign site: multi-step JSON-driven lead form, OTP phone login, document uploads, live referral dashboard over WebSocket
    • Video consultation app on the Agora RTC and Chat SDKs with a real-time collaborative whiteboard
    • Public share-preview app (React 19, Vite, Tailwind CSS, a lighter stack than the internal tools because bundle size decides whether a shared link converts): deep-link handoff that detects whether the native app actually launched before falling back to the app store
  • Software Engineer @Codomo Pte Ltd

    August 2021 - June 2024 · Singapore (Remote)

    Rolljak, a live audience engagement platform used by SMU, SUTD, and Accenture.

    • Shipped features end to end on a Rails and PostgreSQL monolith: models, controllers, server-rendered views, and the jQuery and CSS on top
    • Rebuilt the product's main pages mobile-first, which became the primary way participants joined live sessions
    • Tracked down N+1 query patterns on the heaviest pages, collapsing dozens of per-row queries into single eager-loaded calls, and added the missing foreign key indexes behind them
    • Mentored interns through their first production code
  • Software Engineer @V3 Leisure Management and Marketing

    September 2020 - August 2021 · Perth, Australia (Remote)
    • Rebuilt 12+ client websites in React with responsive layouts
    • Integrated the Tourism Exchange Australia REST API into booking flows for enterprise tourism clients

Skills

Frontend

ReactNext.js (App Router)TypeScriptRedux ToolkitReduxredux-thunkTanStack QueryJotaiReact Hook FormZodMaterial UITailwind CSSshadcn/uiRadix UIWebSocketsAgora SDK

Backend

Ruby on RailsNode.jsNext.js API routesRESTGraphQL and HasuraWebSocketsbackground job queueswebhookspayment APIs

Data

PostgreSQLSupabasePrismaMongoDBRedisschema designquery optimization

Testing

JestReact Testing Library

Infra

AWS S3 + CloudFrontAWS RekognitionServerless FrameworkVercelCloudflare R2 + PagesViteBitbucket Pipelines

04 · ~/contact --form

Let's build something.

replies in < 24h

LocationSurabaya, Indonesia
Timezone

Based in Indonesia (UTC+7). No timezone constraint, US hours included. Six years working remotely for teams in Singapore and Australia.

Statusopen to new roles
StackReact / Next.js / TypeScript / Node / PostgreSQL

protected · rate-limited