Turning ideas into
products people use

Alvin Quach is a full stack developer who ships web apps from concept to production—real-time systems, AI tools, data visualization, and developer utilities.

alvinquach.dev
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/**
 * Developer Profile Module
 * ========================
 * TypeScript adds compile-time type checking to JavaScript.
 * Errors are caught before runtime, making refactoring safer.
 */
import { skills } from './skills';
import { careerJourney } from './career';

/**
 * Type Alias: Status
 * ------------------
 * 'type' creates an alias for any type expression.
 * Union types (A | B | C) restrict values to specific options.
 * This is called a "discriminated union" or "tagged union".
 */
type Status = "open" | "freelance" | "unavailable";

/**
 * Interface: Developer
 * --------------------
 * Interfaces define the "shape" or "contract" for objects.
 * Any object typed as Developer MUST have all these properties.
 *
 * Key differences from 'type':
 * - Can be extended: interface Senior extends Developer
 * - Can be implemented: class Person implements Developer
 * - Declaration merging: same interface name = combined
 */
interface Developer {
  readonly name: string;   // readonly = cannot reassign after init
  role: string;
  location: string;
  techStack: readonly string[];  // readonly array = no push/pop/etc
  openTo: string[];
  strengths: string[];
  status: Status;  // Must be one of the Status union values
}

/**
 * Developer Instance
 * ------------------
 * The ': Developer' annotation enforces the interface.
 * TypeScript will error if any property is missing or wrong type.
 */
const developer: Developer = {
  name: "Alvin Quach",
  role: "Full Stack Developer",
  location: "San Francisco Bay Area, CA",
  techStack: Object.keys(skills),  // 60 skills total
  openTo: [
    "Full Stack Developer",
    "Full Stack Engineer",
    "Web Developer",
    "Web Engineer",
    "Software Engineer",
    "UX Engineer",
    "UI Engineer",
    "Data Analyst",
    "Data Engineer",
    "DevOps Engineer",
    "Developer Advocate",
    "Community Manager",
    "Product Manager",
    "Program Manager"
  ],
  strengths: ["Full-stack versatility - comfortable across frontend, backend, and data", "Strong communication skills from community management background", "User empathy - I think about how features affect real people", "Self-directed - I shipped multiple 0-to-1 products independently", "Comfortable with ambiguity and figuring things out"],
  status: "open",
};

export default developer;
TypeScript ReactUTF-8
Ln 71, Col 1developer.tsx

Client Work

Professional Projects

Real solutions built for real clients

Featured
Client Work
Healthcare / Physical Therapy

Hoparc Physical Therapy

Healthcare website migration from Wix to modern Next.js stack for a pelvic floor physical therapy practice

A pelvic floor physical therapy practice in Markham, Canada was struggling with their Wix website—Core Web Vitals were failing (LCP over 6 seconds), the site was difficult for staff to update, and local SEO rankings were poor despite quality care. This was also an opportunity to mentor Sean Sipus, a fellow Juno College of Technology alumnus from Toronto who needed a refresher on React fundamentals. I led the rebuild while pair programming with Sean through every feature, mentoring him in TypeScript, Next.js, and Sanity CMS.

Tech Stack

Next.js
Sanity
TypeScript
TailwindCSS
GraphQL

Key Results

  • Largest Contentful Paint improved from 6.2s to 1.8s (71% improvement)
  • PageSpeed Insights score increased from 32 to 94
  • Organic search traffic increased 45% within 3 months of launch

Personal Projects

Side Projects & Experiments

Ideas I've built to learn, explore, and solve problems

OpportunIQ

AI-powered platform for diagnosing and resolving real-world maintenance issues

TypeScript
Next.js
PostgreSQL
Drizzle
D3.js
Mapbox
OpenAI
React-Query

SculptQL

Local-first SQL IDE with zero-latency querying and visual schema exploration

TypeScript
Next.js
Codemirror
D3.js
Zustand
GraphQL

Hoop Almanac

Fantasy basketball analytics platform with ML predictions and live multiplayer drafts

TypeScript
Next.js
PostgreSQL
Drizzle
OpenAI
D3.js
Zustand
Python
FastAPI
Scikit-learn
Pandas
NumPy
XGBoost
Jupyter Notebooks
pgvector
WebSockets

Beyond the Code

Hobbies & Interests

What I do when I'm not building software. These interests shape who I am and often inspire creative approaches to problem-solving.

DJing

I used to DJ, experimenting with a unique blend of trance and techno layered with hip-hop beats - a house/rap fusion that's hard to categorize. This taught me about reading a room, timing, and creating experiences that flow naturally. There's a direct parallel to UX: understanding your audience, building tension and release, and crafting seamless transitions. Also comfortable with audio equipment, mixing software, and performing under pressure.

AQ

Don't hesitate to reach out.
I'm always open to chat.

Have questions, feedback, or a project in mind? I typically respond within 1-2 days.