{"slug": "show-hn-drop-in-a-folder-of-html-and-get-back-a-private-url", "title": "Show HN: Drop in a folder of HTML and get back a private URL", "summary": "Open-source project eze released a self-hosted hosting tool that lets companies deploy a folder of HTML to a private URL accessible only to coworkers signed in through Google Workspace, Okta, Entra ID or any OpenID Connect provider. Each site gets a database, live updates, file uploads and AI model access through a single script, with an SDK exposing eze.db, eze.files, eze.ws, eze.ai and eze.id, plus an `eze mcp` command that lets Claude Code, Cursor and other MCP apps deploy sites. The tool ships as one program with a small database file, installs via `go install github.com/ahyield/eze/cmd/eze@latest`, and refuses to start if its sign-in would admit a public email domain such as gmail.com.", "body_md": "## A backend without a backend\n\nPages load one script from eze and can save data, react to changes and know who is looking. They use the viewer's company sign-in, so there are no keys in your code.\n\neze is open-source hosting you run inside your company. Upload some HTML and get a link that only your coworkers can open. Every site gets a database, live updates, file uploads and AI, with nothing to set up.\n\n`eze deploy` or drop the folder on the eze dashboard.\n\n``` js\n<script src=\"https://eze.page/_q/sdk.js\"></script>\n<script type=\"module\">\n  const me = await eze.id.me();\n  const votes = eze.db.collection('votes');\n\n  await votes.create({ place: 'Ramen', by: me.name });\n  votes.subscribe({ onCreate: (vote) => redraw() });\n</script>\n```\n\n`eze.db` Save and query data, with live updates`eze.files` Uploads like images, video and PDFs`eze.ws` Rooms for cursors, chat and games`eze.ai` Call Claude, OpenAI or your own model`eze.id` The name and email of whoever is viewing\n`eze init` adds instructions that teach coding agents how to build an eze site. `eze mcp` lets Claude Code, Cursor and other MCP apps deploy sites for you.\n\n```\nclaude mcp add eze -- eze mcp\n\n> make a site where my team can vote\n  on where to eat on Friday\n```\n\nYou need a server, a domain with wildcard DNS and HTTPS, and your company's sign-in: Google Workspace, Okta, Entra ID or any OpenID Connect provider, or an auth proxy you already use.\n\neze is one program with a small database file. A small VM is plenty.\n\n```\ngo install github.com/ahyield/eze/cmd/eze@latest\n\nEZE_DOMAIN=eze.acme.com \\\nEZE_AUTH=oidc \\\nEZE_OIDC_ISSUER=https://accounts.google.com \\\nEZE_OIDC_CLIENT_ID=... \\\nEZE_OIDC_CLIENT_SECRET=... \\\nEZE_OIDC_ALLOWED_DOMAINS=acme.com \\\nEZE_SESSION_SECRET=... \\\neze serve\n```\n\nEveryone who can sign in can open, change and redeploy every site. That keeps eze simple, so keep it to your own people: eze won't start if its sign-in would let in a public email domain like gmail.com.\n\nFound a security problem? [Report it privately](https://github.com/ahyield/eze/security).", "url": "https://wpnews.pro/news/show-hn-drop-in-a-folder-of-html-and-get-back-a-private-url", "canonical_source": "https://eze.page/", "published_at": "2026-10-20 23:45:03+00:00", "updated_at": "2026-10-20 23:48:11.081440+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "agent-protocols", "developer-tools", "ai-products"], "entities": ["eze", "Claude Code", "Cursor", "Google Workspace", "Okta", "Entra ID", "Claude", "OpenAI"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-drop-in-a-folder-of-html-and-get-back-a-private-url", "markdown": "https://wpnews.pro/news/show-hn-drop-in-a-folder-of-html-and-get-back-a-private-url.md", "text": "https://wpnews.pro/news/show-hn-drop-in-a-folder-of-html-and-get-back-a-private-url.txt", "jsonld": "https://wpnews.pro/news/show-hn-drop-in-a-folder-of-html-and-get-back-a-private-url.jsonld"}}