Skip to content
View jsf-tan's full-sized avatar
⚙️
Building reliable systems
⚙️
Building reliable systems
  • Joined May 8, 2026

Block or report jsf-tan

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
jsf-tan/README.md

Joseph Tan Full-Stack Engineer (Backend-focused, Freelance)

I build and maintain full-stack web applications, with most of my work centered around backend services, APIs, production debugging, and performance issues.

A lot of freelance projects already have something that hurts — slow endpoints, unstable behavior, deployment problems, database bottlenecks, or backend code nobody wants to touch anymore because changes keep breaking something else.

That’s usually where I step in.


What I work on

  • Full-stack applications using React, TypeScript, Node.js, and Python
  • Backend APIs and service logic
  • PostgreSQL query optimization and schema cleanup
  • Redis caching for reducing unnecessary database load
  • Background jobs and async processing
  • Production debugging through logs and request tracing
  • Refactoring backend code that became risky or difficult to maintain

What I care about

  • APIs behaving consistently instead of working “most of the time”
  • Keeping frontend state and API behavior predictable
  • Database queries staying reasonable under heavier usage
  • Debugging that doesn’t turn into guessing for three hours
  • Keeping deployments boring and predictable

How I approach projects

I prefer applications that stay understandable when things go wrong.

That usually means:

  • separating business logic from API and database layers
  • avoiding abstractions until they solve a real problem
  • adding caching only after identifying the actual bottleneck
  • keeping logs readable enough to trace failures quickly

I’m generally skeptical of unnecessary complexity. I’d rather work with a straightforward application that’s easy to debug than a clever setup that becomes painful to maintain later.


Tech stack

React, TypeScript
Node.js, Python
PostgreSQL, Redis
Docker, deployment workflows, CI/CD pipelines


Current focus

Building reliable full-stack applications, improving backend performance, and handling production issues without adding unnecessary complexity.


Contact

Pinned Loading

  1. Bend Bend Public

    Rust 1

  2. TreesIndia TreesIndia Public

    TypeScript 2