Skip to content
View faisalaffan's full-sized avatar
🚀
Build Something Huge
🚀
Build Something Huge

Block or report faisalaffan

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
faisalaffan/README.md

Muhammad Faisal Affan

Product-minded engineer who ships end-to-end. I don't just build features — I track whether they work. 6+ years in production software development.

Based in Bogor, West Java, Indonesia. Building MSTORE — a multi-tenant POS platform for Southeast Asian SMEs. Engineering at BTPN Syariah (enterprise banking).

Available for remote contracts with US and global companies. Get in touch →


Connect

Dev.to LinkedIn Medium GitHub Website Resume Email


What I work on

I build production systems end-to-end — backend services, admin dashboards, mobile apps, and the infrastructure that runs them. My focus is on multi-tenant SaaS architecture and Go backend development at scale.

Currently building

  • MSTORE — Multi-tenant POS platform for Southeast Asian SMEs (Go/GORM/MySQL, Next.js, Flutter, Kubernetes)
  • PAYSALES — Multi-tenant ERP platform for Global SMEs (Go/GORM/MySQL, Next.js, Flutter, Kubernetes)

Key projects

  • 🏦 BTPN Syariah — Enterprise banking with Golang & Flutter
    • Sitepat — Customer-facing banking apps
    • Tepati — Loan management system
  • ⛏️ PT Harmoni Panca Utama — Mining operations platform
  • 🏢 Kano Solution — Enterprise solutions with React & Golang

Background

Currently — Senior Backend Developer @ BTPN Syariah + Building MSTORE

Previously

  • Software Engineer @ Kano Solution (2020–2022)
  • Internship @ EACIIT (2018)

Tech I reach for

Go TypeScript Python Dart Next.js React Vue.js Node.js Flutter PostgreSQL MySQL MongoDB Redis Kubernetes Docker Terraform AWS Kafka MQTT Grafana Prometheus Loki Playwright Solidity


Open Source

  • claudio — Anthropic SDK for the Dart ecosystem
  • chainnusa — Southeast Asia's on-chain intelligence platform
  • testcast — Opinionated Playwright TypeScript scaffolder
  • geostack — Geospatial REST API boilerplate with Node.js, PostgreSQL/PostGIS & Docker

View all contributions →


How I think about engineering

  • Multi-tenancy is a design decision, not a feature flag. Tenant isolation, RBAC scope, and cost-center modeling have to be designed into the schema, not bolted on later. I've seen both sides of this — first retrofitting multi-tenancy into BTPN Syariah's banking platform serving 4.1 million users, then building MSTORE and PAYSALES from scratch with multi-tenancy as a first-class constraint. The difference is night and day. Retrofitting into a single-tenant codebase is where most SaaS products quietly die — usually around the third enterprise customer, when someone asks “can we just add one more tenant?” and the schema says no. Getting it right early is expensive in design time. Getting it wrong is expensive in years.

  • Contracts prevent drift — especially with AI agents. API specs, DB schemas, and service boundaries are the source of truth. Everything else is an implementation detail. I learned this the hard way building ML infrastructure at BTPN: OJK compliance meant every credit-scoring prediction had to be fully reconstructable — who requested it, when, with what input, what came out. Then again building RAG pipelines where the backend contract matters as much as the model itself. LLMs write code fast but respect exactly zero invariants — which is why contract-driven workflows matter more now, not less.

  • If it's not observable, it's not shipped. The LGTM stack — Loki, Grafana, Tempo, VictoriaMetrics — is baseline on every project I own. But the real lesson came from a fuel anomaly detection system I built for mining operations: pure sensor data missed the theft patterns. It was the combination of GPS movement telemetry with fuel readings that made the anomalies visible. Three theft incidents caught in the first month, 8–12% annual fuel cost reduction. The takeaway: observability isn't just dashboards — it's knowing which signals actually matter and correlating across layers that weren't designed to talk to each other.

  • Build for the worst-case scenario. The hardest engineering lessons I've had all share a pattern: the system worked fine in normal conditions. Then the VSAT link to a remote mine site dropped to 512kbps — or a self-intersecting polygon silently corrupted every downstream spatial query — or field agents in dead zones needed offline sync without losing loan disbursement data. At BTPN I cut data loss from 23% to zero with offline-first architecture. At Petrosea I built geofence breach detection that ran under 2 seconds against 50,000 spatial events per second. Happy-path engineering is easy. The edge cases are where systems earn their existence.

  • AI-assisted, not AI-dependent. Claude Code, MCP servers, and semantic search are force multipliers — I use them aggressively. But I still read every diff, own every deployment, and stand behind every line that ships. The leverage transfers; the accountability doesn't. Tools accelerate execution, but they don't replace knowing why a design decision was made. If I can't explain the trade-off to another engineer at 11 PM during an incident, I shouldn't have shipped it.


Writing & deep dives

Case studies — product & architecture writeups

Technical content on Dev.to, Medium, or Study Case

  • Co-founder at Affan Tech — building tools for the developer community

More on LinkedIn · Resume · Study Case · Showcase Product


Featured projects

geostack

Starter boilerplate for building geospatial REST APIs with Node.js, PostgreSQL/PostGIS, and Docker.

 TypeScript
chainnusa

Southeast Asia’s on-chain intelligence platform.

 TypeScript
testcast

Opinionated Playwright TypeScript scaffolder — cast your E2E architecture once, test forever.

 TypeScript
claudio

Anthropic SDK untuk ekosistem Dart.

 Dart
belajardart

Dasar-dasar pemrograman Dart & best practice Flutter.

 Dart / Flutter
foss-contribution

Open source contributions across the Go, TypeScript, and Dart ecosystems.

 Polyglot

Let's talk

  • 💼 Hiring? Available for remote senior/staff engineering roles. Email
  • 🤝 Collaborating? Open to OSS contributions in Go, DevTools, or SaaS architecture.
  • 💬 Just chatting? LinkedIn works best.

Based in Bogor, West Java, Indonesia · GMT+7 · 🕐 9 AM–5 PM PST / EST overlap for US team calls

Pinned Loading

  1. foss-contribution foss-contribution Public

    Faisal Affan Open Source Contribution

    Python 1

  2. ollama/ollama ollama/ollama Public

    Get up and running with Kimi-K2.5, GLM-5, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.

    Go 172k 16.2k

  3. geostack geostack Public

    A starter boilerplate for building geospatial REST APIs with Node.js, PostgreSQL/PostGIS, and Docker.

    TypeScript

  4. chainnusa chainnusa Public

    Southeast Asia's on-chain intelligence platform

    TypeScript

  5. testcast testcast Public

    Opinionated Playwright TypeScript scaffolder — cast your E2E architecture once, test forever.

    TypeScript 1

  6. claudio claudio Public

    Anthropic SDK For Dart Ecosystem

    Dart 1