JustHTML.dev — AI-Assisted, Vanilla-First Web Development

Published: (February 27, 2026 at 04:25 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

The Community

This project is for developers building small‑to‑medium web apps who feel forced into React/Vite stacks by default — even when their needs are simple.

A lot of us experimented with tools like Lovable and Bolt.new. They’re powerful and scaffold React/Vite/Vue apps instantly.

But once AI entered the workflow — Claude, OpenAI, Copilot, Gemini — something changed. If AI can generate clean HTML, CSS, and JavaScript directly, why are we defaulting to heavy frameworks for everything?

This is for the builders who are thinking:

“Is the complexity actually required — or just assumed?”

What I Built

I built JustHTML.dev — a curated directory of websites built with vanilla HTML, CSS, and JavaScript.

  • No front‑end frameworks.
  • No client‑side runtime layer.
  • No dependency‑tree explosion.

It’s not anti‑framework; it’s intentional.

Features

  • Automatically analyzes and scores submissions.
  • Displays a public “Last Verified” status.
  • Ranks sites based on implementation quality.
  • Focuses on clarity and simplicity.

It’s free, has no ads, and serves as a place to inspire, teach, and showcase vanilla‑first builds. The goal is to prove that with AI assistance, vanilla is not a step backward; in many cases it’s faster, cleaner, and easier to maintain.

Demo

https://justhtml.dev

Code

The project is built with a custom C# back‑end that renders HTML using simple templating and string replacement. It intentionally avoids front‑end frameworks and Node‑based build systems. The final output delivered to the browser is clean, server‑rendered HTML with minimal JavaScript.

Main HTML Layout Template


    
    
    {{ head }}
    
    {{ page.css }}

    {{> header }}
    
        {{ body }}
    
    {{> footer }}
    
    {{ page.js }}

Front‑Matter for Index.html

---
title: "justhtml.dev — You don't need npm for that"
description: "A community for developers who build real things with Vanilla HTML, CSS, and JavaScript. No frontend frameworks. No npm. Just the web platform."
keywords: vanilla html, no npm, no react, web development, html css js
og_title: "justhtml.dev — You don't need npm for that"
og_description: "A community for developers who build real things with Vanilla HTML, CSS, and JavaScript."
og_image: https://justhtml.dev/img/og/og-home.jpg
layout: default
robots: index,follow
---

Automatic Sitemap Generation (C#)

private async Task WriteSitemapXmlAsync()
{
    var sb = new StringBuilder();
    sb.AppendLine("""""");
    sb.AppendLine("""""");
    sb.AppendLine();

    // Static content pages (scanned from /content/*.html)
    foreach (var entry in GetStaticPageEntries())
    {
        AppendUrl(sb, $"{_baseUrl}{entry.url}", entry.lastmod, entry.changefreq, entry.priority);
    }

    // Dynamic showcase entries (listed only)
    var showcases = await db.Showcases
        .Where(s => !s.IsDeleted && !s.IsHidden && s.Status == SiteStatus.Listed)
        .Select(s => new { s.Slug, s.SubmittedAt, s.MetadataFreshedAt })
        .ToListAsync();

    foreach (var s in showcases)
    {
        var lastmod = (s.MetadataFreshedAt.HasValue && s.MetadataFreshedAt.Value > s.SubmittedAt)
            ? s.MetadataFreshedAt.Value.ToString("yyyy-MM-dd")
            : s.SubmittedAt.ToString("yyyy-MM-dd");

        AppendUrl(sb, $"{_baseUrl}/showcase/{s.Slug}.html", lastmod, "weekly", "0.6");
    }

    sb.AppendLine("");

    var path = Path.Combine(_webRootPath, "sitemap.xml");
    await File.WriteAllTextAsync(path, sb.ToString(), Encoding.UTF8);
    logger.LogInformation("sitemap.xml written ({Count} showcase entries)", showcases.Count);
}

How I Built It

  • Backend: .NET (minimal server setup)
  • Rendering: Lightweight HTML templating via string replacement
  • Frontend: Vanilla HTML, CSS, JavaScript
  • Deployment: Docker container
  • Verification system: Automated scanning and scoring logic

Architecture

  1. Server builds HTML → Browser renders it → Minimal JS enhances it.
  2. No hydration, no runtime framework, no massive dependency installs.

AI was heavily involved in development — assisting with structure, logic refinement, and iteration — but the architectural decisions were deliberate. JustHTML.dev is an experiment in architectural restraint: AI reduces the cost of writing code, but it doesn’t justify adding unnecessary layers. The aim was to build the simplest stack that gets the job done.

0 views
Back to Blog

Related posts

Read more »