<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: jaxxchen</title>
    <description>The latest articles on DEV Community by jaxxchen (@jaxxchen003).</description>
    <link>https://dev.to/jaxxchen003</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3956860%2F0af80edc-56b9-4d9f-9d7e-8db5630412bc.png</url>
      <title>DEV Community: jaxxchen</title>
      <link>https://dev.to/jaxxchen003</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaxxchen003"/>
    <language>en</language>
    <item>
      <title>I Made a Web Page with AI. The Hard Part Was Giving It a URL.</title>
      <dc:creator>jaxxchen</dc:creator>
      <pubDate>Sun, 02 Aug 2026 13:25:51 +0000</pubDate>
      <link>https://dev.to/jaxxchen003/i-made-a-web-page-with-ai-the-hard-part-was-giving-it-a-url-2hi5</link>
      <guid>https://dev.to/jaxxchen003/i-made-a-web-page-with-ai-the-hard-part-was-giving-it-a-url-2hi5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Disclosure: FolioDrop is my product. I am sharing this workflow and its limits so other people can decide whether a one-file publishing step fits their AI-made work.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;I thought the hard part of making a small website with AI would be getting the HTML right.&lt;/p&gt;

&lt;p&gt;It wasn't.&lt;/p&gt;

&lt;p&gt;The awkward part came after the page looked good.&lt;/p&gt;

&lt;p&gt;I had a finished HTML artifact, but it was still trapped in a conversation, a local file, or an editor preview. A client could not open &lt;code&gt;file:///...&lt;/code&gt;. A recruiter did not need my repository. A friend did not want a deployment tutorial before seeing a tiny experiment.&lt;/p&gt;

&lt;p&gt;The real question became:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What is the smallest reliable step between “the AI made this” and “here is a link you can open”?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The workflow I wanted
&lt;/h2&gt;

&lt;p&gt;For a small, finished web artifact, I wanted five things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep the AI-generated HTML intact.&lt;/li&gt;
&lt;li&gt;Get a browser-ready HTTPS URL.&lt;/li&gt;
&lt;li&gt;Share the result without explaining my local setup.&lt;/li&gt;
&lt;li&gt;Keep enough source context to remember where it came from.&lt;/li&gt;
&lt;li&gt;Collect the work somewhere instead of losing it when the chat ended.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the narrow job FolioDrop is designed for. It is not a replacement for a deployment platform. It is a post-generation handoff for one complete HTML document.&lt;/p&gt;

&lt;h2&gt;
  
  
  What counts as a “complete HTML document”?
&lt;/h2&gt;

&lt;p&gt;The page should be self-contained enough to open as a page. Inline CSS and inline JavaScript are fine. External images, fonts, or scripts can work when they remain reachable over HTTPS.&lt;/p&gt;

&lt;p&gt;The boundary matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single HTML export: a good fit.&lt;/li&gt;
&lt;li&gt;A small interactive prototype in one file: a good fit.&lt;/li&gt;
&lt;li&gt;A multi-file React or Next.js app: use a normal deployment platform.&lt;/li&gt;
&lt;li&gt;A project that depends on a local folder or &lt;code&gt;file:///&lt;/code&gt; asset: fix the asset boundary first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The product page states this plainly, which is useful. A tool is easier to trust when it tells you what it does not handle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways to start
&lt;/h2&gt;

&lt;p&gt;The current FolioDrop surface exposes three paths:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Ask the AI assistant to publish
&lt;/h3&gt;

&lt;p&gt;The AI-publish path uses the remote MCP endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Connect FolioDrop, then turn my AI creations into shareable links.
https://foliodrop.app/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact authorization step depends on the AI client and the account or workspace settings. The important product idea is that publishing happens after generation, while the artifact is still in context.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Upload the complete file
&lt;/h3&gt;

&lt;p&gt;This is the comfortable fallback when the assistant cannot connect. Choose one &lt;code&gt;.html&lt;/code&gt; or &lt;code&gt;.htm&lt;/code&gt; file, then generate the share link.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Paste the complete page
&lt;/h3&gt;

&lt;p&gt;This is useful when the AI returned code in a conversation and there is no convenient local file yet. Paste the complete document, not a fragment that depends on a hidden build step.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result should feel like a handoff, not a file dump
&lt;/h2&gt;

&lt;p&gt;The goal is not just “some hosting exists.” The person receiving the link should be able to open the page and understand what they are looking at.&lt;/p&gt;

&lt;p&gt;FolioDrop's product language is built around a shareable work, source context, visibility, and a folio surface. That is a different mental model from dropping an HTML file into a random folder and forgetting it.&lt;/p&gt;

&lt;p&gt;I also verified a real Xin'gang Village case set in the FolioDrop workspace. The strongest examples are a &lt;a href="https://new.foliodrop.app/w/JOUjEF6uG2lx" rel="noopener noreferrer"&gt;value introduction&lt;/a&gt;, a &lt;a href="https://new.foliodrop.app/w/fpQejDsd4v10" rel="noopener noreferrer"&gt;planning presentation&lt;/a&gt;, and a &lt;a href="https://new.foliodrop.app/w/YXf5YQNdxQ-D" rel="noopener noreferrer"&gt;client-review operations and budget proposal&lt;/a&gt;. They show the useful range of AI-made work: product thinking, high-fidelity communication, and a stakeholder-ready deliverable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for AI-made work
&lt;/h2&gt;

&lt;p&gt;AI makes it cheap to create many small things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a landing-page experiment;&lt;/li&gt;
&lt;li&gt;a visual interaction study;&lt;/li&gt;
&lt;li&gt;a product concept for a client conversation;&lt;/li&gt;
&lt;li&gt;a portfolio piece for an interview;&lt;/li&gt;
&lt;li&gt;a tiny calculator or browser tool;&lt;/li&gt;
&lt;li&gt;a themed page that is too small to deserve a full repository.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cheaper creation becomes, the easier it is to lose the result. The missing layer is not always more generation. Sometimes it is delivery, context, and memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  My rule of thumb
&lt;/h2&gt;

&lt;p&gt;Use a full deployment platform when the project needs a build, multiple files, a server, environment variables, a custom domain, or a long-lived production workflow.&lt;/p&gt;

&lt;p&gt;Use a one-file publishing flow when the artifact is already complete and the next job is to show it to somebody.&lt;/p&gt;

&lt;p&gt;That distinction kept my tool choice simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Build wherever the work needs to be built. Publish the finished one-file artifact wherever it is easiest to share and remember.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you make small web experiments with AI, what do you do with the HTML after the model says it is finished?&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Canonical links:&lt;/strong&gt; &lt;a href="https://foliodrop.app/" rel="noopener noreferrer"&gt;FolioDrop home&lt;/a&gt;, &lt;a href="https://foliodrop.app/publish" rel="noopener noreferrer"&gt;publish HTML online&lt;/a&gt;, &lt;a href="https://new.foliodrop.app/w/JOUjEF6uG2lx" rel="noopener noreferrer"&gt;Xin'gang Village case set&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjnvbr61hd36uw8lap7hj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjnvbr61hd36uw8lap7hj.jpg" alt="The FolioDrop upload state" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frd2vtequ4hm2y145hpxh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frd2vtequ4hm2y145hpxh.jpg" alt="The FolioDrop paste state" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI can generate HTML. Publishing it is still weirdly annoying.</title>
      <dc:creator>jaxxchen</dc:creator>
      <pubDate>Thu, 28 May 2026 16:17:05 +0000</pubDate>
      <link>https://dev.to/jaxxchen003/ai-can-generate-html-publishing-it-is-still-weirdly-annoying-5hbl</link>
      <guid>https://dev.to/jaxxchen003/ai-can-generate-html-publishing-it-is-still-weirdly-annoying-5hbl</guid>
      <description>&lt;p&gt;AI tools are now pretty good at making complete HTML artifacts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a small portfolio page&lt;/li&gt;
&lt;li&gt;a product one-pager&lt;/li&gt;
&lt;li&gt;a pitch deck in HTML&lt;/li&gt;
&lt;li&gt;a resume&lt;/li&gt;
&lt;li&gt;a visual prototype&lt;/li&gt;
&lt;li&gt;a client preview&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8e0b0xp3807bwluv43q2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8e0b0xp3807bwluv43q2.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
But after the model gives you the HTML, there is still an awkward last step:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do I turn this into a real URL I can send to someone?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For developers, the normal answer is GitHub Pages, Netlify, Vercel, Cloudflare Pages, or an object-store flow. Those are good tools. But they are also a lot of ceremony when the artifact is just one finished HTML file.&lt;/p&gt;

&lt;p&gt;For non-developers, the gap is even worse. They can ask ChatGPT to create a nice HTML page, but the result often stays trapped in a chat window or a local file.&lt;/p&gt;

&lt;h2&gt;
  
  
  The narrow problem
&lt;/h2&gt;

&lt;p&gt;The use case I wanted to solve was not "deploy a website."&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Publish one complete AI-generated HTML document as a shareable link.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no repo required&lt;/li&gt;
&lt;li&gt;no build step&lt;/li&gt;
&lt;li&gt;no ZIP project&lt;/li&gt;
&lt;li&gt;no framework deployment&lt;/li&gt;
&lt;li&gt;no DNS setup&lt;/li&gt;
&lt;li&gt;optional access-key sharing for private previews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fniwdwk05aw8a7uc9ashj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fniwdwk05aw8a7uc9ashj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://foliodrop.app/" rel="noopener noreferrer"&gt;FolioDrop&lt;/a&gt; around that narrow contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  What FolioDrop does
&lt;/h2&gt;

&lt;p&gt;FolioDrop accepts one complete single-file HTML document and returns a real URL.&lt;/p&gt;

&lt;p&gt;It is intentionally smaller than a static host:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste or upload one HTML work manually.&lt;/li&gt;
&lt;li&gt;Publish from an AI tool through MCP or OpenAPI.&lt;/li&gt;
&lt;li&gt;Save public works into a lightweight personal folio.&lt;/li&gt;
&lt;li&gt;Keep access-key protected works unlisted.&lt;/li&gt;
&lt;li&gt;Keep individual shared work routes out of search indexing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdm43g6pgd3ue4hmphrz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdm43g6pgd3ue4hmphrz.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
The important boundary: FolioDrop is not a replacement for Vercel, Netlify, GitHub Pages, or Cloudflare Pages. If your project needs multiple files, a framework, a custom domain, or long-term production hosting, those tools are a better fit.&lt;/p&gt;

&lt;p&gt;The comparison is here: &lt;a href="https://foliodrop.app/compare/foliodrop-vs-static-hosting" rel="noopener noreferrer"&gt;FolioDrop vs static hosting&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MCP/OpenAPI matters here
&lt;/h2&gt;

&lt;p&gt;The manual flow is useful, but the more interesting flow is agent-native publishing.&lt;/p&gt;

&lt;p&gt;If an AI host can call a publish tool, the user can ask for:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make this into a single-file HTML page and publish it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent can then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;generate the HTML&lt;/li&gt;
&lt;li&gt;validate that it is a complete document&lt;/li&gt;
&lt;li&gt;call the publishing endpoint&lt;/li&gt;
&lt;li&gt;return a URL&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmanx7xn4vmtb1rebye0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmanx7xn4vmtb1rebye0n.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
FolioDrop exposes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP endpoint: &lt;code&gt;https://foliodrop.app/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;public MCP config: &lt;code&gt;https://foliodrop.app/api/ai/mcp-config.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;OpenAPI description: &lt;code&gt;https://foliodrop.app/api/ai/openapi.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also packaged the publishing workflow as an open GitHub skill:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jaxxchen003/foliodrop-publisher-skill" rel="noopener noreferrer"&gt;github.com/jaxxchen003/foliodrop-publisher-skill&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That repo includes a single-file HTML validator and templates for decks, resumes, product one-pagers, emails, and portfolio case studies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp35gp6evax1uv0301i8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp35gp6evax1uv0301i8.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The publishing contract
&lt;/h2&gt;

&lt;p&gt;The current contract is deliberately strict:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;include &lt;code&gt;&amp;lt;!doctype html&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;include &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;inline CSS in &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;inline JavaScript only when needed&lt;/li&gt;
&lt;li&gt;use public HTTPS URLs for external images or fonts&lt;/li&gt;
&lt;li&gt;do not include tokens, secrets, passwords, or local file paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This constraint keeps the product predictable. It also makes the output easier for AI agents to reason about.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx26swxd5m3bpyks283bg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx26swxd5m3bpyks283bg.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;The hard part was not generating HTML. The hard part was making the last mile boring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;return a stable URL&lt;/li&gt;
&lt;li&gt;avoid leaking access keys&lt;/li&gt;
&lt;li&gt;avoid indexing private previews&lt;/li&gt;
&lt;li&gt;make deletion and expiry clear&lt;/li&gt;
&lt;li&gt;keep the product boundary honest&lt;/li&gt;
&lt;li&gt;give agents a structured way to publish without putting secrets into prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wrote up two answer pages for the common questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://foliodrop.app/answers/what-is-foliodrop" rel="noopener noreferrer"&gt;What is FolioDrop?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foliodrop.app/answers/how-to-share-ai-generated-html" rel="noopener noreferrer"&gt;How do you share AI-generated HTML online?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The product is small on purpose. If the work is a real website, use a real static host. If the work is one complete AI-made HTML artifact and you just need a link, that is the gap FolioDrop is trying to close.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>html</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
