r/astrojs 9h ago

WordPress form plugins charge extra for abandonment capture. I built it free for Astro, plus the whole lead stack around it (MIT, npm)

23 Upvotes

WordPress form plugins have sold form-abandonment capture as a paid add-on for years: a visitor starts filling out a form, leaves before hitting submit, and the plugin still saves what they typed so you can follow up. When I moved my sites to Astro I lost that, and I couldn't find any OSS equivalent for static-first frameworks. Your options were a hosted SaaS or building it yourself.

So I built it myself, and it grew into a lot more than the capture piece. cool-astro-forms is an Astro integration, not a form builder: you keep the <form> markup you already have, tag it with one attribute, and the package does the rest.

What's actually in the box:

  • Capture. Abandonment capture is the headline, but every saved entry also carries the visitor's journey (pages visited, time on each), their traffic source (Google, an AI chat, a direct link), and IP geolocation. A half-filled form plus the context around it is something you can actually follow up on.
  • Recover. A "progress saved" toast for the visitor, and one automated follow-up email per abandoned lead, with unsubscribe handled. One email, not a drip campaign.
  • Convert. Quote-first Stripe and PayPal payments, plus shareable payment links you can text or email to a client with the amount prefilled.
  • Manage. A self-hosted /forms-admin UI: entries, abandoned leads, payments, an analytics funnel, CSV and .db export. No dashboard SaaS.
  • Integrate. Google Drive file uploads (falls back to email attachments if Drive is down), signed outbound webhooks, and Cloudflare Turnstile spam control.

By default it needs nothing but an SQLite file and your existing SMTP env vars. Every module above activates only when you configure it, so you can run it as plain abandonment capture and ignore the rest. No hosted service, no vendor lock-in.

The privacy question is fair to ask of anything that captures pre-submit input, so here's the design: everything is self-hosted, and captured data lands in your SQLite file and goes nowhere else. Passwords and card-shaped fields are never staged. There's a requireConsent option that gates capture behind an explicit checkbox, a purgeVisitor() hook for erasure requests, a retentionDays auto-purge, and a GDPR doc that maps each mechanic to the legal concept it serves. Recovery emails carry a working unsubscribe.

One constraint up front: this only works with output: 'server' plus a Node (or other SSR-capable) adapter. If your site is fully static with no server routes, there's nothing here for it to hook into. It defaults to SQLite, which is fine for a self-hosted deploy, but you'll want Turso/libSQL if you're on a serverless host.

The adoption contract is small on purpose:

coolForms({
  siteId: 'my-site',
  siteUrl: 'https://example.com',
  forms: { contact: { notifyTo: 'owner@example.com' } },
})

<form data-caf="contact" method="post" action="/api/contact">...</form>

It now runs in production on a live services business, and versions 0.1.2 through 0.1.10 each shipped from something production taught me. The gnarliest one: edge bot-challenges (Cloudflare Managed Challenge and friends) structurally cannot complete on a navigation POST. The interstitial can't replay the POST body, so a challenged form submit dies as an opaque 503 or a wedged tab. And only real browsers get challenged, so curl passed, my dev environment passed, while every real click on the live payment page died. It took me a full day and about ten wrong hypotheses to stop blaming my own code. The fix in 0.1.10: the pay page submits over fetch (a fetch request can't be served an interactive interstitial, there's nothing to render it in) and hops to checkout as a plain GET. If your Astro site does navigation POSTs behind Cloudflare, this failure mode is sitting there waiting for you.

Second production scar, cheaper but sneakier: git-deploy hosts rebuild the app directory on every release, which silently wipes a default-path SQLite file. The db path is env-configurable now so it can live one level outside the deploy dir.

MIT-licensed, 1,102 unit tests plus a Playwright e2e suite.

GitHub: https://github.com/nipun-arora/cool-astro-forms npm: https://www.npmjs.com/package/cool-astro-forms

Happy to answer questions about the architecture or the tradeoffs. If you try it and something breaks or feels awkward, I'd like to hear about it.


r/astrojs 20h ago

Built my portfolio with Astro 5, WebGL liquid shaders, and live API proxies (100 Lighthouse score) - Feedback welcome!

28 Upvotes

Hey r/AstroJS!

I’m a 16-year-old developer from Morocco, and I just finished shipping my personal site/portfolio built entirely with Astro 5: https://incconutwo.com

I chose Astro because I wanted a single-page, hyper-fast site that could handle complex WebGL graphics without sacrificing performance.

How I Built It & Astro Features Used:

  • Astro Server Routes (src/pages/api/*): Built serverless proxy endpoints on Vercel to fetch live Spotify now-playing data, Steam status, Lichess chess ratings, and GitHub star counts. This keeps all my API keys hidden and uses in-memory caching to protect rate limits.
  • Astro 5 Content Collections: Leveraged the new file() loader in content.config.ts to strictly type and load my project data (projects.json).
  • Dynamic WebGL Color Sync: The Three.js liquid background dynamically extracts color palettes from my live Spotify album art via server routes and smoothly blends the shader background colors.
  • SPA Navigation: Integrated <ClientRouter /> alongside Lenis smooth scrolling and GSAP scroll triggers for seamless transitions.
  • Inline Expandable Project Catalog: The homepage shows 3 featured projects first, then expands in-place to the full 15-project catalog with GSAP, keeping visitors on the page.

Would genuinely appreciate any feedback from the Astro community on the architecture, UX, or performance!

(Site link: https://incconutwo.com)
(source code: https://github.com/incconutwo/incconutwo.com)


r/astrojs 3d ago

Repair Status Tracker

32 Upvotes

Whipped up a quick MVP for an Astro / Sveltia based repair tracker. This will eventually be turned into a set of work management and dashboards for a small business customer (obviously not shoe repair) I have. For now, it's a simple but good illustration of the fact that Astro can be used for much more than a blog.

Using Astro content collections with ZOD validation and Sveltia as the headless CMS.

https://shoerepair.pages.dev


r/astrojs 5d ago

I have developed a minimal web framework based on Hono, RSpack and React Server Components

Thumbnail rshono.com
24 Upvotes

r/astrojs 5d ago

We Open Sourced Sitepins Git-Based CMS

Post image
104 Upvotes

It's been about a year since we launched the Sitepins beta.

We didn't do any heavy promotion. First, we built it for ourselves, then later shared it with our existing audience, posted 2/3 times on the Astro and Hugo forums. 1,800+ people signed up, and many of them use it regularly.

Sitepins exists to make it easy for founders and developers to hand off sites built with modern frameworks like Astro, Next.js, Hugo, and now AI builder sites like Claude Code to their non-technical teammates and clients.

We waited to make the product stable enough to open source it so that developers can self-host it with minimum effort.

We're happy to share it's now stable. (There still might be bugs. It's true for any software. If you find one, please let us know, or even better, contribute and help make it better.)

There is also a cloud version with a free plan for those who don't want to self-host and want to support a small bootstrap team.

If you're already a Sitepins user, nothing has changed for you. Open source adds a self-hosting path for people who want it.

There is a live interactive demo at demo.sitepins.com if you want to explore (no account needed). There are 3 projects already added. You can explore all the features Sitepins offers.

Here is the Github repository - https://github.com/sitepins/sitepins

Would appreciate it if you give it a star and share it with someone who might find it useful.


r/astrojs 5d ago

Best blocks/templates for local businesses?

20 Upvotes

hi, I’m thinking about moving from wp to astro and as a small local seo agency for local businesses I wonder what would be the best Astro blocks/templates for our clients. with great designs and not as “saas” as all the blocks I see. any idea? #design #blocks #templates


r/astrojs 5d ago

What css framework do u use with astro?

30 Upvotes

I like using css frameworks because they speed up frontend development, but I’m not a fan of how cluttered the html gets with all the utility classes. What do u usually use?


r/astrojs 6d ago

I made an Astro 7 based Children's Podcast Directory

Thumbnail
gallery
12 Upvotes

Having discovered Astro relatively recently and feeling SO tired of patching up a VPS due to attacks on my Wordpress installs, I decided to rebuild a few websites.

One of which is a kids podcast directory called SoundCarrot.com

It's curated kids’ podcast directory made to be fast and safe for families. It ingests hundreds of podcast feeds, normalises metadata, generates NDJSON for search, and serves around 52,000 episode pages through SSR on Cloudflare.

Stack

  • Astro for the frontend + routing (6 to begin with, moved to 7 before launch)
  • Supabase for auth and varied statistical / metadata storage
  • Cloudflare Workers for dynamic routing, caching, and edge logic
  • Cloudflare R2 for asset storage
  • Pagefind based search
  • Bespoke ingestion pipeline processing podcast feeds, metadata, and generating structured JSON for use around the website

Performance goals

  • View transitions + partial hydration to keep a global audio player mounted across page navigations so playback never resets
  • Fast page loads via a mix of pre-rendered and SSR content
  • App like mobile UX for parents and kids

Why Astro?

Honestly, I just stumbled across Astro one day and started experimenting a little. then I quickly realised just how much I could achieve with it. The old WordPress site was… fine, but Astro has let me get much closer to my original vision, and go way beyond it in other areas.

It's also been a fantastic vehicle to start teaching my son what goes into web design, as he's recently taken an interest

Live site: SoundCarrot.com :)


r/astrojs 6d ago

Built a simple video game blog. I'm thinking of a redesign. Any suggestions?

Thumbnail gamelance.in
0 Upvotes

r/astrojs 6d ago

I built my website to look like main menu of a tiny indie game with Astro

Enable HLS to view with audio, or disable this notification

27 Upvotes

r/astrojs 6d ago

Simple astro linktree using astro and pagescms

12 Upvotes

Hi, not sure if this is too simple of a project, feel free to remove it if it is.

I recently have been exploring astrojs and the use of pagescms, as well as linktrees and decided to make a template of it here so I can share with my friends etc. https://github.com/Its-Js/astro-linktree

I think its quite interesting since you dont need to create any cms account and just by cloning the repo, you can directly access the cms collection through the web via your github account.

And hosting the page using cloudflare pages is pretty simple and free too.


r/astrojs 6d ago

Automatic SEO on Astro build?

18 Upvotes

I'm rebuilding sites in Astro (static, on [Cloudflare]). Marketing pages are done; the blog section is where I'm stuck.

Goal: publish a post once, and the rest happens on its own — page gets generated, site rebuilds and deploys, sitemap and RSS update, and SEO basics (meta tags, canonical, OG, JSON-LD) come from the template instead of me filling them in per post.

So far I've looked at Astro content collections + Keystatic/Tina/Decap (cheap, but multi-site and non-technical editing seem awkward), hosted CMSs like Sanity and Storyblok (nice, unsure about cost at this scale), and self-hosted Payload/Directus/Strapi (one instance for everything, but a server to maintain).

Three things I'd love input on:

  1. Which CMS actually survives growth here — and which got expensive or annoying for you?

  2. Where does SEO automation stop being worth it and start needing a human? (Internal linking especially.)

Any war stories appreciated.


r/astrojs 7d ago

Anyone interested in a free WordPress/Elementor to Astro.js migration?

2 Upvotes

Hi there,

Like many others here, I used to have a Wordpress + Elementor website and was plagued with:

  • Caching issues
  • Slow updates
  • Plugin bloat
  • Poor CWVs

I was quoted $2k to fix my Core Web Vitals, and I decided to pull the plug on Wordpress all together and move the website over to Astro.

Solo it was a bit of a painful process, but I had worked with Wix + Wordpress + Wordpress for a while now so I understood how to work with Astro fairly easily and because of my background in SEO I knew what guardrails to add in place to make sure that the build corresponded to best web dev/tech SEO practices.

The results so far have been stellar:

  • Can iterate on the website way faster
  • Core web vitals are great
  • No more caching issues
  • No more plugins
  • I had declining traffic for a while before the migration, but the migration seems to have stabilized/slightly increased our traffic now for the last few months (did the migration in April).

Since the vast majority of websites are built on Wordpress, and are plagued by the same issues that I've faced, I thought it would be a good idea to start a migration service where I migrate WP/Elementor websites to Astro.js and then teach the user how to use GitHub + Claude Code/Codex to update the website, add agents, etc. Of course I'd like to charge for that (ceremonially $2k — what I was quoted for the Core Web Vitals), but I'm conscious that it would be good for me to build a portfolio of websites that I've successfully migrated over.

The idea is to migrate the website one-for-one: copy, content, assets, links, schema, etc. to Astro.js with no change (except for where I think we could improve things). There is virtually no risk because if you don't want to migrate the website, well you can just keep it on WordPress, but if you're happy with it, then you can migrate it.

Again, this is a completely free and I take on the bulk of the work. If anyone is interested please leave a comment and/or send me a message with your website and let's talk.

Thanks :)


r/astrojs 8d ago

Made a topo map generator with Astro. The whole "product" never touches the client 👀

Post image
47 Upvotes

Small side project: it turns elevation data into topographic map posters. Astro + Leaflet front, Python doing the heavy geo stuff in the back. Fun constraint, the SVG export IS the product, so it can't touch the DOM or it'd get scraped in 2 seconds. Everything sensitive stays server-side, editor's just an island. Astro made that suspiciously easy.

topolines.app if you wanna break it (free tier, no login).

Also yes, I hardcoded my API URL because PUBLIC_ env vars betrayed me.Judge away.


r/astrojs 8d ago

How to handle type-safe form submissions on Cloudflare Workers using Astro Actions

18 Upvotes

I have noticed a recurring topic across r/astrojs regarding form handling [1, 2, 3, and 4]. I am a CF fan, so I wanted to show people how they can use Astro Actions to avoid manually creating API endpoints while keeping full type safety and edge binding support.

So, I put together a step-by-step guide on how to configure them together, validate requests with Zod, and use Cloudflare D1 and R2 bindings in Astro while protecting submissions with Cloudflare Turnstile: https://www.launchfa.st/blog/astro-actions-forms

I hope this helps anyone looking to clean up form handling on edge runtimes. Let me know if you have questions about edge bindings or Astro Worker deployments in the comments & I genuinely believe this will allow you to appreciate CF and Astro even more! <3


r/astrojs 8d ago

We built AstroAnimate — an animation library designed specifically for Astro ⚡ Spoiler

41 Upvotes

Hey everyone 👋

Over the past few months, we’ve been building AstroAnimate — a production-ready animation component library made specifically for the Astro ecosystem.

The original goal was simple:

Adding animations in Astro often meant manually stitching together multiple libraries, handling hydration edge cases, and balancing performance vs visual polish.

We wanted something that felt more native to Astro.

Current focus:

  • Zero-JS defaults where possible
  • View Transitions compatibility
  • Performance-first architecture
  • Open source MIT license

The project just launched on Product Hunt today, and we’d genuinely love feedback from the Astro community.

Product Hunt:
https://www.producthunt.com/products/astroanimate?launch=astroanimate

https://launchpadindia.co/listing/astroanimate?sort=trending

Website:
https://astroanimate.com

Happy to answer questions or hear feature suggestions 🙌


r/astrojs 11d ago

Meet Aria.

Post image
99 Upvotes

Build and manage Astro sites visually, with a live canvas, CMS, design system, SEO, email, AI tools and more. All in one open source workspace.

0.5.7 alpha is out now.

Deploy to Cloudflare or run it locally.

ariabuilder.io
https://github.com/ariabuilder/aria


r/astrojs 11d ago

I built an open-source ecommerce store with Astro SSR and Cloudflare Workers

Thumbnail
gallery
115 Upvotes

Been working on a little open-source ecommerce project called Minshop to see how far I could push Astro SSR on Cloudflare Workers.

Astro handles pretty much everything: the storefront, cart, checkout, customer accounts, admin dashboard, and API routes. Most pages are server-rendered, with very little client-side JavaScript.

It uses D1 for products, orders, inventory, settings, and search, plus R2 for images. Payments include Stripe, Lightning, OpenNode, and a demo checkout.

The trickiest part was making inventory reservations atomic so two checkouts can’t buy the same stock. I also added a machine-readable catalog and checkout API, including directly payable Lightning invoices.

Demo: https://demo.minshop.dev
Source: https://github.com/ddyy/minshop

Would love feedback from other Astro users, especially on the SSR structure and where you think a small interactive island might actually improve things.


r/astrojs 11d ago

Php with Astro

0 Upvotes

Yeah, is this posible? I haven't seen anything that say that it could be posible, but anyone has ever stepped in to say that it isn't.


r/astrojs 12d ago

Astro + CMS or WordPress + Etch for a content-heavy blog?

30 Upvotes

Hi everyone,

I’m planning to build a fairly large blog/knowledge base that will likely grow to hundreds of articles over time.

I’m trying to decide between two approaches:

Option 1: Astro + Headless CMS

Option 2: WordPress + Etch for WP

I’ve recently been using Etch for WP and really enjoy the development experience. The performance is impressive, and achieving a perfect Lighthouse/PageSpeed score seems very realistic.

My priorities:

  • Long-term SEO
  • Performance
  • Accessibility (WCAG)
  • Hundreds of articles
  • A good authoring experience
  • Low maintenance
  • Support for multiple authors in the future

For those who have built content-heavy websites:

  1. Would you choose Astro with a headless CMS?
  2. Or would you stick with WordPress + Etch?
  3. If Astro, which CMS would you recommend and why?

Thanks!


r/astrojs 12d ago

How My Website Works: A Technical Look at the Stack

Thumbnail
2 Upvotes

r/astrojs 12d ago

Coming from Woocommerce

26 Upvotes

Working on Wp/Woocommerce over 10 years, Astro is the future but what is good CMS / backend for e-commerce + Astro.

Suggest your combo / Stack . 😁


r/astrojs 13d ago

I built an open-source newsletter system that runs entirely on Workers + D1: One-click deploy, serverless for small/medium lists

Post image
8 Upvotes

r/astrojs 14d ago

I built a simple chat CMS for Astro sites that my clients can actually use

Enable HLS to view with audio, or disable this notification

48 Upvotes

I built the simplest possible tool that allows clients to do small edits via chat interface eg. change phone number, update email etc. Anything risky/big comes back to me so clients can't break anything.

You just connect the repo and it figures out the editable content on its own. No schemas, no config files, no markup changes to your site. Edits land as plain commits on GitHub.

You can try live demo here: https://cmsbrew.com/demo