Meet Dhara — send files without the cloud, without accounts, without internet
DHARA
SHARE FILES · NO CLOUD · NO ACCOUNTS · NO INTERNET
A cross-platform file-share app that runs a tiny HTTP server on your device. Anyone on the same Wi-Fi (or your phone's hotspot) can pull the files straight from you — from any browser, no app required.
Why I built Dhara
Every "share this file to my other device" workflow in 2026 involves at least one of the following annoyances:
- Upload to a cloud you don't own so it can come back down two feet away.
- Create an account on some third-party service that now has your file in its logs.
- Pair devices, install the same app on both ends, sign into the same account.
- Trust an ad-riddled web app to handle a 4 GB video without silently dropping the connection.
- Cable it over and remember which of the seven USB adapters actually carries data.
None of that is necessary. Your phone already has a Wi-Fi radio. Your laptop already speaks HTTP. The only thing missing is a decent piece of software that says "here, I'll be the server for ten minutes" and gets out of the way.
That's Dhara.
How it works — the whole architecture in one picture
That's it. There's no signalling server, no STUN/TURN dance, no P2P negotiation. Just plain HTTP on your local subnet. Whichever device is holding the files becomes the origin; every other device is a client. If you can visit a web page, you can receive from Dhara.
The three moving parts
- The picker. On the sending device, you tap "Share" and pick a folder, a file, or a batch of files. Dhara doesn't copy them anywhere — it just indexes what you selected.
- The local HTTP server. Dhara starts an HTTP listener on a port (default 8080) bound to your Wi-Fi interface. It generates a short PIN and displays the URL like
http://192.168.1.42:8080. - The browser. Any device on the same network types that URL, enters the PIN, and sees a clean file-listing page with download buttons.
When you're done, you tap "Stop" and the server dies. No lingering state, no background sync, no data left behind.
Why local HTTP and not "just AirDrop / Nearby Share"
AirDrop and Google's Nearby Share are great — when they work, and when both ends are in the same ecosystem. Dhara exists for every other case:
Cross-platform on day one
Send from an iPhone to a Windows PC to an Android tablet to a Linux box. Anything with a browser is a receiver.
No internet? No problem
Runs over your phone's hotspot too. You can share a 2 GB file to a friend in the middle of a flight, on a train, or in a basement.
Bytes never leave the LAN
No cloud upload, no third-party server, no encrypted-in-transit-then-decrypted-in-their-datacentre. Your file goes phone → router → laptop. That's it.
Zero install on the receiver
The receiver doesn't need Dhara. They just need a browser. Perfect for handing something to a colleague whose phone you don't want to touch.
Share whole folders
Dhara lets you serve an entire directory tree, not just individual files. Your receiver browses like it's a file listing on a webserver — because it is.
Fast as your Wi-Fi
No transcoding, no reupload. Transfer speed is capped only by your Wi-Fi throughput — typically 200-500 Mbit/s on 5 GHz.
What the receiver sees
The receiving experience is a clean web page. No app to install, no popup to trust, no permission prompt. They type the URL, enter the four-digit PIN, and see this:
┌─────────────────────────────────────────┐ │ Dhara · 4 files available │ ├─────────────────────────────────────────┤ │ 📄 report-q2.pdf 1.2 MB [download] │ │ 🖼️ screenshot.png 340 KB [download] │ │ 🎬 demo-clip.mp4 48.7 MB [download] │ │ 📁 project-photos/ 12 items [browse] │ └─────────────────────────────────────────┘
Folders are browsable. Videos and images preview inline. Multiple downloads run in parallel. If the receiver's browser supports it, they can even "Download all" as a zip.
The security model, without the marketing gloss
I want to be honest about what Dhara does and doesn't protect against, because "local network sharing" tends to attract vague privacy claims. Here's what's actually happening:
What's protected
- Nothing leaves your local network. The bytes go from your device to the router to the receiver's device. They don't touch h4hacks.com, Google, Apple, or any Dhara server — there isn't one.
- PIN-gated access. Every session generates a fresh 4-digit PIN. A device that doesn't know the PIN gets a "wrong PIN" page, not a directory listing.
- Server dies when you close it. No background lifecycle, no persisted tokens, no leftover state.
What's not protected (be honest about this)
- Traffic on the LAN is HTTP, not HTTPS. If you're on a hostile Wi-Fi, other devices on the same network could see the file names and contents. Rule of thumb: only use Dhara on networks you trust (your home Wi-Fi, your own hotspot). Don't use it on hotel Wi-Fi to share confidential docs. HTTPS with a self-signed cert makes browsers scream at end users, which is a worse UX; a future release will offer certificate pinning for users who need it.
- The PIN is 4 digits (10,000 combinations). Sufficient for casual protection; not a cryptographic guarantee. Sessions with too many wrong attempts auto-terminate.
Platforms — what's live, what's coming
| Platform | Status | Store | Notes |
|---|---|---|---|
| iOS (iPhone / iPad) | ✓ LIVE | App Store | v1.0 shipped. Universal binary, iPad-optimised. |
| macOS | ⚡ IN REVIEW | Mac App Store | Native Apple Silicon build. Same server engine as iOS. |
| Android | ⚡ CLOSED TESTING | Play Store | Foreground-service HTTP server. 14-day test window then Production. |
| Windows | ☐ PLANNED | Microsoft Store | Flutter Windows build coming after Android hits Prod. |
| Linux | ☐ MAYBE | Flatpak / Snap | If there's demand. Reach out on YouTube. |
Under the hood
For those who care about the stack (this is H4hacks after all):
- Flutter for the UI. One codebase across iOS, macOS, Android, Windows. Yes, it's compromise-y in places; no, the trade-off wasn't worth writing four separate apps.
- Dart HTTP server using
shelfandshelf_router. Runs in the same isolate as the UI on desktop; runs in a foreground service on Android; runs in the main process on iOS with proper background-task handling. - StoreKit 2 / Google Play Billing via
in_app_purchase. Pro tier and ad-free tier as non-consumable IAPs. No subscription trap. - DINOv2 (bundled, Apache-2.0) for on-device image similarity search in Pro — find visually similar photos in your library without uploading anything.
- Firebase Crashlytics for crash reports. Nothing else — no analytics, no ad-tracking SDK outside of the entitlement-gated AdMob banner.
Free vs Pro
Everything essential
Serve folders and files. PIN protection. Cross-platform. Ads (banner + occasional interstitial). No feature paywalled behind "must be Pro."
Power features
Everything in Free, plus: DINOv2 visual image search, unlimited file selection, per-device transfer stats, and priority updates. One-time purchase.
Support the project
Everything in Pro, plus zero ads across the entire app forever. If you want to support a small indie-built app without ongoing subscription fees, this is the one.
Both Pro tiers are one-time non-consumable purchases — not subscriptions. Family Sharing is enabled, so once you buy it, everyone in your Apple Family or Google Play Family can use it.
Getting started (three steps, no signup)
Install Dhara
Grab it from the App Store on your iPhone or Mac. No account creation, no email verification, no phone number.
Pick files & start server
Open the app, tap "Share", pick your files or a folder, tap "Start". You'll see a URL and a 4-digit PIN.
Send the URL
Type the URL into the receiver's browser (same Wi-Fi), enter the PIN, download. Done.
Try it now
The iOS build is live. Mac App Store hitting soon — the Android and Windows builds are on the runway.
Download on iOS Follow H4hacks on YouTubeFAQ
Does Dhara work without internet?
Yes — that's the whole point. You just need both devices on the same local network. Home Wi-Fi, your phone's hotspot, an office LAN, a plane's on-board Wi-Fi — anything that lets two devices see each other.
Does the receiver need to install anything?
No. Any browser works: Chrome, Safari, Firefox, Edge, Brave, Vivaldi. iPhone Safari, Android Chrome, desktop — all fine.
Can I share a whole folder?
Yes. Pick a folder in the picker and Dhara serves the entire directory tree. The receiver navigates it in the browser like a normal file listing.
Is my file uploaded to any server?
No. There is no Dhara backend. The file goes directly from your device to whichever browser downloads it, through your local network only.
What about really large files?
Dhara handles multi-gigabyte files fine — it just serves them like any HTTP server would. The bottleneck is your Wi-Fi speed, not the app.
Why HTTP and not HTTPS?
Because self-signed HTTPS certificates make browsers show scary warnings that stop non-technical users cold, and there's no way to get a real cert for 192.168.1.42. A future release will offer opt-in HTTPS with a cert-pinning flow for users who need it.
What's your business model?
Free tier with ads. Optional one-time Pro purchase ($2.99). Optional one-time no-ads purchase ($9.99). No subscriptions, no data sale, no dark patterns.
Coming next
The v1.0 release is deliberately minimal — server, picker, browser view, PIN. The roadmap has some fun stuff:
- Send back — letting the receiver upload files back to the sender through the same page.
- QR pairing — skip typing the URL by scanning a QR code on the sender's screen.
- Optional HTTPS with cert pinning for users on less-trusted networks.
- Discover on LAN — mDNS advertisement so nearby Dhara instances see each other without typing anything.
- Windows & Linux builds — the Flutter code compiles; it's mostly polish and store submission.
If you build something interesting with Dhara, or hit a bug, drop it on the H4hacks YouTube channel comments or reach out on the socials. It's a solo-built project by one person — feedback lands directly, not into a support ticket queue.
Thanks for reading. Now go send a file.
— Mohesh · H4hacks

Comments
Post a Comment