StarFunnel is an open-source Astro-powered landing page builder that pairs Static CMS with Mailchimp, Mailgun, Postmark, and Slack integrations for sales-funnel sites.
What is StarFunnel?
StarFunnel is a landing page and blog starter theme built with Astro, MDX, Vue, and TailwindCSS. It runs on Netlify or Vercel through their adapters, outputs a hybrid-rendered site, and manages content through Static CMS. The project is maintained by unfolding.io, licensed under CC BY-ND 4.0, and has 163 stars on GitHub.
The template takes environment variables for Mailchimp (API key, server prefix, list ID), Mailgun (domain, API key, API URL), Postmark (server token), and Slack (channel ID, token), plus site settings such as BLOG_SLUG, WEBSITE_LANGUAGE, CURRENCY, and NODE_VERSION. It produces a landing page with newsletter signup, a contact form, and a blog.
Key Features
- Static CMS integration — An admin interface at /admin/ is configured in src/pages/admin.astro, with support for GitLab, GitLab PKCE, and other Git backends listed in the Static CMS docs.
- Mailchimp newsletter — Add email capture to your landing page by setting MAILCHIMP_API_KEY, MAILCHIMP_SERVER_PREFIX, and MAILCHIMP_LIST_ID in your .env file.
- Flexible form delivery — Incoming contact form submissions can be routed to Mailgun, Postmark, or a Slack channel using the corresponding environment variables.
- Hybrid output mode — The Astro config sets output to "hybrid", allowing static pages with dynamic server-rendered sections in one build.
- One-click deploy targets — Swap the adapter between vercel() and netlify() and deploy to either platform from the same codebase.
- Local CMS proxy — Run npm run cms-proxy-server to engage a local backend for Static CMS while developing.
- Tech stack — Built on Astro, MDX, Vue, and TailwindCSS with a single npm install setup.
Who should use StarFunnel?
- Indie hackers and solopreneurs — Launch a landing page with a built-in blog and email capture without configuring a separate CMS backend.
- Developers who want a Git-backed CMS — Use Static CMS to manage content in your repository, with support for GitLab and other Git providers.
- Marketing teams deploying to Netlify or Vercel — Edit content through the /admin/ interface while the site is hosted on modern JAMstack platforms.
What can you do with StarFunnel?
- Sales funnel sites: Publish a landing page with newsletter signup and a blog, all driven by configurable environment variables.
- Client contact forms: Route submissions from your site to Slack channels, Mailgun, or Postmark without building custom endpoints.
- Multilingual landing pages: Set WEBSITE_LANGUAGE, CURRENCY, and BLOG_SLUG to tailor the site to different audiences.
- Git-based content editing: Edit blog posts and pages in Static CMS and commit them straight to your repository.
How does StarFunnel work?
Setup follows the README's five steps: rename env.txt to .env and fill in integration keys, configure your Git backend in src/pages/admin.astro, set the site URL and adapter in astro.config, then run npm install and npm run dev. For local CMS editing, start the proxy server with npm run cms-proxy-server and open localhost:4321/admin/.
FAQ
How do I deploy StarFunnel?
Deploy to Netlify or Vercel by setting the matching adapter in astro.config (vercel() or netlify()), adding your .env variables to the platform, and importing the repository. The README includes deploy instructions for both hosts.
Which Git backends work with Static CMS?
The README provides a GitLab example using PKCE authentication and an application ID, and points to the Static CMS backends overview for the full list of supported Git providers.
How do I run the CMS locally?
After npm install, run npm run cms-proxy-server and open http://localhost:4321/admin/. The proxy enables local editing with Static CMS using the repository's local backend.
What email services does StarFunnel integrate?
Mailchimp handles newsletter subscriptions; Mailgun and Postmark handle form-to-email delivery; Slack can receive form notifications via a channel ID and token. All are configured through the .env file.




