This is a Next.js project bootstrapped with create-next-app.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
Export Bundle (Landing ZIP)
The Builder can export a production-ready ZIP that contains:
- index.html, styles.css, app.js
- assets/ hashed assets (optionally grouped by type)
- site.webmanifest, robots.txt
- Optional: sheets/ (Google Apps Script template)
- Metadata files: assets.json, assets.index.json
- Integrity: assets.integrity.index.json
Export Options UI
- Manifest
- Name, Short Name, Start URL, Display (dropdown), Theme Color (HEX only)
- Robots
- Disallow lines (textarea). Each line becomes a
Disallow:rule. - Robots Meta:
<meta name="robots" content="...">value (e.g.noindex, nofollow). Empty disables the tag.
- Disallow lines (textarea). Each line becomes a
- Google Sheets Template Mode
- Auto: include when
form.actionUrlis empty - Include: always include
- Exclude: never include
- Auto: include when
- Font Optimization
- Preconnect: toggle inclusion of Google Fonts preconnect links.
- Preload: preload & load Google Fonts stylesheet with
media="print" onloadpattern.
- Image Options
- Loading:
lazy(default) oreagerfor<img loading> - Decoding:
async(default) orsyncfor<img decoding>
- Loading:
site.webmanifest and robots.txt
site.webmanifestis derived from page data; Export Options can override fields.robots.txtdefaults to a permissive header and addsDisallowlines from UI.meta name="robots"can be injected via Export Options and is written in<head>.
Asset paths and grouping
- AssetManager writes files to
assets/with stable hash-based filenames. - Path strategy can be configured:
flat(default):assets/<hash>.<ext>grouped:assets/images/...,assets/fonts/...,assets/other/...
assets.json
Structured metadata for all assets. Example fields per entry:
- originalName, mimeType, size
- hash8, ext, zipPath
- integrity:
sha256-<base64>(placeholder, base64 of bytes) - group:
images|fonts|other - referencedAt: array of
local:<originalName>when referenced by the page
assets.index.json
Simple index to quickly find assets by group:
- images: string[] of zip paths
- fonts: string[] of zip paths
- other: string[] of zip paths
assets.integrity.index.json
- entries: array of
{ path, integrity }path: assetzipPath(e.g.assets/abcd1234.pngor groupedassets/images/...)integrity:sha256-<base64>(real SHA-256 of the asset bytes)
- bundleHash:
sha256-<base64>over a deterministic join ofpathandintegrityfor all entries
Usage:
- Verify file-level integrity by recomputing SHA-256(base64) of each asset and comparing with
entries[].integrity. - Verify bundle integrity by recomputing
bundleHashfrom sorted entries; useful for quick tamper detection.
Google Sheets template (optional)
- When included, ZIP contains:
sheets/Code.gs: minimal Apps Script handler (Web App)sheets/README.txt: setup instructions
- Inclusion is controlled by
sheetsMode(Auto/Include/Exclude) andform.actionUrlin Auto mode.