jaybe cf8f02bfca
Auto PR / open-pr (push) Successful in 15s
Auto Label PR / add-automerge-label (pull_request) Successful in 6s
CI / test (pull_request) Successful in 1m11s
docs: 메인플랜 단일화 및 Option2 진행 현황 통합
2025-11-16 13:11:47 +09:00
2025-11-15 00:18:12 +09:00

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:

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.
  • Google Sheets Template Mode
    • Auto: include when form.actionUrl is empty
    • Include: always include
    • Exclude: never include
  • Font Optimization
    • Preconnect: toggle inclusion of Google Fonts preconnect links.
    • Preload: preload & load Google Fonts stylesheet with media="print" onload pattern.
  • Image Options
    • Loading: lazy (default) or eager for <img loading>
    • Decoding: async (default) or sync for <img decoding>

site.webmanifest and robots.txt

  • site.webmanifest is derived from page data; Export Options can override fields.
  • robots.txt defaults to a permissive header and adds Disallow lines 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: asset zipPath (e.g. assets/abcd1234.png or grouped assets/images/...)
    • integrity: sha256-<base64> (real SHA-256 of the asset bytes)
  • bundleHash: sha256-<base64> over a deterministic join of path and integrity for 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 bundleHash from 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) and form.actionUrl in Auto mode.
S
Description
랜딩페이지 제작기
Readme 1.7 MiB
Languages
TypeScript 98.8%
JavaScript 1.1%