LaravelReactStarter

openfunnels — Laravel Starter Template

By aialvi

OpenFunnels is a self-hosted, open-source funnel builder built on Laravel and React, offering a visual drag-and-drop editor, forms and contact management, a lightweight CRM, automation workflows, and custom domain publishing.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

1 previews
Author preview
Author-provided preview

Preview provided in the project README.

One original preview is available. Open the full image to inspect the design.

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-01View source

What stands out

A quick read of the recorded project description.

01

Visual drag-and-drop editor: build pages with a section, column, block structure, with undo/redo, autosave, and responsive preview

02

Lead capture and contact management: configurable conditional fields, retention of every submission, UTM and source attribution, and CSV export with filters

03

Lightweight CRM: move contacts through configurable sales pipelines, forecast deal amounts, and track won/lost outcomes

04

Automation workflows: versioned triggers and actions, supporting waits, yes/no branches, CRM updates, emails, secure webhooks, run timelines, and retries

05

Publishing and domains: publish to a slug path or a verified custom domain, with draft preview and unpublishing without deleting content

06

Analytics and experiments: privacy-focused event tracking, conversion trends, traffic sources, drop-off points, and stable A/B variant assignment

Template Details

OpenFunnels is a self-hosted, open-source (MIT) funnel-building and lightweight CRM application for creating, publishing, and improving lead-capture flows while keeping customer data on your own servers. The project is built with Laravel, Inertia, React, and TypeScript, and the repository provides a Docker Compose evaluation stack that quickly starts a complete local environment including the web app, queue worker, scheduler, and a persistent SQLite volume.

Features cover funnel page building, lead-capture forms, contact records, opportunity pipelines, automation workflows, publishing and custom domains, attribution analytics, A/B experiments, and optional AI-assisted drafts. The editor uses a JSON structure of sections/columns/blocks as canonical data, supports undo/redo, autosave, and responsive preview; form submissions retain a timeline and record UTM and source attribution; automation supports steps such as waits, branches, CRM updates, emails, and webhooks, with run logs and retries.

There are clear scope limitations: the Docker evaluation stack is for local evaluation, not production, and does not configure TLS, a reverse proxy, or custom domain infrastructure; local development requires PHP 8.3+, Composer 2, Node.js 22, pnpm 10.13.1, and SQLite; seeded accounts are for local development only. Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses, and external services such as domains, hosting, databases, payments, or AI may incur separate charges.

LaravelReactStarter

Is it right for your project?

Use Cases

  • Build and publish lead-capture funnels, such as webinar registration or product trial signup pages
  • Collect leads with forms and centrally manage contact status, notes, and source attribution
  • Use automation workflows to send emails, update the CRM, or trigger webhooks when new leads arrive
  • Run A/B experiments across multiple funnels to compare conversion trends and drop-off points
  • Export funnels to targets such as HTML, React, Vue, WordPress, Laravel, Shopify, or WooCommerce

Suitable For

  • Teams that want to self-host funnels and lead data and require data control
  • Marketing or growth teams that need visual page editing paired with a lightweight CRM
  • Technical teams familiar with Laravel and React that are willing to deploy and maintain it themselves
  • Developers who want to build on or integrate with the MIT-licensed code

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    The Docker evaluation stack requires Docker and Compose v2; run docker compose up --build, then visit http://localhost:8000 and select Launch Demo

  2. 2

    Local development requires PHP 8.3+ (with the extensions Laravel needs), Composer 2, Node.js 22, pnpm 10.13.1, and SQLite

  3. 3

    Local setup steps: composer install, corepack enable, pnpm install, copy .env.example to .env, generate a key, create the SQLite file, and run migrate --seed

  4. 4

    The seeded development account is [email protected] / password, for local development only; the default log mail driver writes verification links to storage/logs/laravel.log

  5. 5

    Capabilities such as custom domains, lead notifications, webhooks, automation queues, and AI generation are enabled via optional variables in .env; AI, email, database, and webhook credentials should not be exposed to the browser

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version under the MIT license in the public repository; the free scope is that version's code and does not mean external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute this version's code for free.
  • When distributing copies or substantial portions of the code, retain the original copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and liability limitations are governed by the original license and applicable law.

Additional costs & items to verify

  • The Docker evaluation stack is for local evaluation only, not production, and does not configure TLS, a reverse proxy, or custom domain infrastructure.
  • The seeded account [email protected] / password is for local development only and must not be used in production.
  • Do not commit the .env file, and do not expose AI, email, database, or webhook credentials to the browser.
  • AI-assisted drafts are off by default; you must configure the driver, endpoint, and API key yourself, which may involve external service fees.
  • AI generation requires a server-side API key, which is an external service credential and may incur additional charges.
  • The guest demo sandbox is off by default, must be explicitly enabled via DEMO_MODE, and demo accounts expire.
  • Guest demo accounts are isolated from each other and expire, and their outbound and admin operations are restricted.
  • Automation webhooks allow only TLS targets by default; enabling non-TLS targets requires explicitly changing the configuration.
  • Generated Vite assets in public/build should not be committed to the repository.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone does not determine this.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

It is intended for local evaluation—not production—and does not configure TLS, a reverse proxy, or custom-domain infrastructure.

Original README

The seed account is for local development only.

Original README

Do not commit `.env` or expose AI, mail, database, or webhook credentials to the browser.

Original README

`FUNNEL_AI_DRIVER` | `disabled` | Enables a configured funnel-generation driver

Original README

`FUNNEL_AI_API_KEY` | empty | Server-side generation credential

Original README

`DEMO_MODE` | `false` | Enables the isolated guest sandbox

Original README

Run isolated, expiring demo accounts with outbound and administrative actions restricted.

Original README

`AUTOMATION_WEBHOOK_ALLOW_HTTP` | `false` | Allows non-TLS workflow webhook targets

Original README

Generated Vite assets in `public/build` should not be committed.

Original README
https://github.com/aialvi/openfunnels/blob/main/LICENSEhttps://github.com/aialvi/openfunnels/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 80 / 100
Technologies
Laravel · React
Website type
Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-29
Screenshot last checked
2026-10-01

No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.

The catalog identifies Laravel as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 57358f8d7147796b9606c43987c181f2e47bdf7e5b73718de0e47abfc6c36e73

2026-10-01T02:20:23.603Z

Source file / repository
# OpenFunnels

[![Tests](https://github.com/aialvi/openfunnels/actions/workflows/tests.yml/badge.svg)](https://github.com/aialvi/openfunnels/actions/workflows/tests.yml)
[![Quality](https://github.com/aialvi/openfunnels/actions/workflows/lint.yml/badge.svg)](https://github.com/aialvi/openfunnels/actions/workflows/lint.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-orange.svg)](LICENSE)
[![PHP 8.3+](https://img.shields.io/badge/PHP-8.3%2B-777BB4.svg)](composer.json)
[![React 19](https://img.shields.io/badge/React-19-61DAFB.svg)](package.json)
[![Docker](https://img.shields.io/badge/Docker-ready-2496ED.svg)](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).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.