Compare · fairly
What you stop assembling
Most stacks are a framework plus a long list of packages and services you pick, connect and keep updated. dhtml is one language, on one hosting service, that already contains the parts most apps need. The columns on the right describe typical setups, written by the dhtml project; check them against what you use.
§ 01 · Side by side
| Question | dhtml | Next.js on Node, with hosted Postgres (for example Neon) | Plain PHP on shared hosting |
|---|---|---|---|
| Shape of a project | One fixed layout: pages, api, layouts, partials, migrations, data. The same in every project. | A conventional layout plus the config of your tools. | Whatever you decide. |
| What you install | Nothing. You upload a folder to dhtml.net; your app adds no packages. | Node, a package manager and a dependency tree that you keep updated. | Usually nothing; the host provides PHP. |
| Build step | None. Every upload is checked and compiled for you. | Yes. | None. |
| Language of a page | HTML with a few tags. SQL is written as SQL. | JavaScript or TypeScript, JSX. | PHP mixed with HTML. |
| Database | A SQLite database that is part of your site. | A networked database that many servers can share. | Usually MySQL provided by the host. |
| Safety by default | Output escaped by place, SQL values always bound, CSRF automatic, outbound hosts declared, no raw output. | React escapes output by default; most of the rest is up to the libraries you pick. | Up to you and your libraries. |
| Accounts, mail, AI calls, signed webhooks | Built in, as tags. | Libraries and services, chosen by you. | Libraries, or a CMS. |
| Where it runs | On dhtml.net. | Node hosts and serverless platforms. | Nearly every shared host. |
| Client-side interactivity | Components, islands of client state, live updates over server-sent events, htmx-style fragments, and your own JavaScript in public/. The server renders the page first. | Strong. This is what it is built for. | Whatever you add yourself. |
| Scale | One machine per site, sized by your plan. | Many machines, regions, caches. | One host, usually small. |
| Ecosystem and people who know it | New, with accounts, payments, jobs and AI built in rather than added from packages. | Very large. | Very large. |
§ 02 · Good fit
Where dhtml is good
- Apps you want to still understand in two years. Marketing sites, blogs, internal tools, SaaS products with accounts, payments, webhooks, background jobs and AI features, shops of the kind in the examples. What decides the fit is the shape of the product, not its size.
- Teams of any size that would rather read a page than keep a build pipeline working.
- Cheap hosting. One process, one file for the data, no separate database server.
- Code written by or with an AI. The vocabulary is small and written down, which makes the result easier to read back, and the runtime refuses the classes of mistake that are easiest to make (injection, unescaped output, unlisted outbound calls).
- Apps where a mistake should be loud. Every error names a file, a line and a hint, and the check on every upload finds most of them before a visitor does.
§ 03 · Parts you do not add
One program instead of a list
| Usually a package or a service | In dhtml |
|---|---|
| Web framework, router, template engine | Part of the language. The file path is the URL. |
| Auth library, session store, password hashing | <d:login />, <d:register />, magic links, bans, an account log. |
| ORM and migration tool | SQL as SQL, bound parameters, checksummed migrations. |
| AI SDK, streaming plumbing, usage tracking | <d:ai>, streamed to the page, usage and history as data. |
| Payments SDK and a webhook handler | <d:http> and a signed webhook that runs each event once. |
| Queue, scheduler, worker process | Jobs with retries, scheduled or queued. |
| Backup scripts and cron | A backup of your database before every upload that changes it. |
| Client router, state library, websocket layer | Fast navigation, components, islands, live updates over server-sent events. |
| CSRF, escaping and header middleware | On by default, in every response. |
The short version: dhtml is one readable folder and one hosting service that do the work of the whole list. If you would rather choose each part yourself, or you want many machines sharing one database, a stack built around that fits that shape. For everything else, this is less to build and less to keep alive.
