launchframe 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +143 -183
  2. package/bin/launchframe.mjs +234 -30
  3. package/package.json +52 -67
  4. package/template/.aider.conf.yml +3 -0
  5. package/template/.amazonq/cli-agents/clone-website.json +9 -0
  6. package/template/.amazonq/rules/project.md +156 -0
  7. package/template/.augment/commands/clone-website.md +516 -0
  8. package/template/.claude/skills/clone-website/SKILL.md +515 -0
  9. package/template/.clinerules +156 -0
  10. package/template/.codex/skills/clone-website/SKILL.md +515 -0
  11. package/template/.continue/commands/clone-website.md +517 -0
  12. package/template/.continue/rules/project.md +160 -0
  13. package/template/.cursor/commands/clone-website.md +512 -0
  14. package/template/.cursor/rules/project.mdc +7 -0
  15. package/template/.dockerignore +60 -0
  16. package/template/.gemini/commands/clone-website.toml +518 -0
  17. package/template/.gitattributes +9 -0
  18. package/template/.github/ISSUE_TEMPLATE/bug_report.yml +86 -0
  19. package/template/.github/ISSUE_TEMPLATE/config.yml +5 -0
  20. package/template/.github/ISSUE_TEMPLATE/feature_request.yml +50 -0
  21. package/template/.github/PULL_REQUEST_TEMPLATE.md +19 -0
  22. package/template/.github/copilot-instructions.md +156 -0
  23. package/template/.github/copilot-setup-steps.yml +3 -0
  24. package/template/.github/skills/clone-website/SKILL.md +515 -0
  25. package/template/.github/workflows/ci.yml +36 -0
  26. package/template/.nvmrc +1 -0
  27. package/template/.opencode/commands/clone-website.md +515 -0
  28. package/template/.windsurf/workflows/clone-website.md +512 -0
  29. package/template/.windsurfrules +2 -0
  30. package/template/AGENTS.md +74 -0
  31. package/template/CHANGELOG.md +80 -0
  32. package/template/CLAUDE.md +1 -0
  33. package/template/Dockerfile +114 -0
  34. package/template/Dockerfile.dev +15 -0
  35. package/template/GEMINI.md +1 -0
  36. package/template/README.md +129 -0
  37. package/template/components.json +25 -0
  38. package/template/docker-compose.yml +53 -0
  39. package/template/docs/design-references/.gitkeep +0 -0
  40. package/template/docs/design-references/comparison.png +0 -0
  41. package/template/docs/research/INSPECTION_GUIDE.md +80 -0
  42. package/template/eslint.config.mjs +18 -0
  43. package/template/next.config.ts +8 -0
  44. package/template/package.json +59 -0
  45. package/template/postcss.config.mjs +7 -0
  46. package/template/public/images/.gitkeep +0 -0
  47. package/template/public/seo/.gitkeep +0 -0
  48. package/template/public/videos/.gitkeep +0 -0
  49. package/template/scripts/.gitkeep +0 -0
  50. package/template/scripts/sync-agent-rules.sh +88 -0
  51. package/template/scripts/sync-skills.mjs +111 -0
  52. package/template/src/app/favicon.ico +0 -0
  53. package/template/src/app/globals.css +130 -0
  54. package/template/src/app/layout.tsx +33 -0
  55. package/template/src/app/page.tsx +9 -0
  56. package/template/src/components/ui/button.tsx +60 -0
  57. package/template/src/hooks/.gitkeep +0 -0
  58. package/template/src/lib/utils.ts +6 -0
  59. package/template/src/types/.gitkeep +0 -0
  60. package/template/tsconfig.json +34 -0
  61. package/packages/extract/automated-clone-pass.ts +0 -353
  62. package/packages/extract/browser-extract.ts +0 -237
  63. package/packages/extract/cloner-research-emit.ts +0 -270
  64. package/packages/extract/dom-crawler.ts +0 -521
  65. package/packages/extract/emit.ts +0 -553
  66. package/packages/extract/extract.ts +0 -548
  67. package/packages/extract/host-slug.ts +0 -5
  68. package/packages/extract/mirror-emit.ts +0 -620
  69. package/packages/extract/package.json +0 -13
  70. package/packages/extract/reference-dump.ts +0 -431
  71. package/packages/extract/synthesize.ts +0 -551
  72. package/packages/extract/types.ts +0 -316
@@ -0,0 +1,80 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Changed
11
+ - Raised the project Node.js baseline to 24 across local development, CI, Docker, and contributor-facing documentation
12
+
13
+ ## [0.3.1] - 2026-03-29
14
+
15
+ ### Fixed
16
+ - `sync-agent-rules.sh` failing to resolve `@file` imports on Windows due to CRLF line endings — platform instruction files now correctly inline the Inspection Guide content
17
+
18
+ ## [0.3.0] - 2026-03-29
19
+
20
+ ### Added
21
+ - Multi-URL support for `/clone-website` — clone multiple sites in a single command with parallel processing and isolated output
22
+ - CI quality gates via GitHub Actions — automated lint, typecheck, and build on every push and PR
23
+ - `npm run typecheck` and `npm run check` scripts for local quality validation
24
+ - `.gitattributes` for cross-platform line ending normalization
25
+ - `.nvmrc` to pin Node.js 20 for contributor consistency
26
+
27
+ ### Changed
28
+ - Streamlined PR template — removed redundant checklist items and screenshots section
29
+ - Improved project description and README — clearer use cases, limitations, and modern wording
30
+ - Refined documentation and agent rules across all platforms for clarity and consistency
31
+ - Fixed CRLF handling in `sync-skills.mjs` for reliable Windows operation
32
+
33
+ ### Removed
34
+ - Outdated use case from README documentation
35
+
36
+ ## [0.2.0] - 2026-03-28
37
+
38
+ ### Added
39
+ - Multi-platform AI agent support: Claude Code, Codex CLI, OpenCode, GitHub Copilot, Cursor, Windsurf, Gemini CLI, Cline/Roo Code, Continue, Amazon Q, Augment Code, Aider
40
+ - Platform-specific instruction files and `/clone-website` skill for each supported agent
41
+ - `scripts/sync-agent-rules.sh` to regenerate platform instruction files from AGENTS.md
42
+ - `scripts/sync-skills.mjs` to regenerate `/clone-website` skill across all platforms
43
+ - GEMINI.md for Gemini CLI configuration
44
+ - Supported Platforms table in README
45
+ - "Updating for Other Platforms" documentation section in README
46
+
47
+ ### Changed
48
+ - README now describes the project as multi-agent (Claude Code recommended, not required)
49
+ - AGENTS.md updated with sync script reminders
50
+
51
+ ## [0.1.1] - 2026-03-28
52
+
53
+ ### Added
54
+ - Bug report and feature request issue templates
55
+ - Pull request template with checklist
56
+ - CHANGELOG.md following Keep a Changelog format
57
+ - Package.json metadata (description, repository, homepage, keywords, engines)
58
+
59
+ ### Fixed
60
+ - LICENSE copyright holder now attributed to JCodesMore
61
+
62
+ ## [0.1.0] - 2026-03-28
63
+
64
+ ### Added
65
+ - Initial template scaffold for website reverse-engineering with Claude Code
66
+ - `/clone-website` skill for full-site cloning pipeline
67
+ - `/build-from-spec` and `/customize` skills
68
+ - Parallel builder agents with git worktree isolation
69
+ - Chrome MCP integration for design token extraction
70
+ - Comprehensive inspection guide and project structure documentation
71
+ - Next.js 16 + shadcn/ui + Tailwind CSS v4 base scaffold
72
+ - MIT license
73
+ - README with badges, demo section, quick start, and star history
74
+
75
+ [Unreleased]: https://github.com/JCodesMore/ai-website-cloner-template/compare/v0.3.1...HEAD
76
+ [0.3.1]: https://github.com/JCodesMore/ai-website-cloner-template/compare/v0.3.0...v0.3.1
77
+ [0.3.0]: https://github.com/JCodesMore/ai-website-cloner-template/compare/v0.2.0...v0.3.0
78
+ [0.2.0]: https://github.com/JCodesMore/ai-website-cloner-template/compare/v0.1.1...v0.2.0
79
+ [0.1.1]: https://github.com/JCodesMore/ai-website-cloner-template/compare/v0.1.0...v0.1.1
80
+ [0.1.0]: https://github.com/JCodesMore/ai-website-cloner-template/releases/tag/v0.1.0
@@ -0,0 +1 @@
1
+ @AGENTS.md
@@ -0,0 +1,114 @@
1
+ # SRC https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile
2
+
3
+ # ============================================
4
+ # Stage 1: Dependencies Installation Stage
5
+ # ============================================
6
+
7
+ # IMPORTANT: Node.js Version Maintenance
8
+ # This Dockerfile defaults to Node.js 24.14.1-slim to match the repo's Node 24 baseline.
9
+ # To ensure security and compatibility, update the NODE_VERSION ARG when the project's Node baseline changes.
10
+ ARG NODE_VERSION=24.14.1-slim
11
+
12
+ FROM node:${NODE_VERSION} AS dependencies
13
+
14
+ # Set working directory
15
+ WORKDIR /app
16
+
17
+ # Copy package-related files first to leverage Docker's caching mechanism
18
+ COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./
19
+
20
+ # Install project dependencies with frozen lockfile for reproducible builds
21
+ RUN --mount=type=cache,target=/root/.npm \
22
+ --mount=type=cache,target=/usr/local/share/.cache/yarn \
23
+ --mount=type=cache,target=/root/.local/share/pnpm/store \
24
+ if [ -f package-lock.json ]; then \
25
+ npm ci --no-audit --no-fund; \
26
+ elif [ -f yarn.lock ]; then \
27
+ corepack enable yarn && yarn install --frozen-lockfile --production=false; \
28
+ elif [ -f pnpm-lock.yaml ]; then \
29
+ corepack enable pnpm && pnpm install --frozen-lockfile; \
30
+ else \
31
+ echo "No lockfile found." && exit 1; \
32
+ fi
33
+
34
+ # ============================================
35
+ # Stage 2: Build Next.js application in standalone mode
36
+ # ============================================
37
+
38
+ FROM node:${NODE_VERSION} AS builder
39
+
40
+ # Set working directory
41
+ WORKDIR /app
42
+
43
+ # Copy project dependencies from dependencies stage
44
+ COPY --from=dependencies /app/node_modules ./node_modules
45
+
46
+ # Copy application source code
47
+ COPY . .
48
+
49
+ ENV NODE_ENV=production
50
+
51
+ # Next.js collects completely anonymous telemetry data about general usage.
52
+ # Learn more here: https://nextjs.org/telemetry
53
+ # Uncomment the following line in case you want to disable telemetry during the build.
54
+ # ENV NEXT_TELEMETRY_DISABLED=1
55
+
56
+ # Build Next.js application
57
+ # If you want to speed up Docker rebuilds, you can cache the build artifacts
58
+ # by adding: --mount=type=cache,target=/app/.next/cache
59
+ # This caches the .next/cache directory across builds, but it also prevents
60
+ # .next/cache/fetch-cache from being included in the final image, meaning
61
+ # cached fetch responses from the build won't be available at runtime.
62
+ RUN if [ -f package-lock.json ]; then \
63
+ npm run build; \
64
+ elif [ -f yarn.lock ]; then \
65
+ corepack enable yarn && yarn build; \
66
+ elif [ -f pnpm-lock.yaml ]; then \
67
+ corepack enable pnpm && pnpm build; \
68
+ else \
69
+ echo "No lockfile found." && exit 1; \
70
+ fi
71
+
72
+ # ============================================
73
+ # Stage 3: Run Next.js application
74
+ # ============================================
75
+
76
+ FROM node:${NODE_VERSION} AS runner
77
+
78
+ # Set working directory
79
+ WORKDIR /app
80
+
81
+ # Set production environment variables
82
+ ENV NODE_ENV=production
83
+ ENV PORT=3000
84
+ ENV HOSTNAME="0.0.0.0"
85
+
86
+ # Next.js collects completely anonymous telemetry data about general usage.
87
+ # Learn more here: https://nextjs.org/telemetry
88
+ # Uncomment the following line in case you want to disable telemetry during the run time.
89
+ # ENV NEXT_TELEMETRY_DISABLED=1
90
+
91
+ # Copy production assets
92
+ COPY --from=builder --chown=node:node /app/public ./public
93
+
94
+ # Set the correct permission for prerender cache
95
+ RUN mkdir .next
96
+ RUN chown node:node .next
97
+
98
+ # Automatically leverage output traces to reduce image size
99
+ # https://nextjs.org/docs/advanced-features/output-file-tracing
100
+ COPY --from=builder --chown=node:node /app/.next/standalone ./
101
+ COPY --from=builder --chown=node:node /app/.next/static ./.next/static
102
+
103
+ # If you want to persist the fetch cache generated during the build so that
104
+ # cached responses are available immediately on startup, uncomment this line:
105
+ # COPY --from=builder --chown=node:node /app/.next/cache ./.next/cache
106
+
107
+ # Switch to non-root user for security best practices
108
+ USER node
109
+
110
+ # Expose port 3000 to allow HTTP traffic
111
+ EXPOSE 3000
112
+
113
+ # Start Next.js standalone server
114
+ CMD ["node", "server.js"]
@@ -0,0 +1,15 @@
1
+ FROM node:24-alpine
2
+
3
+ WORKDIR /app
4
+
5
+ COPY package.json package-lock.json ./
6
+ RUN npm install
7
+
8
+ # Source files are mounted as a volume at runtime for hot reload
9
+
10
+ EXPOSE 3000
11
+
12
+ ENV NODE_ENV=development
13
+ ENV NEXT_TELEMETRY_DISABLED=1
14
+
15
+ CMD ["npm", "run", "dev"]
@@ -0,0 +1 @@
1
+ @AGENTS.md
@@ -0,0 +1,129 @@
1
+ # Launchframe Project
2
+
3
+ This project was scaffolded by **[Launchframe](https://github.com/evangruhlkey/launchframe)** — an AI-powered website cloner + SaaS rebrander.
4
+
5
+ ```bash
6
+ npx launchframe@latest <url> "<saas idea>"
7
+ ```
8
+
9
+ It bundles the [`ai-website-cloner-template`](https://github.com/JCodesMore/ai-website-cloner-template) workflow with one extra ingredient: a `launchframe.config.json` that tells your AI agent which URL to clone visually and which SaaS idea to re-skin it for.
10
+
11
+ ---
12
+
13
+ ## Quick Start
14
+
15
+ 1. **Install dependencies**
16
+ ```bash
17
+ npm install
18
+ ```
19
+ 2. **Confirm the config** in [`launchframe.config.json`](./launchframe.config.json):
20
+ ```json
21
+ {
22
+ "url": "https://linear.app",
23
+ "idea": "AI-powered customer feedback platform"
24
+ }
25
+ ```
26
+ Edit either field any time — the skill re-reads it every run.
27
+ 3. **Open the project in your AI coding agent** — [Claude Code](https://docs.anthropic.com/en/docs/claude-code) with Opus 4.7 is recommended (`claude --chrome`), but [Cursor](https://cursor.com/), [Codex CLI](https://github.com/openai/codex), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Copilot](https://github.com/features/copilot), [Windsurf](https://codeium.com/windsurf), [Cline](https://github.com/cline/cline), [Continue](https://continue.dev/), [Amazon Q](https://aws.amazon.com/q/developer/), [Augment](https://www.augmentcode.com/), and [Aider](https://aider.chat/) all work.
28
+ 4. **Run the skill:**
29
+ ```
30
+ /clone-website
31
+ ```
32
+ It reads `launchframe.config.json` automatically — no need to pass the URL again.
33
+
34
+ ## What `/clone-website` does
35
+
36
+ A multi-phase pipeline runs inside your AI agent:
37
+
38
+ 1. **Reconnaissance** — screenshots, design-token extraction, interaction sweep (scroll, click, hover, responsive)
39
+ 2. **Foundation** — updates fonts, colors, globals, downloads all assets
40
+ 3. **Component Specs** — writes detailed spec files (`docs/research/components/`) with exact computed CSS values
41
+ 4. **Parallel Build** — dispatches builder agents in git worktrees, one per section
42
+ 5. **SaaS Rebrand Pass** — swaps product name, headlines, feature copy, CTAs, and brand marks to match `launchframe.config.json#idea`. Visuals stay 1:1.
43
+ 6. **Assembly & Visual QA** — merges worktrees, wires up the page, runs visual diff against the original
44
+
45
+ Each builder agent receives the full component spec inline — exact `getComputedStyle()` values, interaction models, multi-state content, responsive breakpoints, asset paths. No guessing.
46
+
47
+ ## Supported AI Agents
48
+
49
+ | Agent | Status |
50
+ | ------------------------------------------------------------- | -------------------------- |
51
+ | [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | **Recommended** — Opus 4.7 |
52
+ | [Codex CLI](https://github.com/openai/codex) | Supported |
53
+ | [OpenCode](https://opencode.ai/) | Supported |
54
+ | [GitHub Copilot](https://github.com/features/copilot) | Supported |
55
+ | [Cursor](https://cursor.com/) | Supported |
56
+ | [Windsurf](https://codeium.com/windsurf) | Supported |
57
+ | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Supported |
58
+ | [Cline](https://github.com/cline/cline) | Supported |
59
+ | [Roo Code](https://github.com/RooCodeInc/Roo-Code) | Supported |
60
+ | [Continue](https://continue.dev/) | Supported |
61
+ | [Amazon Q](https://aws.amazon.com/q/developer/) | Supported |
62
+ | [Augment Code](https://www.augmentcode.com/) | Supported |
63
+ | [Aider](https://aider.chat/) | Supported |
64
+
65
+ ## Tech Stack
66
+
67
+ - **Next.js 16** — App Router, React 19, TypeScript strict
68
+ - **shadcn/ui** — Radix primitives + Tailwind CSS v4
69
+ - **Tailwind CSS v4** — oklch design tokens
70
+ - **Lucide React** — default icons (replaced by extracted SVGs during cloning)
71
+
72
+ ## Prerequisites
73
+
74
+ - [Node.js](https://nodejs.org/) 24+
75
+ - An AI coding agent with browser automation MCP (Chrome MCP, Playwright MCP, Browserbase MCP, etc.)
76
+
77
+ ## Project Structure
78
+
79
+ ```
80
+ src/
81
+ app/ # Next.js routes
82
+ components/ # React components
83
+ ui/ # shadcn/ui primitives
84
+ icons.tsx # Extracted SVG icons
85
+ lib/utils.ts # cn() utility
86
+ types/ # TypeScript interfaces
87
+ hooks/ # Custom React hooks
88
+ public/
89
+ images/ # Downloaded images from target
90
+ videos/ # Downloaded videos from target
91
+ seo/ # Favicons, OG images
92
+ docs/
93
+ research/ # Extraction output, component specs, REBRAND.md
94
+ design-references/ # Screenshots
95
+ scripts/
96
+ sync-agent-rules.sh # Regenerate agent instruction files
97
+ sync-skills.mjs # Regenerate /clone-website for all platforms
98
+ launchframe.config.json # ← URL + SaaS idea (single source of truth)
99
+ AGENTS.md # Agent instructions (single source of truth)
100
+ CLAUDE.md # Claude Code config (imports AGENTS.md)
101
+ GEMINI.md # Gemini CLI config (imports AGENTS.md)
102
+ ```
103
+
104
+ ## Commands
105
+
106
+ ```bash
107
+ npm run dev # Start dev server
108
+ npm run build # Production build
109
+ npm run lint # ESLint check
110
+ npm run typecheck # TypeScript check
111
+ npm run check # Run lint + typecheck + build
112
+ ```
113
+
114
+ ## Use Cases
115
+
116
+ - **Launch a SaaS faster** — start from a proven landing page, not a blank canvas
117
+ - **Platform migration** — rebuild a site you own from WordPress/Webflow/Squarespace into a modern Next.js codebase
118
+ - **Lost source code** — your site is live but the repo is gone; get the code back in a modern format
119
+ - **Learning** — deconstruct how production sites achieve specific layouts, animations, and responsive behavior
120
+
121
+ ## Not Intended For
122
+
123
+ - **Phishing or impersonation** — this project must not be used for deceptive purposes, impersonation, or any activity that breaks the law
124
+ - **Passing off someone's design as your own** — logos, brand assets, and original copy belong to their owners
125
+ - **Violating terms of service** — some sites prohibit scraping or reproduction. Check first
126
+
127
+ ## License
128
+
129
+ MIT
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "base-nova",
4
+ "rsc": true,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/app/globals.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "iconLibrary": "lucide",
14
+ "rtl": false,
15
+ "aliases": {
16
+ "components": "@/components",
17
+ "utils": "@/lib/utils",
18
+ "ui": "@/components/ui",
19
+ "lib": "@/lib",
20
+ "hooks": "@/hooks"
21
+ },
22
+ "menuColor": "default",
23
+ "menuAccent": "subtle",
24
+ "registries": {}
25
+ }
@@ -0,0 +1,53 @@
1
+ services:
2
+ app:
3
+ build:
4
+ context: .
5
+ dockerfile: Dockerfile
6
+ target: runner
7
+ image: ai-website-cloner:latest
8
+ container_name: ai-website-cloner
9
+ restart: unless-stopped
10
+ ports:
11
+ - "${PORT:-3000}:3000"
12
+ environment:
13
+ - NODE_ENV=production
14
+ - NEXT_TELEMETRY_DISABLED=1
15
+ env_file:
16
+ - path: .env.local
17
+ required: false
18
+ - path: .env
19
+ required: false
20
+ healthcheck:
21
+ test: ["CMD-SHELL", "wget -qO- http://localhost:3000/ || exit 1"]
22
+ interval: 30s
23
+ timeout: 10s
24
+ retries: 3
25
+ start_period: 10s
26
+
27
+ dev:
28
+ build:
29
+ context: .
30
+ dockerfile: Dockerfile.dev
31
+ image: ai-website-cloner:dev
32
+ container_name: ai-website-cloner-dev
33
+ restart: unless-stopped
34
+ ports:
35
+ - "${DEV_PORT:-3001}:3000"
36
+ environment:
37
+ - NODE_ENV=development
38
+ - NEXT_TELEMETRY_DISABLED=1
39
+ env_file:
40
+ - path: .env.local
41
+ required: false
42
+ - path: .env
43
+ required: false
44
+ volumes:
45
+ - .:/app
46
+ - /app/node_modules
47
+ - /app/.next
48
+ healthcheck:
49
+ test: ["CMD-SHELL", "wget -qO- http://localhost:3000/ || exit 1"]
50
+ interval: 30s
51
+ timeout: 10s
52
+ retries: 3
53
+ start_period: 15s
File without changes
@@ -0,0 +1,80 @@
1
+ # Website Inspection Guide
2
+
3
+ ## How to Reverse-Engineer Any Website
4
+
5
+ This guide outlines what to capture when inspecting a target website via Chrome MCP or browser DevTools.
6
+
7
+ ## Phase 1: Visual Audit
8
+
9
+ ### Screenshots to Capture
10
+ - [ ] Every distinct page — desktop, tablet, mobile
11
+ - [ ] Dark mode variants (if applicable)
12
+ - [ ] Light mode variants (if applicable)
13
+ - [ ] Key interaction states (hover, active, open menus, modals)
14
+ - [ ] Loading/skeleton states
15
+ - [ ] Empty states
16
+ - [ ] Error states
17
+
18
+ ### Design Tokens to Extract
19
+ - [ ] **Colors** — background, text (primary/secondary/muted), accent, border, hover, error, success, warning
20
+ - [ ] **Typography** — font family, sizes (h1-h6, body, caption, label), weights, line heights, letter spacing
21
+ - [ ] **Spacing** — padding/margin patterns (look for a scale: 4px, 8px, 12px, 16px, 24px, 32px, etc.)
22
+ - [ ] **Border radius** — buttons, cards, avatars, inputs
23
+ - [ ] **Shadows/elevation** — card shadows, dropdown shadows, modal overlay
24
+ - [ ] **Breakpoints** — when does the layout shift? (inspect with DevTools responsive mode)
25
+ - [ ] **Icons** — which icon library? custom SVGs? sizes?
26
+ - [ ] **Avatars** — sizes, shapes, fallback behavior
27
+ - [ ] **Buttons** — all variants (primary, secondary, ghost, icon-only, danger)
28
+ - [ ] **Inputs** — text fields, textareas, selects, checkboxes, toggles
29
+
30
+ ## Phase 2: Component Inventory
31
+
32
+ For each distinct UI component, document:
33
+ 1. **Name** — what would you call this component?
34
+ 2. **Structure** — what HTML elements / child components does it contain?
35
+ 3. **Variants** — does it have different sizes, colors, or states?
36
+ 4. **States** — default, hover, active, disabled, loading, error, empty
37
+ 5. **Responsive behavior** — how does it change at different breakpoints?
38
+ 6. **Interactions** — click, hover, focus, keyboard navigation
39
+ 7. **Animations** — transitions, entrance/exit animations, micro-interactions
40
+
41
+ ### Common Components to Look For
42
+ - Navigation (top bar, sidebar, bottom bar)
43
+ - Cards / list items
44
+ - Buttons and links
45
+ - Forms and inputs
46
+ - Modals and dialogs
47
+ - Dropdowns and menus
48
+ - Tabs and segmented controls
49
+ - Avatars and user badges
50
+ - Loading skeletons
51
+ - Toast notifications
52
+ - Tooltips and popovers
53
+
54
+ ## Phase 3: Layout Architecture
55
+
56
+ - [ ] **Grid system** — CSS Grid? Flexbox? Fixed widths?
57
+ - [ ] **Column layout** — how many columns at each breakpoint?
58
+ - [ ] **Max-width** — main content area max-width
59
+ - [ ] **Sticky elements** — header, sidebar, floating buttons
60
+ - [ ] **Z-index layers** — navigation, modals, tooltips, overlays
61
+ - [ ] **Scroll behavior** — infinite scroll, pagination, virtual scrolling
62
+
63
+ ## Phase 4: Technical Stack Analysis
64
+
65
+ - [ ] **Framework** — React? Vue? Angular? Check `__NEXT_DATA__`, `__NUXT__`, `ng-version`
66
+ - [ ] **CSS approach** — Tailwind (utility classes), CSS Modules, Styled Components, Emotion, vanilla CSS
67
+ - [ ] **State management** — Redux (check DevTools), React Query, Zustand, Pinia
68
+ - [ ] **API patterns** — REST, GraphQL (check network tab for `/graphql` requests)
69
+ - [ ] **Font loading** — Google Fonts, self-hosted, system fonts
70
+ - [ ] **Image strategy** — CDN, lazy loading, srcset, WebP/AVIF
71
+ - [ ] **Animation library** — Framer Motion, GSAP, CSS transitions only
72
+
73
+ ## Phase 5: Documentation Output
74
+
75
+ After inspection, create these files in `docs/research/`:
76
+ 1. `DESIGN_TOKENS.md` — All extracted colors, typography, spacing
77
+ 2. `COMPONENT_INVENTORY.md` — Every component with structure notes
78
+ 3. `LAYOUT_ARCHITECTURE.md` — Page layouts, grid system, responsive behavior
79
+ 4. `INTERACTION_PATTERNS.md` — Animations, transitions, hover states
80
+ 5. `TECH_STACK_ANALYSIS.md` — What the site uses and our chosen equivalents
@@ -0,0 +1,18 @@
1
+ import { defineConfig, globalIgnores } from "eslint/config";
2
+ import nextVitals from "eslint-config-next/core-web-vitals";
3
+ import nextTs from "eslint-config-next/typescript";
4
+
5
+ const eslintConfig = defineConfig([
6
+ ...nextVitals,
7
+ ...nextTs,
8
+ // Override default ignores of eslint-config-next.
9
+ globalIgnores([
10
+ // Default ignores of eslint-config-next:
11
+ ".next/**",
12
+ "out/**",
13
+ "build/**",
14
+ "next-env.d.ts",
15
+ ]),
16
+ ]);
17
+
18
+ export default eslintConfig;
@@ -0,0 +1,8 @@
1
+ import type { NextConfig } from "next";
2
+
3
+ const nextConfig: NextConfig = {
4
+ /* config options here */
5
+ output: "standalone",
6
+ };
7
+
8
+ export default nextConfig;
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "ai-website-clone-template",
3
+ "version": "0.3.1",
4
+ "private": true,
5
+ "description": "Clone any website into a clean, modern Next.js codebase using AI coding agents",
6
+ "author": "JCodesMore",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/JCodesMore/ai-website-cloner-template.git"
11
+ },
12
+ "homepage": "https://github.com/JCodesMore/ai-website-cloner-template",
13
+ "bugs": {
14
+ "url": "https://github.com/JCodesMore/ai-website-cloner-template/issues"
15
+ },
16
+ "keywords": [
17
+ "claude-code",
18
+ "website-clone",
19
+ "reverse-engineering",
20
+ "nextjs",
21
+ "ai",
22
+ "template",
23
+ "tailwindcss",
24
+ "shadcn-ui"
25
+ ],
26
+ "engines": {
27
+ "node": ">=24"
28
+ },
29
+ "scripts": {
30
+ "dev": "next dev",
31
+ "build": "next build",
32
+ "start": "next start",
33
+ "lint": "eslint",
34
+ "typecheck": "tsc --noEmit",
35
+ "check": "npm run lint && npm run typecheck && npm run build"
36
+ },
37
+ "dependencies": {
38
+ "@base-ui/react": "^1.3.0",
39
+ "class-variance-authority": "^0.7.1",
40
+ "clsx": "^2.1.1",
41
+ "lucide-react": "^1.6.0",
42
+ "next": "16.2.1",
43
+ "react": "19.2.4",
44
+ "react-dom": "19.2.4",
45
+ "shadcn": "^4.1.0",
46
+ "tailwind-merge": "^3.5.0",
47
+ "tw-animate-css": "^1.4.0"
48
+ },
49
+ "devDependencies": {
50
+ "@tailwindcss/postcss": "^4",
51
+ "@types/node": "^24",
52
+ "@types/react": "^19",
53
+ "@types/react-dom": "^19",
54
+ "eslint": "^9",
55
+ "eslint-config-next": "16.2.1",
56
+ "tailwindcss": "^4",
57
+ "typescript": "^5"
58
+ }
59
+ }
@@ -0,0 +1,7 @@
1
+ const config = {
2
+ plugins: {
3
+ "@tailwindcss/postcss": {},
4
+ },
5
+ };
6
+
7
+ export default config;
File without changes
File without changes
File without changes
File without changes