OpenVeil — making truth verifiable
OpenVeilCam is hardware-linked, censorship-resistant image capture built on the Nostr protocol — for journalists, activists, and human-rights defenders whose authentic photos get dismissed as fake while platforms quietly delete the evidence. I built the whole thing alone: the Rust camera runtime on a Raspberry Pi, the cryptographic signing and publishing pipeline, and the website that has to explain it. The design brief for that site was brutal in its simplicity: a system about trust cannot ask you to take its word for anything — so the page shows real terminal output from the real device instead of marketing renders.
Wireframe — hero
device → capture → sign → publish, drawn once, readable in 10 seconds
Shipped screen — openveil.world
Capture the Truth.
Cryptographically Sealed.
OpenVeilCam provides hardware-linked, censorship-resistant image capture built on the Nostr protocol. Because human rights start with undeniable facts.
▶ Watch Demo Video About Project Technical Architecture“See it in action” — real terminal output, told as three tabs (click them)
$ OpenVeilCam --init INFO Initialising hardware-linked DeviceIdentity… INFO salt loaded · keypair derived (secp256k1) ✓ npub stable across reboots — Nostr-compatible
$ OpenVeilCam capture INFO image pipeline initialised · capturing frame INFO high-resolution JPEG written — canonical source ✓ no metadata manipulation before attestation
$ OpenVeilCam publish INFO ECDSA signature computed for capture.jpg INFO uploading to Blossom · publishing NIP-94 event ✓ accepted wss://relay.primal.net ✓ accepted wss://nos.lol · wss://relay.snort.social
Flow — from photon to proof
The audience is people who verify claims for a living. Polished product renders would work against the message, so the “See it in Action” section shows the actual Raspberry Pi terminal — my username and all — split into three tabs so the pipeline reads as a story: identity → capture → publish.
Every decentralization project ships a black site with neon gradients. OpenVeil is about evidence and human rights, not speculation — so the page is warm paper with black type, and darkness is reserved for the two objects that earn it: the architecture diagram and the terminals. The contrast makes them the obvious focal points.
Device identity → capture → sign & publish. That trio appears in the hero diagram, the tabbed demo, and the feature list — the same mental model at three zoom levels. Seven deep technical features (Rust runtime, ZKP compatibility, enclave support) exist on the page, but only after the simple version has landed.
ngx-l402.org — selling infrastructure you can’t see
An nginx module has no screens. The whole product is a config file, an HTTP 402, and money arriving in your node. So the site treats code blocks as the hero images and proves the product with a live payment demo instead of promises. Warm paper, one blue, and a page that reads like very good documentation — because for engineers, docs are the marketing.
Wireframe
no stock art anywhere — the config is the picture
Shipped screen
01 · Overview
Accept Lightning payments in front of any HTTP API.
An open-source nginx module that puts an L402 paywall on any upstream — two lines of config, eight payment backends, non-custodial.
Quickstart → View on GitHub# put a paywall on any upstream — no API rewrite location /v1/ { l402 on; l402_amount_msat_default 1000000; # 1,000 sats proxy_pass http://upstream; }
The live demo — designed state by state (press “Request” to walk the flow)
Flow — the demo people actually complete
Blue only ever marks something you can click. When color means action, nobody hunts for the buttons.
Every failure state in the demo teaches recovery — down to naming the missing CORS header. The unhappy paths took longer to design than the happy one.
The site has full light and dark modes, but the terminal never changes costume. Light mode just gets a window into it.
DevConnect — matchmaking for developers
A network for developers built on a matchmaking loop instead of an endless feed: you see one person at a time and choose — Connect or Ignore. Mutual interest becomes a connection, connections unlock chat. I designed and built all of it: auth, the card deck, requests, real-time chat, a profile editor with live preview, and a two-tier premium model.
Wireframe — the one-card loop
one card, two verbs, zero scroll — the decision is the interface
Browse — try the deck: Connect or Ignore
Aarav Mehta
Backend dev. Building things that scale.
Requests & Chat
Incoming Requests
Kunal K
Male, 30 · "Hey there!"
Connections
Rebekah M
Female, 28 · connected
Rebekah M
● onlineFlow — from stranger to conversation (every step is consent)
Early sketches had a browsable grid of developers. It turned people into thumbnails. One full-width card forces you to actually read a person before deciding — and it made the mobile and desktop layouts nearly identical for free.
The edit form sits next to a live preview of your own card, updating as you type. You’re never styling abstract fields — you’re looking at exactly what strangers will judge in three seconds. Completion went up because vanity is a great motivator.
Messaging is gated behind an accepted request — no cold DMs by design. It’s more code (requests, accept/reject states, gating) but it’s the difference between a network and an inbox full of “hi.” Building the API myself meant I could enforce it server-side, not just hide a button.
MindfulHub — a wellness ecosystem in five doors
A mental-wellness platform that goes past mood tracking: journaling, a five-point mood check-in with AI-powered suggestions, professional counselor profiles with appointment booking, community testimonials, and structured feedback. The design problem was scope — six features could easily become a maze. My answer was a hub: one calm purple dashboard where every feature is a door with a plain-language sentence on it, and every room has one big “Back to Dashboard” button. You always know where you are and how to get home.
Wireframe — hub & spokes
cards say what you’ll do, not what the feature is called
Shipped screens — pick a mood, then ask the AI
Welcome back, Friend ✨
LogoutMy Journal
Write your thoughts, feelings, and experiences.
Mood Tracker
Track emotions, get AI suggestions.
Testimonials
Read and share community stories.
Find a Counselor
Book professional support.
Mood Tracker 💭
← Back to DashboardHow are you feeling today?
Flow — a check-in, and where it can lead
The mood scale pairs each face with its label — Very Sad through Very Happy — because a 😐 means different things to different people on different days. It also keeps the scale usable with a screen reader, which matters more here than in most apps.
“Get AI Suggestions to Improve Mood” is deliberately its own hot-pink action, visually separate from the calm purple “Save.” On your lowest day, unsolicited advice from software is the last thing you want — so the AI waits to be asked. Opt-in was the design; the color contrast is what enforces it.
An app should know its limits. Counselor cards carry what actually builds trust — specialization, credentials, years of experience, rating, availability — and end in one verb: Book Appointment. The most important flow in a wellness app is the one that leads out of it.
The same loop, every project
Nothing exotic — the value is that I run the whole loop myself, from paper to deployed product. What ships is what was designed, because the same person did both.
Forest green for DevConnect, calm purple for MindfulHub, warm cream for OpenVeil and ngx-l402 — each palette comes from what the product is for, and each app commits to one identity instead of borrowing a trend. Range matters more to me than a house style.
Engineers get terminals and config files as hero images. People having a hard day get soft cards and plain sentences. Same designer, opposite vocabularies — the audience picks the language, not my taste.
I never draw something I can’t build, and I never blame a developer for what shipped. When I work with a team, handoff is a conversation instead of a PDF thrown over a wall — I speak both dialects.
Available for contract work — design, build, or both
Landing pages and product sites, full app design (flows → wireframes → hi-fi mockups), or design-and-build where I hand you a deployed product instead of a picture of one. Remote, async-friendly. The fastest way to evaluate me: open any of the four links below — they’re all live.