可视化拖拽编辑器:以 section、column、block 结构搭建页面,支持撤销重做、自动保存与响应式预览
openfunnels — Laravel 启动器模板
作者 aialvi
OpenFunnels 是一个基于 Laravel 与 React 的自托管开源漏斗构建器,提供可视化拖拽编辑器、表单与联系人管理、轻量 CRM、自动化工作流和自定义域名发布。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
目前有 1 张原始预览,可打开完整图片查看设计细节。
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
线索捕获与联系人管理:可配置条件字段、保留每次提交、记录 UTM 与来源归因,并支持按筛选导出 CSV
轻量 CRM:把联系人推进可配置的销售管道,预测成交金额并跟踪赢单/输单结果
自动化工作流:带版本管理的触发器与动作,支持等待、是/否分支、CRM 更新、邮件、安全 Webhook、运行时间线与重试
发布与域名:发布到 slug 路径或已验证的自定义域名,支持草稿预览和取消发布而不删除内容
分析与实验:跟踪注重隐私的事件、转化趋势、流量来源、流失点,并提供稳定的 A/B 变体分配
模板详细介绍
OpenFunnels 是一个自托管、开源(MIT)的漏斗构建与轻量 CRM 应用,用于创建、发布并改进线索获取流程,同时把客户数据保留在自己的服务器上。项目由 Laravel、Inertia、React 和 TypeScript 构建,仓库提供 Docker Compose 评估栈,可快速在本地启动包含 Web 应用、队列 worker、调度器和 SQLite 持久卷的完整环境。
功能覆盖漏斗页面搭建、线索捕获表单、联系人记录、机会管道、自动化工作流、发布与自定义域名、归因分析、A/B 实验以及可选的 AI 辅助草稿。编辑器以 sections/columns/blocks 的 JSON 结构作为规范数据,支持撤销重做、自动保存和响应式预览;表单提交会保留时间线并记录 UTM 与来源归因;自动化支持等待、分支、CRM 更新、邮件、Webhook 等步骤,并带有运行日志与重试。
使用范围上有明确限制:Docker 评估栈面向本地评估而非生产,不配置 TLS、反向代理或自定义域名基础设施;本地开发需要 PHP 8.3+、Composer 2、Node.js 22、pnpm 10.13.1 和 SQLite;种子账号仅用于本地开发。演示图片、字体、图标等第三方素材需按各自许可核对,域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
适合你的项目吗?
适用场景
- 搭建并发布线索获取漏斗,例如网络研讨会报名或产品试用注册页面
- 用表单收集线索并统一管理联系人状态、备注与来源归因
- 通过自动化工作流在新线索进入后发送邮件、更新 CRM 或触发 Webhook
- 在多个漏斗之间运行 A/B 实验,比较转化趋势与流失点
- 把漏斗导出为 HTML、React、Vue、WordPress、Laravel、Shopify 或 WooCommerce 等目标
适合人群
- 希望自托管漏斗与线索数据、对数据控制有要求的团队
- 需要可视化页面编辑与轻量 CRM 配合使用的市场或增长团队
- 熟悉 Laravel 与 React、愿意自行部署和维护的技术团队
- 想基于 MIT 许可代码二次开发或集成的开发者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
Docker 评估栈需要 Docker 与 Compose v2,执行 docker compose up --build 后访问 http://localhost:8000 并选择 Launch Demo
- 2
本地开发需要 PHP 8.3+(含 Laravel 所需扩展)、Composer 2、Node.js 22、pnpm 10.13.1 和 SQLite
- 3
本地初始化流程:composer install、corepack enable、pnpm install、复制 .env.example 为 .env、生成 key、创建 SQLite 文件并执行 migrate --seed
- 4
种子开发账号为 [email protected] / password,仅限本地开发;默认日志邮件驱动会把验证链接写入 storage/logs/laravel.log
- 5
自定义域名、线索通知、Webhook、自动化队列与 AI 生成等能力通过 .env 中的可选变量启用,AI、邮件、数据库与 Webhook 凭据不应暴露到浏览器
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- Docker 评估栈仅用于本地评估,不适用于生产环境,且不配置 TLS、反向代理或自定义域名基础设施。
- 种子账号 [email protected] / password 仅限本地开发使用,不可用于生产。
- 不得提交 .env 文件,也不得将 AI、邮件、数据库或 Webhook 凭据暴露到浏览器端。
- AI 辅助草稿默认关闭,需自行配置驱动、端点与 API 密钥,可能涉及外部服务费用。
- AI 生成功能需要服务端 API 密钥,属于外部服务凭据,可能产生额外费用。
- 访客演示沙箱默认关闭,需通过 DEMO_MODE 显式启用,且演示账号会过期。
- 访客演示账号相互隔离且会过期,其出站操作与管理操作受到限制。
- 自动化 Webhook 默认仅允许 TLS 目标,启用非 TLS 目标需显式修改配置。
- public/build 中生成的 Vite 资源不应提交到版本库。
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
It is intended for local evaluation—not production—and does not configure TLS, a reverse proxy, or custom-domain infrastructure.
README 原文
The seed account is for local development only.
README 原文
Do not commit `.env` or expose AI, mail, database, or webhook credentials to the browser.
README 原文
`FUNNEL_AI_DRIVER` | `disabled` | Enables a configured funnel-generation driver
README 原文
`FUNNEL_AI_API_KEY` | empty | Server-side generation credential
README 原文
`DEMO_MODE` | `false` | Enables the isolated guest sandbox
README 原文
Run isolated, expiring demo accounts with outbound and administrative actions restricted.
README 原文
`AUTOMATION_WEBHOOK_ALLOW_HTTP` | `false` | Allows non-TLS workflow webhook targets
README 原文
https://github.com/aialvi/openfunnels/blob/main/LICENSEhttps://github.com/aialvi/openfunnels/blob/main/README.mdGenerated Vite assets in `public/build` should not be committed.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-01。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Laravel · React
- 网站类型
- 启动器
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-29
- 截图检查日期
- 2026-10-01
目前没有记录演示链接。请依据仓库说明在本地评估;仅凭截图无法确认交互行为。
目录记录的主要技术栈是 Laravel。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。
查看当时使用的来源资料
SHA-256: 57358f8d7147796b9606c43987c181f2e47bdf7e5b73718de0e47abfc6c36e73
2026-10-01T02:20:23.603Z
来源文件 / 仓库# OpenFunnels [](https://github.com/aialvi/openfunnels/actions/workflows/tests.yml) [](https://github.com/aialvi/openfunnels/actions/workflows/lint.yml) [](LICENSE) [](composer.json) [](package.json) [](docs/docker-evaluation.md) OpenFunnels is a self-hosted, open-source funnel builder for creating, publishing, and improving conversion journeys while keeping customer data under your control. It combines a visual page editor with lead-capture forms, a lightweight CRM, durable workflow automation, attribution analytics, A/B experiments, custom domains, portable templates, and optional AI-assisted drafts. The application is built on Laravel, Inertia, React, and TypeScript. ## Demo https://github.com/user-attachments/assets/0f58d31d-6eed-4a5a-9fda-6adbba6317e2 ## Screenshots | Dashboard analytics | Visual funnel editor | | --- | --- | | <img width="760" height="429" alt="OpenFunnels dashboard showing funnel, conversion, contact, and traffic analytics" src="public/ss/dashboard-analytics.webp" /> | <img width="760" height="429" alt="OpenFunnels visual editor with layout controls, form settings, and draggable content blocks" src="public/ss/visual-funnel-editor.webp" /> | | Funnel starter options | Responsive funnel preview | | --- | --- | | <img width="760" height="429" alt="OpenFunnels new funnel dialog with blank canvas and template options" src="public/ss/funnel-starter-options.webp" /> | <img width="760" height="429" alt="Desktop preview of a webinar registration funnel in OpenFunnels" src="public/ss/responsive-funnel-preview.webp" /> | | Form responses | Automation workflow builder | | --- | --- | | <img width="760" height="429" alt="OpenFunnels form response dashboard with lead details and filters" src="public/ss/form-responses.webp" /> | <img width="760" height="429" alt="OpenFunnels automation workflow builder with email, wait, and notification steps" src="public/ss/automation-workflow-builder.webp" /> | | Opportunities pipeline | Multi-platform funnel export | | --- | --- | | <img width="760" height="429" alt="OpenFunnels opportunities pipeline with configurable sales stages and forecast metrics" src="public/ss/opportunities-pipeline.webp" /> | <img width="760" height="429" alt="OpenFunnels export dialog generating funnel code for HTML, React, Vue, WordPress, Laravel, Shopify, and WooCommerce" src="public/ss/multi-platform-funnel-export.webp" /> | ## Quick Start With Docker The evaluation stack is the fastest way to try OpenFunnels. It requires Docker with Compose v2. ```bash git clone https://github.com/aialvi/openfunnels.git cd openfunnels docker compose up --build ``` Open [http://localhost:8000](http://localhost:8000) and select **Launch Demo**. You can also register a persistent local account. The stack includes the web application, queue worker, scheduler, compiled frontend, and a persistent SQLite volume. It is intended for local evaluation—not production—and does not configure TLS, a reverse proxy, or custom-domain infrastructure. ```bash # Follow service logs docker compose logs -f # Stop without deleting local data docker compose down # Remove the stack and its local data docker compose down --volumes ``` See the [Docker evaluation guide](docs/docker-evaluation.md) for more details. ## What You Can Build - **Funnels:** Create pages with a drag-and-drop section, column, and block editor; undo and redo changes; autosave; and preview responsive layouts. - **Templates:** Start from 15 categorized layouts or import and export versioned `.openfunnels.json` template packs. - **Forms and contacts:** Capture configurable and conditional fields, preserve every submission, collect UTM and referrer attribution, manage lead statuses and notes, and export filtered contact segments to CSV. - **Opportunities CRM:** Promote contacts into configurable sales pipelines, forecast deal value, track won/lost outcomes, and optionally create opportunities from individual funnels. - **Automation Studio:** Build versioned trigger-and-action workflows with waits, yes/no branches, CRM updates, email, secure webhooks, run timelines, retries, and starter recipes. - **Publishing:** Publish to slug-based URLs or verified custom domains, preview drafts, and unpublish without deleting content. - **Analytics and experiments:** Track privacy-conscious events, conversion trends, traffic sources, drop-off, and stable A/B variant assignments. - **Operations:** Send new-lead email notifications or webhooks, recover offline editor changes, and export to several web and commerce targets. - **AI-assisted drafts:** Optionally generate funnel drafts through a provider-neutral, Responses-compatible backend driver. - **Guest evaluation:** Run isolated, expiring demo accounts with outbound and administrative actions restricted. ## Local Development ### Requirements - PHP 8.3 or later, with the extensions required by Laravel - Composer 2 - Node.js 22 (the version used in CI and the Docker build) - pnpm 10.13.1 - SQLite ### Setup ```bash git clone https://github.com/aialvi/openfunnels.git cd openfunnels composer install corepack enable pnpm install cp .env.example .env php artisan key:generate touch database/database.sqlite php artisan migrate --seed ``` For local URL generation, set `APP_NAME=OpenFunnels` and `APP_URL=http://localhost:8000` in `.env`. Start Laravel, the queue listener, log tailing, and Vite together: ```bash composer run dev ``` Then visit [http://localhost:8000](http://localhost:8000). The seeded development account is: ```text Email: [email protected] Password: password ``` The seed account is for local development only. You can skip `--seed` and register your own account instead; with the default log mailer, email verification links are written to `storage/logs/laravel.log`. To run the application and frontend separately: ```bash php artisan serve pnpm run dev ``` ## Configuration The default `.env.example` uses SQLite, database-backed queues, sessions and cache, and the log mailer. These optional variables enable additional features: | Variable | Default | Purpose | | --------------------------------- | ----------------------- | ------------------------------------------------ | | `DOMAIN_MAPPING_CNAME_TARGET` | `cname.openfunnels.com` | Expected CNAME target during domain verification | | `DOMAIN_MAPPING_A_RECORD_IP` | empty | Optional accepted A-record address | | `FUNNEL_CUSTOM_DOMAIN_SCHEME` | `https` | Scheme used for verified custom-domain URLs | | `LEAD_CAPTURE_NOTIFICATION_EMAIL` | empty | Overrides the funnel owner's new-lead recipient | | `LEAD_CAPTURE_WEBHOOK_URL` | empty | Receives new-lead webhook payloads | | `AUTOMATION_QUEUE` | `default` | Queue used by Automation Studio jobs | | `AUTOMATION_RUN_RETENTION_DAYS` | `90` | Retention for detailed automation run logs | | `AUTOMATION_STALE_RUN_AFTER_MINUTES` | `5` | Reclaims interrupted running workflow steps | | `AUTOMATION_MAX_NODES` | `50` | Maximum steps in a published workflow | | `AUTOMATION_EVENT_DAILY_LIMIT` | `10000` | Per-owner automation event safety threshold | | `AUTOMATION_WEBHOOK_ALLOW_HTTP` | `false` | Allows non-TLS workflow webhook targets | | `FUNNEL_AI_DRIVER` | `disabled` | Enables a configured funnel-generation driver | | `FUNNEL_AI_ENDPOINT` | OpenAI Responses API | Responses-compatible generation endpoint | | `FUNNEL_AI_API_KEY` | empty | Server-side generation credential | | `FUNNEL_AI_MODEL` | `gpt-5.6-luna` | Model sent to the configured endpoint | | `FUNNEL_AI_TIMEOUT` | `45` | Generation request timeout in seconds | | `DEMO_MODE` | `false` | Enables the isolated guest sandbox | | `DEMO_LIFETIME_HOURS` | `24` | Lifetime of guest sandbox accounts | Do not commit `.env` or expose AI, mail, database, or webhook credentials to the browser. ## Development Commands | Command | Purpose | | -------------------------------- | ------------------------------------------------- | | `composer run dev` | Start Laravel, the queue listener, Pail, and Vite | | `composer test` | Clear cached config and run the PHP test suite | | `php artisan test --filter=Name` | Run a focused PHP test | | `vendor/bin/pint --test` | Check PHP formatting without changing files | | `vendor/bin/pint` | Format PHP files | | `pnpm run dev` | Start only the Vite development server | | `pnpm run build` | Build production frontend assets | | `pnpm run build:ssr` | Build browser and SSR assets | | `pnpm run test` | Run frontend unit tests with Vitest | | `pnpm run types` | Type-check TypeScript | | `pnpm run lint` | Check frontend lint rules | | `pnpm run lint:fix` | Fix frontend lint violations where possible | | `pnpm run format:check` | Check frontend formatting | | `pnpm run format` | Format files under `resources/` | Generated Vite assets in `public/build` should not be committed. ## Architecture At A Glance ```text React editor ──> canonical sections/columns/blocks JSON ──> draft preview └─────> published funnel Public form ───> contact ──> submission timeline ──> notification/webhook Public events ─> attribution and conversion data ──> dashboard/experiments ``` Key locations: ```text app/Http/Controllers/ HTTP behavior for funnels, contacts, leads, and analytics app/Models/ Eloquent models and funnel publishing helpers app/Policies/FunnelPolicy.php Authorization for user-owned funnels resources/js/pages/ Inertia pages, including the primary editor resources/js/components/editor/ Drag-and-drop editor UI resources/js/stores/funnelStore.ts Zustand + Immer editor state and history resources/js/types/editor.ts Canonical funnel editor types resources/js/lib/exporters/ Funnel export implementations routes/web.php Public, authenticated, and custom-domain routes tests/ Pest feature/unit tests and Vitest frontend tests ``` ## Documentation - [Contributing](CONTRIBUTING.md): setup, architecture boundaries, pull-request expectations, and verification. - [Self-hosting](docs/self-hosting.md): production services, deployment, workers, health checks, backups, and custom domains. - [Template format](docs/template-format.md): portable community template schema and contribution workflow. - [Product roadmap](Roadmap.md): completed foundation, current priorities, and longer-term tracks. - [Design direction](DESIGN.md): UI principles and visual language. - [MVP funnel and CRM PRD](docs/prds/mvp-funnel-crm.md): core funnel, form, and contact behavior. - [Domain mapping PRD](docs/prds/domain-mapping.md): custom-domain requirements and boundaries. - [Agent guide](AGENTS.md): repository conventions for AI-assisted contributions. ## Contributing And Support Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) and keep changes focused, tested, and documented. - Report bugs through [GitHub Issues](https://github.com/aialvi/openfunnels/issues). - Ask questions and discuss ideas in [GitHub Discussions](https://github.com/aialvi/openfunnels/discussions). - Report security vulnerabilities privately through [GitHub Security Advisories](https://github.com/aialvi/openfunnels/security/advisories/new) and review [SECURITY.md](SECURITY.md). OpenFunnels is released under the [MIT License](LICENSE). If OpenFunnels is useful to you, you can [support its continued development](https://www.buymeacoffee.com/aialvi).
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

sage
WordPress starter theme with Laravel Blade components and templates, Tailwind CSS, and block editor support
Laravel · 启动器

wave
Wave - The Software as a Service Starter Kit, designed to help you build the SAAS of your dreams 🚀 💰
Laravel · SaaS

filament-starter
A beautiful starting point for your next TALL stack project using Filament. ⚡
Laravel · 启动器

electrik
Laravel SaaS starter kit: auth, teams, Stripe billing, and Slate 3 — Composer package for Laravel 12
Laravel · SaaS

php-saas
The everything-included starter kit for your next idea
Laravel · SaaS

filament-jetstream
A Laravel starter kit built with Filament inspired by Jetstream.
Laravel · 启动器
