personal-info
bio.ts — read-only
/**
* About me
*
* I'm Raahat. I build whole products — the screen
* you touch, the API behind it, and the database
* underneath. The expensive bugs live in the seams
* between those three, and I'd rather own them than
* argue about whose side they're on.
*
* Six years of freelancing taught me the code is the
* easy part. The hard part is asking the awkward
* question in week one instead of week six.
*
* Most of my work now is getting AI to behave in
* production: retrieval that cites its sources,
* agents that fail loudly.
*
* I work remotely, reply within a few hours, and
* tell you when an idea won't work.
*/
 
const raahat: Developer = {
base: "remote · worldwide",
ships: ["web apps", "mobile apps", "ai features", "apis"],
languages: ["typescript", "python", "go", "swift", "kotlin"],
stack: {
web: ["react", "next.js", "typescript", "node.js"],
backend: ["node.js", "python", "go"],
mobile: ["react-native", "expo", "swift", "kotlin"],
ai: ["openai", "claude", "langchain", "rag", "agents"],
data: ["postgresql", "pgvector", "mongodb", "redis"],
},
freelance: "@devemon", // fiverr
openToWork: true,
};

// Code I'd show you first:

Errors you can't forget

ts

Every call in my apps comes back like this. Skip the failure branch and it's a compile error, not a 2am page.

type Result<T, E = ApiError> =
| { ok: true; data: T }
| { ok: false; error: E };
async function call<T>(req: Request): Promise<Result<T>> {
const res = await fetch(req);
if (!res.ok) {
return { ok: false, error: await toApiError(res) };
}
return { ok: true, data: (await res.json()) as T };
}
// no path reaches `data` without narrowing past `error`
const me = await call<User>(meRequest);
if (!me.ok) return showError(me.error);
render(me.data);

Asking before you move

ts

Motion you can't turn off is a bug. One MotionConfig hands the OS setting to every Framer animation here; the canvas, GSAP and timer effects it can't see read it through this.

const QUERY = "(prefers-reduced-motion: reduce)";
function subscribe(onChange: () => void) {
const mq = window.matchMedia(QUERY);
mq.addEventListener("change", onChange);
return () => mq.removeEventListener("change", onChange);
}
export function usePrefersReducedMotion(): boolean {
return useSyncExternalStore(
subscribe,
() => window.matchMedia(QUERY).matches, // in the browser
() => false, // during SSR
);
}
// <MotionConfig reducedMotion="user"> covers the rest