UJJWAL
Case study 03 · App publishing SaaS

Jhino

Upload an HTML file or ZIP and publish it as a live web app with sign-ins, sharing and live sync.

AI tools now write useful single-file apps in minutes: a client portal, a photo-proofing page, a content calendar. Then the file sits on someone's desktop. Jhino turns that file into a live, shared app with sign-ins, saved data and a real address.

Visit live site Source code
Jhino shown on desktop and mobile
01 / Overview

The problem

Studios and freelancers in Nepal build small tools for each client: delivery pages for videos, proofing pages for photos, schedules and invoices. Hosting each one properly means a server, a database, logins and sharing, which is too much work for a page a client will use for a month.

Apps generated by AI also save data in the browser with localStorage, so nothing a client types is shared with anyone else.

What I built

With Jhino you either upload an HTML file or ZIP, or describe the client and tick features from a list of 45 and let Jhino write the app. It goes live straight away. You share it with named people who sign in with their own password, by a public link, or by a link with a password.

Jhino redirects the app's browser storage to its own server, so everything a user saves shows up for everyone else, live. Sign-in, hosting, database, files and sharing all run in one program.

Jhino: Three plans in rupees, with yearly billing at the price of ten months.
Three plans in rupees, with yearly billing at the price of ten months.
02 / Features

What it does

Create and upload

  • Upload an .html file or a .zip made with Claude or any other tool
  • Or generate an app from 45 features: video approvals, photo proofing, design proofs, schedules, invoices and more
  • Dates shown in Bikram Sambat with AD beside them
  • Older versions kept, with rollback

Share and collaborate

  • Roles: Owner, Can edit, Can add, Can view
  • Single-use invite links that expire after 7 days
  • Public links and password-protected links
  • Live updates when anyone saves

Publish

  • App addresses like jhino.com/your-studio
  • Custom domains with automatic certificates
  • Each app installs as a PWA
  • A link-in-bio page with 40 designs

Plans

  • Free Forever: 2 apps
  • Plus: NPR 500 a month, 20 apps
  • Pro: NPR 2,000 a month, 100 apps and a custom domain
  • A year costs the price of ten months, paid by QR
Jhino: The help centre, where new users start.
The help centre, where new users start.
03 / Architecture

How it's built

Jhino technology stack
ServerNode 22, TypeScript, Fastify 5, about 50 server modules
Front endReact 19, Vite 8
DataSQLite via better-sqlite3 in WAL mode, daily backups (14 kept)
RealtimeServer-sent events
Securityargon2id, server-side hashed sessions, HttpOnly SameSite=Strict cookies, CSRF tokens, strict CSP
TestingPlaywright on Chromium, Firefox and WebKit; GitHub Actions CI
OpsDocker multi-stage build, Coolify deploys, /health check, graceful shutdown

Jhino is one TypeScript program built on Fastify. It serves the dashboard, the public site, the uploaded apps and the API, and stores everything in a single SQLite database under /data, so the rest of the container can be wiped on every deploy. Migrations run at start-up and only apply what is new.

Uploaded apps run in a sandboxed iframe without allow-same-origin, and the same sandbox is sent as a response header. An app can only talk to Jhino through a per-launch handshake over a private message channel.

04 / Engineering

Engineering highlights

01

Live sync that merges instead of overwriting

Every saved key carries a revision number. When two people save at once, the server refuses the older write and the bridge merges both changes, item by item for lists whose items have an id. The page never refreshes while someone is typing.

02

Custom domains for a small SaaS

Pro users can put an app on their own domain. Certificates come from Cloudflare for SaaS, with Caddy on-demand TLS as a fallback. Status moves from Waiting for DNS to Issuing certificate to Live, with background checks that back off from one minute to six hours.

03

Videos that clients can actually stream

Files from 20 MB up are re-encoded to H.264 at a sensible bitrate and at most 1920 px wide. In testing, a 75 MB 1080p clip became 13.6 MB in about four seconds.

04

Tested in three browsers

The test suite runs in Chromium, Firefox and WebKit with Playwright. CI runs type checks, the build and the Chromium tests on every push, and all three browsers weekly.

05 / Search

SEO & performance

Public pages are server-rendered snapshots, so search engines and AI assistants read real content. The home page carries Organization, WebSite, SoftwareApplication, Offer and FAQPage data, the help centre has an FAQ of 11 questions, and Jhino generates robots.txt, sitemap.xml and llms.txt, including per-domain files for custom domains.

07 / Status

Where it stands

Jhino is live at jhino.com with free and paid plans, and the source code is public on GitHub.

It shows how I build software for real use: a single deployable program, data that survives redeploys, sync that handles conflicts, sandboxing for untrusted code, and tests in every major browser engine.

Planning a product like Jhino? I design, build and launch web apps for businesses in Nepal and abroad.

All work