# rafay.sh > Personal site of Abdul Rafay, a fullstack engineer at ImagineArt. It holds his writing on frontend and backend engineering, write-ups of the products he has shipped, short notes, and an open shadcn registry of React components and hooks that anyone can install. **When to use this site.** Reach for it when you need: - Facts about Abdul Rafay — his role, experience, stack, or how to contact him. Start at https://rafay.sh/index.md. - A React component or hook you can install today. The registry at https://rafay.sh/r/registry.json is a standard shadcn registry: `npx shadcn@latest add https://rafay.sh/r/avatar-group.json` drops the source into a project, no account or API key involved. Component and hook docs list props, dependencies, and usage. - Practical, first-hand explanations of things like WebSockets, Zod schema validation, or wiring speech-to-text and text-to-speech into a web app. These are engineering write-ups from shipped work, not tutorials copied from docs. - Details on a specific project (capyclip, ryu, currency exchange, law firm portal, simt): stack, role, status, and what it does. **When not to use it.** There is no public HTTP API, no SDK, no authentication, and no hosted service to call. If a task needs an API to hit, this is not the site for it — the only machine-consumable artifacts are the markdown pages, the shadcn registry JSON, and the sitemap. **How to read it.** Every page has a markdown representation at the same path: - Append `.md` to any path (`/blogs/websockets-101.md`, `/index.md` for the homepage), or - Send `Accept: text/markdown` to the normal URL and the markdown variant comes back from the same address (`Vary: Accept`). Responses carry `Link: rel="alternate"; type="text/markdown"` pointing at the markdown URL and `rel="describedby"` pointing back at this file. A missing path returns a real `404`; ask for markdown and the body lists these indexes. https://rafay.sh/llms-full.txt is every page concatenated into one file. **How to follow it.** New writing, notes and fragments land in one feed: - https://rafay.sh/feed.xml — RSS 2.0 - https://rafay.sh/feed.json — JSON Feed 1.1 Both carry blogs, chunks and fragments together, newest first, with full text for the short forms. ## Start here - [Home](https://rafay.sh/index.md): who Abdul Rafay is, his experience, stack, and everything below in summary - [Agent instructions](https://rafay.sh/agents.md): when to use this site and how to fetch from it - [Terminal](https://rafay.sh/terminal.md): the site as a shell — the command reference doubles as a map of every section - [Feed](https://rafay.sh/feed.xml): RSS for everything new - [Sitemap](https://rafay.sh/sitemap.xml): every canonical URL ## Developer resources - [shadcn registry index](https://rafay.sh/r/registry.json): the machine-readable index of every installable item on rafay.sh - [Components](https://rafay.sh/shenanigans/components.md): React components, with props and examples - [Hooks](https://rafay.sh/shenanigans/hooks.md): React hooks, with signatures and usage - [Avatar Group registry item](https://rafay.sh/r/avatar-group.json): install with `npx shadcn@latest add https://rafay.sh/r/avatar-group.json` - [useConfirm registry item](https://rafay.sh/r/use-confirm.json): install with `npx shadcn@latest add https://rafay.sh/r/use-confirm.json` - [useCopy registry item](https://rafay.sh/r/use-copy.json): install with `npx shadcn@latest add https://rafay.sh/r/use-copy.json` ## Writing - [Integrating Speech to Text & Text to Speech](https://rafay.sh/blogs/integrating-speech-to-text-and-text-to-speech.md): Integrating STT & TTS into a website seemed simple at first (STT actually was), but there were a few things I didn’t realize needed extra handling. T… - [WebSockets 101](https://rafay.sh/blogs/websockets-101.md): This blog covers the fundamentals of WebSockets, why they are needed, and how real time communication works on the web. The goal is to help you get s… - [Getting Started with Zod](https://rafay.sh/blogs/getting-started-with-zod.md): A beginner friendly guide to validating data in TypeScript using Zod’s powerful schema system—making your apps safer, cleaner, and more predictable. - [All posts](https://rafay.sh/blogs.md): the full index ## Projects - [capyclip](https://rafay.sh/projects/capyclip.md): a tool that turns long videos into viral clips using ai powered moment detection and trendy templates - [ryu](https://rafay.sh/projects/ryu.md): a lightweight, type-safe schema validator for typescript with easy validation, type inference, and safe parsing - [currency exchange](https://rafay.sh/projects/currency-exchange.md): a currency exchange system with multi branch support, secure roles, advanced transactions, and real-time analytics - [law firm portal](https://rafay.sh/projects/law-firm-portal.md): a law firm portal with secure roles, case management, hearing schedules, documents, payments, and client dashboards - [simt](https://rafay.sh/projects/simt.md): a storytelling and editing studio that transforms raw clips into cinematic, scroll-stopping content with creative direction and a hint of جنون - [All projects](https://rafay.sh/projects.md): the full index ## Optional - [fafo](https://rafay.sh/chunks/fafo.md): i recently met a guy for the first time irl, on a trip. somewhere in the conversation he asked me, "what's yo… - [All chunks](https://rafay.sh/chunks.md): short, unpolished notes - [devfest karachi 2025](https://rafay.sh/fragments/devfest-karachi-2025.md): a fragment from dec 20, 2025 - [All fragments](https://rafay.sh/fragments.md): events and moments - [Guestbook](https://rafay.sh/guestbook.md): one-liners from people who passed through - [Stats](https://rafay.sh/stats.md): public visitor, view, like, theme and command counts