Templates without a takeover
@content and @input are enough to remove duplicated layouts and reusable fragments from an ordinary website.
Keep your HTML. Keep your tools. Stop repeating yourself.
Nift is a fast, dependency-aware templating and build system that adds reusable structure to web projects without asking you to hand over the rest of your stack.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>$[title]</title>
<link rel="stylesheet" href="@pathto('public/assets/site.css')">
</head>
<body>
@input('templates/partials/header.html')
<main>
@content
</main>
<script src="@pathto('public/assets/app.js')"></script>
</body>
</html>
<section class="hero">
<h1>Build the web your way.</h1>
<p>Keep your HTML, your tools and your stack.</p>
</section>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Home</title>
<link rel="stylesheet" href="assets/site.css">
</head>
<body>
<header>...</header>
<main>
<section class="hero">
<h1>Build the web your way.</h1>
<p>Keep your HTML, your tools and your stack.</p>
</section>
</main>
<script src="assets/app.js"></script>
</body>
</html>
Small by design
Nift does a focused job: track files, compose templates and content, resolve project-aware paths, and rebuild what changed. Your HTML, CSS, JavaScript, TypeScript, frameworks, backend and deployment choices remain yours.
@content and @input are enough to remove duplicated layouts and reusable fragments from an ordinary website.
Start with an existing HTML site, extract the pieces that repeat, and let Nift build the same frontend. A migration does not need to become a rewrite.
Included files become dependencies automatically, so changing a shared partial can rebuild the pages that actually use it.
Written in C++ with fast full and incremental builds, Nift stays comfortable as projects grow.
npm, TypeScript, React, Vue, Svelte, Tailwind, Go, C++, APIs and image tools remain themselves. Nift does not need a special version of everything.
A small set of explicit primitives makes the project easier to understand, debug, explain and hand to coding assistants.
Built to stay light
Nift's architecture is deliberately lean: a native executable, multithreaded builds, dependency-aware incremental work and deployable output that can stay as simple as ordinary files.
The core tool does not require a project-local runtime dependency tree just to parse templates and build pages.
When a project needs substantial work, Nift can build tracked outputs across multiple threads using the project's configured thread count.
During normal development, nift build can focus on outputs affected by what changed instead of treating every edit like a full rebuild.
A Nift site can remain mostly HTML, CSS, JavaScript and assets. Add other tooling only when the project actually needs it.
If the site does not need a client framework, Nift does not make you ship one. Generated HTML can just be HTML.
Change one page, rebuild one path through the graph. Change a shared partial, rebuild the outputs that depend on it.
AI-assisted development
Nift does not need an AI subsystem to work well with AI coding assistants. Its advantage is that there is comparatively little Nift-specific machinery for an assistant to learn, hallucinate or fight against.
Give Copilot, ChatGPT or another coding assistant a short ai-context.txt explaining the handful of Nift primitives, then spend your actual prompt describing the website you want. Most of what the assistant edits remains ordinary HTML, CSS, JavaScript, TypeScript and whichever application stack you chose.
ai-context.txt
This is a Nift v4 project.
@content inserts page content.
@input(...) composes reusable files.
@pathto(...) links tracked pages and local assets.
Keep the existing Nift architecture.
Use the project's normal HTML/CSS/JS/TS
and other tooling rather than replacing it.Then ask for the portfolio, documentation site, product site, dashboard shell or application frontend you actually want.
The philosophy
Use Nift where composition and build tracking help. Leave everything else alone. A Nift project can be mostly ordinary web code because Nift is a layer in your stack, not a replacement for your stack.
Start with the HTML, assets and architecture you already understand.
Move repeated layouts and fragments into templates and partials.
Let Nift understand pages, paths and dependencies.
Build the result without introducing machinery you did not ask for.
A deliberately short path
You can understand the core workflow without learning an application framework.
nift init .htmlStart from a small HTML project rather than a pile of generated framework machinery.
@input('templates/header.html')
@contentExtract repeated structure while keeping page content direct.
nift buildDuring normal development, rebuild what Nift considers updated rather than reflexively rebuilding the whole site.
Existing site?
Take repeated headers, navigation and footers out of your existing pages, put them in reusable files, keep each page's unique markup as content, and let Nift compose the result.
Convert an existing site →# before
index.html
about.html
contact.html
# after
content/
templates/
public/Bring your stack
TypeScript, Vite, React, Vue, Svelte, Tailwind, Go, Node, Bun, Python, minifiers, bundlers and deployment tooling do not have to be absorbed into Nift to work with it.
Use it your way
Nift's build-time role does not constrain what your website becomes at runtime.
Start from something polished
Ten dark starters are available on the templates page. Each stays intentionally small enough to understand immediately; the visual language changes while the Nift machinery barely does.
Human-readable. AI-readable.
A coding assistant can reason about Nift's small build model and then work mostly in familiar web technologies. That makes Nift particularly interesting as AI-assisted development shifts from generating snippets toward maintaining whole repositories.
A deliberately small contract
Nift gives you the pieces that benefit from project awareness—composition, metadata, paths and dependencies—then gets out of the way.