launchframe 0.2.0 → 0.2.2
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.
- package/README.md +144 -183
- package/bin/launchframe.mjs +261 -28
- package/package.json +52 -67
- package/template/.aider.conf.yml +3 -0
- package/template/.amazonq/cli-agents/clone-website.json +9 -0
- package/template/.amazonq/rules/project.md +161 -0
- package/template/.augment/commands/clone-website.md +518 -0
- package/template/.claude/skills/clone-website/SKILL.md +517 -0
- package/template/.clinerules +161 -0
- package/template/.codex/skills/clone-website/SKILL.md +517 -0
- package/template/.continue/commands/clone-website.md +519 -0
- package/template/.continue/rules/project.md +165 -0
- package/template/.cursor/commands/clone-website.md +514 -0
- package/template/.cursor/rules/project.mdc +20 -0
- package/template/.dockerignore +60 -0
- package/template/.gemini/commands/clone-website.toml +520 -0
- package/template/.gitattributes +9 -0
- package/template/.github/ISSUE_TEMPLATE/bug_report.yml +86 -0
- package/template/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/template/.github/ISSUE_TEMPLATE/feature_request.yml +50 -0
- package/template/.github/PULL_REQUEST_TEMPLATE.md +19 -0
- package/template/.github/copilot-instructions.md +161 -0
- package/template/.github/copilot-setup-steps.yml +3 -0
- package/template/.github/skills/clone-website/SKILL.md +517 -0
- package/template/.github/workflows/ci.yml +36 -0
- package/template/.nvmrc +1 -0
- package/template/.opencode/commands/clone-website.md +517 -0
- package/template/.windsurf/workflows/clone-website.md +514 -0
- package/template/.windsurfrules +2 -0
- package/template/AGENTS.md +79 -0
- package/template/CHANGELOG.md +80 -0
- package/template/CLAUDE.md +1 -0
- package/template/Dockerfile +114 -0
- package/template/Dockerfile.dev +15 -0
- package/template/GEMINI.md +1 -0
- package/template/README.md +118 -0
- package/template/START_HERE.md +15 -0
- package/template/components.json +25 -0
- package/template/docker-compose.yml +53 -0
- package/template/docs/design-references/.gitkeep +0 -0
- package/template/docs/design-references/comparison.png +0 -0
- package/template/docs/research/INSPECTION_GUIDE.md +80 -0
- package/template/eslint.config.mjs +18 -0
- package/template/next.config.ts +8 -0
- package/template/package.json +59 -0
- package/template/postcss.config.mjs +7 -0
- package/template/public/images/.gitkeep +0 -0
- package/template/public/seo/.gitkeep +0 -0
- package/template/public/videos/.gitkeep +0 -0
- package/template/scripts/.gitkeep +0 -0
- package/template/scripts/sync-agent-rules.sh +88 -0
- package/template/scripts/sync-skills.mjs +111 -0
- package/template/src/app/favicon.ico +0 -0
- package/template/src/app/globals.css +130 -0
- package/template/src/app/layout.tsx +33 -0
- package/template/src/app/page.tsx +9 -0
- package/template/src/components/ui/button.tsx +60 -0
- package/template/src/hooks/.gitkeep +0 -0
- package/template/src/lib/utils.ts +6 -0
- package/template/src/types/.gitkeep +0 -0
- package/template/tsconfig.json +34 -0
- package/packages/extract/automated-clone-pass.ts +0 -353
- package/packages/extract/browser-extract.ts +0 -237
- package/packages/extract/cloner-research-emit.ts +0 -270
- package/packages/extract/dom-crawler.ts +0 -521
- package/packages/extract/emit.ts +0 -553
- package/packages/extract/extract.ts +0 -548
- package/packages/extract/host-slug.ts +0 -5
- package/packages/extract/mirror-emit.ts +0 -620
- package/packages/extract/package.json +0 -13
- package/packages/extract/reference-dump.ts +0 -431
- package/packages/extract/synthesize.ts +0 -551
- 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,118 @@
|
|
|
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
|
+
Dependencies were installed for you. It bundles the [`ai-website-cloner-template`](https://github.com/JCodesMore/ai-website-cloner-template) workflow with **`launchframe.config.json`** (your `url` + SaaS `idea`).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Quick start (two steps)
|
|
14
|
+
|
|
15
|
+
1. **Open this folder** in [Cursor](https://cursor.com/) (or any AI editor).
|
|
16
|
+
2. In chat, say: **Build it.**
|
|
17
|
+
|
|
18
|
+
Your AI reads [`launchframe.config.json`](./launchframe.config.json) and [`AGENTS.md`](./AGENTS.md) and runs the full clone + rebrand pipeline (same as **`/clone-website`**).
|
|
19
|
+
|
|
20
|
+
Rather read a postcard? See [`START_HERE.md`](./START_HERE.md).
|
|
21
|
+
|
|
22
|
+
## What `/clone-website` does
|
|
23
|
+
|
|
24
|
+
A multi-phase pipeline runs inside your AI agent:
|
|
25
|
+
|
|
26
|
+
1. **Reconnaissance** — screenshots, design-token extraction, interaction sweep (scroll, click, hover, responsive)
|
|
27
|
+
2. **Foundation** — updates fonts, colors, globals, downloads all assets
|
|
28
|
+
3. **Component Specs** — writes detailed spec files (`docs/research/components/`) with exact computed CSS values
|
|
29
|
+
4. **Parallel Build** — dispatches builder agents in git worktrees, one per section
|
|
30
|
+
5. **SaaS Rebrand Pass** — swaps product name, headlines, feature copy, CTAs, and brand marks to match `launchframe.config.json#idea`. Visuals stay 1:1.
|
|
31
|
+
6. **Assembly & Visual QA** — merges worktrees, wires up the page, runs visual diff against the original
|
|
32
|
+
|
|
33
|
+
Each builder agent receives the full component spec inline — exact `getComputedStyle()` values, interaction models, multi-state content, responsive breakpoints, asset paths. No guessing.
|
|
34
|
+
|
|
35
|
+
## Supported AI Agents
|
|
36
|
+
|
|
37
|
+
| Agent | Status |
|
|
38
|
+
| ------------------------------------------------------------- | -------------------------- |
|
|
39
|
+
| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | **Recommended** — Opus 4.7 |
|
|
40
|
+
| [Codex CLI](https://github.com/openai/codex) | Supported |
|
|
41
|
+
| [OpenCode](https://opencode.ai/) | Supported |
|
|
42
|
+
| [GitHub Copilot](https://github.com/features/copilot) | Supported |
|
|
43
|
+
| [Cursor](https://cursor.com/) | Supported |
|
|
44
|
+
| [Windsurf](https://codeium.com/windsurf) | Supported |
|
|
45
|
+
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Supported |
|
|
46
|
+
| [Cline](https://github.com/cline/cline) | Supported |
|
|
47
|
+
| [Roo Code](https://github.com/RooCodeInc/Roo-Code) | Supported |
|
|
48
|
+
| [Continue](https://continue.dev/) | Supported |
|
|
49
|
+
| [Amazon Q](https://aws.amazon.com/q/developer/) | Supported |
|
|
50
|
+
| [Augment Code](https://www.augmentcode.com/) | Supported |
|
|
51
|
+
| [Aider](https://aider.chat/) | Supported |
|
|
52
|
+
|
|
53
|
+
## Tech Stack
|
|
54
|
+
|
|
55
|
+
- **Next.js 16** — App Router, React 19, TypeScript strict
|
|
56
|
+
- **shadcn/ui** — Radix primitives + Tailwind CSS v4
|
|
57
|
+
- **Tailwind CSS v4** — oklch design tokens
|
|
58
|
+
- **Lucide React** — default icons (replaced by extracted SVGs during cloning)
|
|
59
|
+
|
|
60
|
+
## Prerequisites
|
|
61
|
+
|
|
62
|
+
- [Node.js](https://nodejs.org/) 24+
|
|
63
|
+
- An AI coding agent with browser automation MCP (Chrome MCP, Playwright MCP, Browserbase MCP, etc.)
|
|
64
|
+
|
|
65
|
+
## Project Structure
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
src/
|
|
69
|
+
app/ # Next.js routes
|
|
70
|
+
components/ # React components
|
|
71
|
+
ui/ # shadcn/ui primitives
|
|
72
|
+
icons.tsx # Extracted SVG icons
|
|
73
|
+
lib/utils.ts # cn() utility
|
|
74
|
+
types/ # TypeScript interfaces
|
|
75
|
+
hooks/ # Custom React hooks
|
|
76
|
+
public/
|
|
77
|
+
images/ # Downloaded images from target
|
|
78
|
+
videos/ # Downloaded videos from target
|
|
79
|
+
seo/ # Favicons, OG images
|
|
80
|
+
docs/
|
|
81
|
+
research/ # Extraction output, component specs, REBRAND.md
|
|
82
|
+
design-references/ # Screenshots
|
|
83
|
+
scripts/
|
|
84
|
+
sync-agent-rules.sh # Regenerate agent instruction files
|
|
85
|
+
sync-skills.mjs # Regenerate /clone-website for all platforms
|
|
86
|
+
launchframe.config.json # ← URL + SaaS idea (single source of truth)
|
|
87
|
+
AGENTS.md # Agent instructions (single source of truth)
|
|
88
|
+
START_HERE.md # "Open Cursor → say Build it"
|
|
89
|
+
CLAUDE.md # Claude Code config (imports AGENTS.md)
|
|
90
|
+
GEMINI.md # Gemini CLI config (imports AGENTS.md)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Commands
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm run dev # Start dev server
|
|
97
|
+
npm run build # Production build
|
|
98
|
+
npm run lint # ESLint check
|
|
99
|
+
npm run typecheck # TypeScript check
|
|
100
|
+
npm run check # Run lint + typecheck + build
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Use Cases
|
|
104
|
+
|
|
105
|
+
- **Launch a SaaS faster** — start from a proven landing page, not a blank canvas
|
|
106
|
+
- **Platform migration** — rebuild a site you own from WordPress/Webflow/Squarespace into a modern Next.js codebase
|
|
107
|
+
- **Lost source code** — your site is live but the repo is gone; get the code back in a modern format
|
|
108
|
+
- **Learning** — deconstruct how production sites achieve specific layouts, animations, and responsive behavior
|
|
109
|
+
|
|
110
|
+
## Not Intended For
|
|
111
|
+
|
|
112
|
+
- **Phishing or impersonation** — this project must not be used for deceptive purposes, impersonation, or any activity that breaks the law
|
|
113
|
+
- **Passing off someone's design as your own** — logos, brand assets, and original copy belong to their owners
|
|
114
|
+
- **Violating terms of service** — some sites prohibit scraping or reproduction. Check first
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
MIT
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Start here
|
|
2
|
+
|
|
3
|
+
You already ran `npx launchframe@latest <url> "<saas idea>"` — dependencies were installed for you.
|
|
4
|
+
|
|
5
|
+
## Do this next
|
|
6
|
+
|
|
7
|
+
1. **Open this folder** in [Cursor](https://cursor.com/) (or any AI editor).
|
|
8
|
+
2. In chat, say: **Build it.**
|
|
9
|
+
|
|
10
|
+
That tells your AI to read `launchframe.config.json` and `AGENTS.md` and run the full **clone + SaaS rebrand** pipeline (same work as `/clone-website`).
|
|
11
|
+
|
|
12
|
+
## Optional
|
|
13
|
+
|
|
14
|
+
- Prefer a slash command? Use **`/clone-website`** in Cursor.
|
|
15
|
+
- Wrong URL or idea? Edit **`launchframe.config.json`**, then say **Build it** again.
|
|
@@ -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
|
|
Binary file
|
|
@@ -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,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
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|