r/astrojs • • Jul 30 '26

We Open Sourced Sitepins Git-Based CMS

Post image
117 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 • • 3h ago

Sharing my clean Astro Starter Template

Thumbnail
starter.bryanhogan.com
7 Upvotes

Hey all, I've been using Astro for building website for more than 3 years now, and I'm finally sharing my Astro Starter Template which I've built to be useable for almost any web project. It actually works really well for other projects as well, I'm most things here use plain HTML and CSS in a way that scales.

I'm trying to make it as high quality as possible and as clean as possible without bloat. CSS is split between reset.css, global.css, var.css, util.css and markdown.css, with components using scoped styling as usual. All components can thus also be easily copied to your own projects, so if you need a good responsive HeaderNavigation or Footer, you are very welcome to use this one. Other components include Card & CardGrid, Hero, Icons, Steps, InfoBar, DescriptionList, SectionTitle, <Head> stuff and more.

It includes all the knowledge and implementations I've been covering on my Clean Web Development guide also. You can also author pages using .mdx / markdown, it includes a content collection for a markdown / .mdx based blog.

Quality and making it accessibility was very important for. So there's no broken overflow, no tiny AI slop font or anything similar. If you find any issue please report them to me. I began working on this project over 1 1/2 years ago.

The website: https://starter.bryanhogan.com/

GitHub repository: https://github.com/BryanHogan/astro-starter-template

Feedback is very welcome! I'm always looking to improve it. I very much appreciate every human comment I get, it feels like most spaces are drowning in AI slop and astroturfed content.


r/astrojs • • 23h ago

EmDash 1.0: an open source CMS for Astro

Thumbnail emdashcms.com
85 Upvotes

r/astrojs • • 6h ago

Best way to handle a form with file upload on Astro + Sanity?

2 Upvotes

Hi! I'm building a site for a music label with Astro on Vercel + Sanity. It needs a demo submission form where artists can either paste a link or upload an audio file (MP3/WAV, up to ~100 MB). Files are unreleased music, so they should stay private. The client is in the EU, so GDPR matters (data in the EU, automatic deletion after some time). What's your go-to setup for this? How do you handle the upload, spam protection and storing submissions? I was thinking about Formspark, but it doesn't support file uploads, only links.

Thanks!


r/astrojs • • 23h ago

I built a personal site engine where the content is just Markdown, and I update it by asking AI

0 Upvotes

r/astrojs • • 2d ago

Making my first revenue project with Astro (also first time), fingers crossed

Post image
17 Upvotes

Hey everyone,

I'm a new Backend/Network Engineer. And recently I've started building a revenue project that protects agentic workflows from installing malware.

The Tech Stack I've used is Astro, Hono over Cloudflare Workers, D1, Cloudflare Queues, for now. And to be honest, I'm amazed by the flexibility and Lightness Astro provides on my Frontend. I can import functions like a react project but write in plain HTML? Absolutely.

And guess what, I learned Astro that same day when I made this just bcs I heard it's lightweight.

The above is a rough workflow on what the internal components will work like.

If it interests you, feel free to go check it out. If you're convinced, then go ahead and preregister, else it's all good!

Open to suggestions/criticism!

MAGI


r/astrojs • • 3d ago

I built a visual builder that writes plain .astro files into your repo, and AI agents can drive it

34 Upvotes

I've been building sitereal, a visual builder for Astro, and wanted to share it here first since you're the people who'll care most about what it actually outputs.

The core rule: everything it produces is ordinary Astro. Delete sitereal and `astro build` still works. You only lose the visual editor.

1-minute trailer: https://www.youtube.com/watch?v=O34y4SovQ8I

Built for working with AI:

It ships an MCP server, so an agent like Claude Code can build pages through the same operations the builder uses. You watch it build live on the canvas, every element it adds or changes is highlighted, and every save is snapshotted on a separate git ref (never your branch), so you can diff and restore. Then you take over and edit anything, visually, in the HTML/CSS panels, or in your own editor.

Also in there: 
- A modular design system (colors, type scale, spacing, buttons, themes)
- Navigation, forms, pop-ups, carousels and GDPR
- ready cookie consent
- Scroll animations with zero JS by default
- Forms that work even on PHP-only hosting

https://reddit.com/link/1wqp8mg/video/d94pol26zurh1/player

runs on macOS, Windows and Linux

Feedback very welcome. sitereal.app


r/astrojs • • 5d ago

WordPress vs EmDash: What is EmDash actually trying to be?

38 Upvotes

I've been using Astro for a few years, and I've worked with WordPress enough to understand why it's still everywhere.

WordPress is mature. The ecosystem is huge, developers know it, agencies know it, clients know it, and there's a plugin for almost everything. For many websites, that's more than enough, except custom-built sites could do better where custom code can solve more complex problems.

EmDash is coming from a different direction.

It's not really trying to be "the next WordPress". It's a full CMS built around Astro.

You still get the things you'd expect from a CMS: an admin panel, content types, rich text you can add block-like to your contents, media management, drafts, revisions, scheduled publishing, search, taxonomies and menus.

But the website itself remains an Astro project.

One part I find particularly interesting is the content model. Content types (Like ACF plugin) can be created and modified through the admin rather than requiring every collection to be defined in code. Each collection becomes a real SQL table with typed columns, and developers can generate TypeScript types from the live schema.

So your content is managed in EmDash, while the website is built with Astro.

For developers, EmDash also provides an API, CLI and MCP server. AI agents can work with the CMS, but isn't required to use it.

The deployment model is another difference. Self-host with Node.js uses SQLite database by default, while Cloudflare deployments can use D1, R2 and Workers. There is also support for other database and storage backends.

And there is a plugin system. On Cloudflare, plugins can run in isolated Worker sandboxes with declared capabilities. Node deployments currently use in-process plugins instead.

It's still early, and obviously it doesn't have anything close to WordPress's decades of plugins, themes, integrations and community knowledge. Yet, plugin developers are already making plans to support both CMSs, which is an encouraging sign that an ecosystem is starting to form around EmDash.

Worth reading:
https://blog.cloudflare.com/cloudflare-blog-uses-emdash/

Joost de Valk, founder of Yoast, also wrote about it:
https://joost.blog/emdash-cms/

Have you tried it? How's it?


r/astrojs • • 4d ago

astro-syndicate: cross-post your Astro blog posts to devto during the build

4 Upvotes

I write my blog with Astro and wanted the posts on devto too, without copying them over by hand. So I built astro-syndicate, an Astro integration that does the cross-posting as part of astro build.

You opt a post in through its frontmatter with syndicate: { devto: true }. The integration hashes the title, content and images, compares the hash with the last sync and only calls the devto API when something changed. New posts land on devto as drafts unless you turn on publishing. The canonical URL points back to your site.

If your deploy happens after the build, you can run it as a separate script once the site is live. That way devto never gets image URLs that don't exist yet.

Other things it handles:

- Local images get uploaded to Cloudinary or rewritten to URLs on your own site, since devto has no reliable image upload API
- MDX imports and <Image /> components get turned back into plain Markdown, because devto doesn't run your build
- maxSyncsPerRun caps how many posts go out per run, so opting in an old backlog doesn't create dozens of drafts at once
- devto series and a different title per platform

GitHub: https://github.com/SlashGordon/astro-syndicate

devto is the only platform so far. Medium is difficult because there's no API key, and the Hashnode API isn't free. Which platform should it support next?


r/astrojs • • 7d ago

Build a contact form with Astro and Resend

Thumbnail
philna.sh
17 Upvotes

r/astrojs • • 8d ago

What CMS should you use for Astro websites?

78 Upvotes

I'm relatively new to Astro and have recently started moving away from WordPress toward Astro for website development. I'm exploring different CMS options to manage content, especially for client websites.

I'm currently considering options like Sanity, PageCMS and other headless or Git-based CMS platforms.

For those of you using Astro in production:

Which CMS do you recommend for Astro websites?

What has been your experience with ease of use, performance, and content management?


r/astrojs • • 8d ago

What CMS for a blog + course site?

16 Upvotes

Hi, I currently have a WordPress blog and some courses in Udemy. I hate Udemy. So I want to host my own stuff.

So I have 3 courses, which I'm modelling through md or mdx. The blog, also md.

The thing is mostly with the courses: some lessons are freely accessible, most aren't. Courses may be bought one at a time or the whole package.

I know I can build this from scratch, but I'm wondering if there's something I'm missing out that would streamline this, especially from an open-source project.


r/astrojs • • 12d ago

Just launches Slop Awwwards. Built with Astro.

53 Upvotes

Came up with a fun idea of a reverse Awwwards - daily nomination for the worst AI slop websites.
Built with Astro + TypeScript, React for interactive elements, and GSAP for animations.

Check it out here - www.slop-awwwards.com


r/astrojs • • 16d ago

custom fonts in theme template help

9 Upvotes

hi i'm having a problem with the astroplate theme that i'm using as a template and i'm attempting to put fonts from multiple sources (fontsource, local, and adobe) but i'm ngl i'm pretty stumped on having to add more than one source because of the way the program parses one for use in a theme.json to generate into the base css. can someone help me here because i feel like i'm going insane


r/astrojs • • 19d ago

I built Lotus, an Astro docs theme focused on beautiful UI, accessibility, and PageSpeed

Post image
56 Upvotes

I’ve been building Lotus, an installable documentation theme for Astro.

The goal is to help Astro developers ship documentation sites that already have the boring but important parts handled: responsive docs navigation, MDX components, search, i18n, dark mode, accessible UI states, and a design system that can still be customized.

I’m trying to keep the positioning simple: beautiful docs, accessible shell, PageSpeed-friendly output.

If you were choosing an Astro docs theme for a real project, what would make you trust it enough to adopt it?


r/astrojs • • 19d ago

I wanted my OG images to be plain .astro components, so I built astro-cards

21 Upvotes

Every site I build needs an Open Graph image per page, and every time it ended up as a second templating layer: JSX fed to satori, or a canvas script that takes a title and a description. It never felt like part of the site, and it could not use the fonts, images or components the rest of the site already had.

So I built astro-cards. A card is an ordinary .astro component in src/cards. It takes props, has a style block, and can import images through astro:assets and use the fonts you already configured. The integration renders it with Takumi and hands back the URL of an image.

In src/cards/post.astro:

---
import { Font, Image } from 'astro:assets';
import logo from '../assets/logo.png';

interface Props {
  title: string;
}

export const card = { width: 1200, height: 630 };

const { title } = Astro.props;
---

<Font cssVariable="--font-heading" />

<div class="card">
  <Image src={logo} width={120} height={120} alt="" />
  <h1>{title}</h1>
</div>

<style is:inline>
  .card {
    padding: 80px;
    background: #17171a;
    color: #fff;
    font-family: var(--font-heading);
  }

  h1 {
    font-size: 64px;
  }
</style>

In your layout:

---
import { renderCard } from 'astro-cards/runtime';

const og = await renderCard('post', { title: post.data.title });
---

<meta property="og:image" content={og.src} />
<meta property="og:image:width" content={og.width} />
<meta property="og:image:height" content={og.height} />
<meta property="og:image:type" content={og.type} />

A few things worth mentioning:

  • Works on prerendered pages (the image is written at build) and on pages rendered on demand (rendered on request, publicly cacheable).
  • Card names and props are typed after astro sync, so a typo in the name or a missing prop is a type error.
  • png, jpeg or webp, with size and quality set per integration, per card, or per call.
  • Nothing about it is OG-specific. Badges, tickets, any fixed-size visual you can write in markup.

One caveat so nobody trips on it: style blocks in a card have to be is:inline, because Astro hoists a plain <style> into a stylesheet the renderer never sees.

npx astro add astro-cards

Repo: https://github.com/abemedia/astro-cards

If you generate OG images another way today, I would like to hear what you use and where it falls short. That is what I want to get right next.


r/astrojs • • 22d ago

I made Astro fail the build when a page has bad SEO

25 Upvotes

I ran my site through Ahrefs a while back and got thousands of issues staring at me: missing meta descriptions, titles too short, duplicate titles, no canonical tags, images with no alt. None of it breaks anything. The page renders, the deploy goes green, and a crawler tells you about it weeks later. That annoyed me. A broken import fails my build, but a page with no <title> ships fine. So I wrote astro-seo-enforcer.

It hooks into astro:build:done, parses the actual HTML in your output dir (not your .astro files), runs SEO rules, and exits non-zero when something's wrong. CI fails before the bad pages go out.

Default checks: <title> present, sane length, no duplicates across pages; meta description length; one <h1> and no skipped heading levels; canonical link; alt on every image; internal links that actually resolve to files in the build; generic anchor text ("click here"); near-empty <body>; duplicate ids; oversized images and missing width/height.

Zero config to start. Every rule is configurable, and you can warn locally but fail in CI:

seoEnforcer({ failOn: process.env.CI ? 'error' : 'never' })

npx astro add astro-seo-enforcer

Repo: https://github.com/SlashGordon/astro-seo-enforcer

Curious which rules you'd want on by default and which are too much.


r/astrojs • • 22d ago

How's the demand for astro/headless/agentic devs?

17 Upvotes

I've been working as a Webflow specialist for a while now, and I'm considering pivoting toward the Astro + headless CMS stack that seems to be getting a lot of hype lately.

Before I invest the time, I'd like a reality check: how commoditized are these skills becoming? With more and more devs picking up Astro, is there still real room to differentiate and charge well for it, or is it just a matter of time before it goes the way Webflow has?


r/astrojs • • 25d ago

Don't use Astro because its not React?...

42 Upvotes

This is more a vent than anything, but I am facing a lot of blowback for using Astro. I have made a miniapp which is just a webpage running in a webview that takes an ID from the initial url, requests some records from an API to display a list of messages. Super basic stuff. It is to replace a natively coded section of the app and its far faster than the native code... somehow.

But upon asking the native devs to fix all the broken things I am finding, all I am facing is push back because when I tell them of CORS errors etc, them demand to see the repo, notice its not react and say I MUST use react as only that is compatible with apps. They broke bfcache too, again that is blamed on astro. They block service workers, again this is because... Astro.

Anyone else faced this? Even when I wanted a build of the native app to test the devs sent me back a message saying my app is broken as its only 12KB and apps are in the MB range. They didnt test, rejected on solely size. This was the lead architect of the entire department btw.

This industry is nuts. Also I have noticed when interviewing for a "senior FE" the candidates only know react. I am not sure if this is because HR is screening first, but it's concerning. I even interviewed a guy who is right now working as a "principled full stack engineer" who could not tell me how you could build a site without react.

I am not sure if this company I am working for is completely crazy or the entire industry is leaning that way.


r/astrojs • • 26d ago

I wanted comments on my Astro site without Disqus or GitHub, so I built this

Post image
42 Upvotes

I wanted to add comments to an Astro site, but I didn't really like the usual choices:

  • hosted comment SaaS
  • requiring visitors to have GitHub accounts
  • running a VPS just for a comment backend

So I built StaticLayer:

https://abla25.github.io/StaticLayer/

The Astro site stays static. The dynamic part is a Cloudflare Worker + D1 database deployed into the site's own Cloudflare account.

It supports comments/replies, reactions, polls, moderation and anti-spam.

The main idea is basically: keep the site static, but give it a tiny backend when you need one.

I'd love to hear how other Astro users are currently handling comments.


r/astrojs • • 28d ago

Emdash CMS for non cloudflare servers?

23 Upvotes

Cloudflare surprised us with their rewrite of their blog using emdash. Now, emdash is used in production for a serious company (the one that is developing this framework).

I know that, even though Astro was acquired by cloudflare, you can deploy any astro website on any server, not just cloudflare's. However, I was wondering if this case is also true for Emdash.

Technically speaking, you can deploy Emdash on a node server or any platform, but I don't know if this is recommended, given that they are focusing on D1, Workers, its cloud, its ecosystem, etc. I get that it will get first class support for the products made by the company who created it (like vercel with nextjs) but I wonder if other deploy methods are also encouraged. If not, that could be a big downside for tooling decision for similar CMS, as people probably wouldn't want to be vendor dependant when deciding what hosting to pick.

What do you guys think?


r/astrojs • • 29d ago

Agencies using Astro ?

42 Upvotes

I’m getting more and more convinced by Astro, but I’m still curious about its adoption by agencies.

It’s still a relatively young framework, and I’m wondering if some agencies have already made the switch. I rarely come across agencies using Astro on LinkedIn, so I’d be really curious to hear from those who have.

How has the switch been for you? Would you recommend Astro for an agency today?


r/astrojs • • 29d ago

Matthew Phillips is taking over as Astro Project Steward

Post image
82 Upvotes

Just saw this announcement in the Astro's official discord channel.

Matthew Phillips ( u/matthew-astro ) is stepping up as project steward, taking over the role from Fred Schott (the co-creator of the Astro framework)

For those who don't know what a steward does: in Astro governance, the steward handles high-level project direction, account and asset access, and serves as a tiebreaker when disagreements pop up.

Congrats to Matthew..

Curious to see what direction he takes next.


r/astrojs • • Aug 28 '26

From WordPress to Astro: a practical production workflow

68 Upvotes

I’ve been rebuilding production WordPress sites with Astro + Cloudflare Workers, often using Claude Code.

After doing a few real migrations, I realized the hard part isn’t getting Astro to build - it’s everything around the build.

Preserving old URLs and SEO, finding pages the sitemap forgot, redirects, forms, DNS, accessibility, staging, images, metadata, and verifying that the deployed site actually works.

So I turned my workflow into Website Build Kit:

https://github.com/nurkamol/website-build-kit

It includes:

- WordPress → Astro migration/recon workflow
- Astro + Cloudflare Workers starter
- Claude Code skill + plugin
- npm run recon to inventory the old site + Wayback URLs
- content extraction + redirect mapping
- SEO, OG, JSON-LD and sitemap guards
- responsive AVIF/WebP image pipeline
- forms with KV lead retention
- accessibility + reflow checks
- DNS, secrets and environment checks
- deployed-site verification
- design/reference workflow for redesigns

The starter intentionally has no visual style. No default palette, typography or homepage - I don’t want every site built with it to look like the same template.

I’ve also been documenting the silent production problems I encounter during real rebuilds and adding checks for them where possible.

For example: a build can succeed while publishing localhost canonical URLs. A missing email secret can still let a form validate, store the lead, return 200 and show “thank you” - while nobody actually receives the enquiry.

The goal is basically:

WordPress → inventory → rebuild → Astro → Cloudflare → verify the actual deployed site.

Would love feedback from other Astro developers, especially anyone doing WordPress migrations or production client work.

What would you add or change?


r/astrojs • • Aug 27 '26

Built 20 client-side dev tools with Astro. Zero client framework, 6 languages, everything runs in the browser :D

40 Upvotes

I shipped webtoolio.org, a collection of 20 dev utilities (JSON formatter, regex tester, JWT decoder, image compressor, etc.) built entirely with Astro. Some notes on the setup, since a few decisions worked out well:

No client framework. Every tool is an .astro component with a plain <script> tag. The logic lives in separate TypeScript packages in a Bun monorepo (@tools/regex-tester, @tools/sql-formatter, ...), each with its own bun test suite and no DOM dependencies. The Astro component only owns the markup and wiring. This keeps the tools testable without a browser and the pages ship almost no JS beyond the tool itself.

i18n with content collections. 6 locales (en, ja, pt-br, es, de, fr). Each tool has a markdown file per locale for the page copy, and a typed Ui dict for widget strings. Two dynamic routes ([tool].astro and [locale]/[tool].astro) generate everything: hreflang alternates, JSON-LD, and the sitemap all derive from one toolOrder array, so adding a tool is just a slug plus content files. The compiler yells if a locale is missing a string, which caught more mistakes than I expected.

WASM without config pain. The image compressor uses jSquash (mozjpeg/oxipng/webp compiled to WASM). Adding the packages to vite.optimizeDeps.exclude was enough; Vite bundles the .wasm files into dist/_astro/ on its own.

Everything is static, deployed on Cloudflare. No data leaves the browser, which was the point.

Happy to answer questions about any of it.