- Privacy-first web tools. Everything runs in the browser. No upload, no server, no account.
- macOS apps. Swift, SwiftUI and AppKit, built for developers who live in the terminal.
- AI and no-code automation. 30+ published n8n templates with 32,000+ uses.
Currently freelancing, and looking for an internship or an engineering role at a startup. I like small teams that ship fast and let one person own a thing end to end. The quickest way to reach me is X or LinkedIn, and my work is at roshan-ramani.vercel.app.
A Dynamic-Island-style overlay that surfaces Claude Code permission prompts, questions, cost and context usage in the MacBook notch. Read the diff, approve or deny with one key, and never tab back to the terminal. Native menu-bar app in Swift with SwiftUI and AppKit, works with VoiceOver, and runs entirely on your machine.
Source on GitHub · ClaudeNotch website · Download for macOS
Shows exactly what a photo secretly carries, GPS location, device details and timestamps, then strips it losslessly, byte by byte, entirely client side. No upload, no server, no account. Selective field redaction, HEIC support, and an installable PWA with Android share-target support. Built in vanilla JavaScript, one tested feature at a time.
Open MetaStrip · MetaStrip changelog
30+ published templates with 32,000+ template uses across n8n and Needle. My survey report generator, built with Jotform and Gemini, has passed 240+ views on its own. I work as an n8n creator and a Needle content partner.
| Project | What it does | Live |
|---|---|---|
| GodPrompter | Craft better AI prompts | godprompter.com |
| GitHub Wrapped | Your GitHub year, wrapped up | GitHub Wrapped demo |
| PDF Toolbox | Merge, split and convert PDFs in the browser | PDF Toolbox demo |
| iloveinvoice | Create and download invoices | iloveinvoice.live |
| QR Code generator | Generate custom QR codes | qr-done |
The whoami card at the top lists all of it. The six I reach for most:
I use agents daily and treat their output as a draft, not a result. Vibe coding gets a prototype standing in an afternoon. What ships gets read line by line, tested and reviewed. ClaudeNotch exists for exactly that reason: it puts a human in the loop on every command an agent wants to run.
The heatmap, the ship log, the portrait and the terminal card at the top are not hosted widgets. They are SVGs generated in this repo, so nothing here can rate-limit or go down and leave a broken image on my profile.
| Piece | Script | Refreshed |
|---|---|---|
contrib-heatmap.svg |
scripts/fetch_contributions.py + render_heatmap_svg.py |
Daily, by GitHub Actions |
shiplog.svg |
scripts/fetch_shiplog.py + render_shiplog_svg.py |
Daily, by GitHub Actions |
ascii-portrait.svg |
scripts/make_ascii_svg.py |
By hand, when the photo changes |
info-card.svg |
scripts/make_info_card.py |
By hand, when the facts change |
GitHub strips <script> from a README but does render SVG through <img> and does
run CSS keyframes and SMIL inside it, so all the animation lives in the files.
Python stdlib only, no dependencies. Every animation plays once, freezes, and
respects prefers-reduced-motion.
The heatmap is scraped from the public calendar page, no token needed. The ship log reads the repos and their commits from the API, because the events feed stopped carrying commit messages: its push payloads now hold only the before and head SHAs.
python3 scripts/fetch_contributions.py # writes data/contributions.json
python3 scripts/render_heatmap_svg.py # writes contrib-heatmap.svg
python3 scripts/fetch_shiplog.py # writes data/shiplog.json
python3 scripts/render_shiplog_svg.py # writes shiplog.svg
STATIC=1 python3 scripts/make_info_card.py # frozen frame for local preview
Building in public, one shipped feature at a time. Say hi on X or LinkedIn.

