mohammad-rahat
personal-info
bio.ts — read-only
/**
* About me
*
* Hi, I'm Mohammad — a developer who ships products
* end-to-end: pixel-perfect interfaces on the front,
* solid APIs underneath, mobile apps that feel native
* on both stores, and AI features that actually work
* in production.
*
* I care about the small details: the ease curve on a
* transition, the shape of an API response, the way a
* layout breathes on a phone.
*/
 
const raahat: Developer = {
base: "remote · worldwide",
ships: ["web apps", "mobile apps", "ai features", "apis"],
languages: ["typescript", "python", "go", "dart", "swift", "kotlin"],
stack: {
web: ["react", "next.js", "typescript", "node.js"],
backend: ["node.js", "python", "go"],
mobile: ["flutter", "react-native", "swift", "kotlin"],
ai: ["openai", "claude", "langchain", "rag", "agents"],
data: ["postgresql", "pgvector", "mongodb", "redis"],
},
freelance: "@devemon", // fiverr
openToWork: true,
};

// Code snippet showcase:

MR

@mohammad-rahat

Created 5 months ago

3 34
function usePrefersReducedMotion(): boolean {
const [reduced, setReduced] = useState(false);
useEffect(() => {
const mq = matchMedia("(prefers-reduced-motion: reduce)");
setReduced(mq.matches);
mq.addEventListener("change", (e) => setReduced(e.matches));
}, []);
return reduced;
}
MR

@mohammad-rahat

Created 6 months ago

2 27
class ProgressRing extends StatelessWidget {
const ProgressRing({super.key, required this.value});
final double value;
@override
Widget build(BuildContext context) {
return TweenAnimationBuilder<double>(
tween: Tween(begin: 0, end: value),
duration: const Duration(milliseconds: 600),
curve: Curves.easeOutExpo,
builder: (_, v, __) => CustomPaint(painter: RingPainter(v)),
);
}
}
MR

@mohammad-rahat

Created 7 months ago

1 18
const clamp = (value: number, min: number, max: number) =>
Math.min(Math.max(value, min), max);
// keeps the snake inside the board
head.x = clamp(head.x, 0, COLS - 1);
head.y = clamp(head.y, 0, ROWS - 1);
MR

@mohammad-rahat

Created 9 months ago

0 9
function debounce<T extends (...a: never[]) => void>(fn: T, ms = 200) {
let t: ReturnType<typeof setTimeout>;
return (...args: Parameters<T>) => {
clearTimeout(t);
t = setTimeout(() => fn(...args), ms);
};
}