<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>astro-ignite</title><description>A site bootstrapped with astro-ignite — built for SEO, performance, and i18n.</description><link>http://localhost:4321/</link><language>en-US</language><item><title>Welcome to your astro-ignite site</title><link>http://localhost:4321/blog/welcome/</link><guid isPermaLink="true">http://localhost:4321/blog/welcome/</guid><description>A short tour of what shipped with your fresh astro-ignite scaffold and what to do next to make it yours.</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You just bootstrapped a complete Astro site. This post is a quick tour of what&apos;s in front of you so you know what to keep, what to edit, and what to delete.&lt;/p&gt;
&lt;h2&gt;What you have&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A working &lt;strong&gt;blog&lt;/strong&gt; at &lt;code&gt;/blog&lt;/code&gt; with two example posts (this one is one of them) authored as MDX in &lt;code&gt;src/content/blog/{locale}/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;projects&lt;/strong&gt; showcase at &lt;code&gt;/projects&lt;/code&gt; with a sample case study.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;about&lt;/strong&gt; page at &lt;code&gt;/about&lt;/code&gt; and a &lt;strong&gt;contact&lt;/strong&gt; form at &lt;code&gt;/contact&lt;/code&gt; that&apos;s wired to whichever email provider you picked at scaffold (Resend, SMTP, or a console-only stub).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Legal page templates&lt;/strong&gt; — privacy, terms, cookies — at &lt;code&gt;/legal/*&lt;/code&gt;. They ship with placeholder content and a clear &quot;review with counsel&quot; disclaimer; review and customize before you go live.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;cookie banner&lt;/strong&gt; that controls whether analytics fires.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;dark mode toggle&lt;/strong&gt; in the nav (try it).&lt;/li&gt;
&lt;li&gt;Sitemap, RSS, robots, manifest, and OG image — all wired and i18n-aware.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What to edit first&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Replace the brand colors&lt;/strong&gt; in &lt;code&gt;src/styles/global.css&lt;/code&gt; (look for the &lt;code&gt;@theme&lt;/code&gt; block).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replace the OG image&lt;/strong&gt; at &lt;code&gt;public/og/og-default.png&lt;/code&gt; with a 1200×630 image branded for your site.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fill in &lt;code&gt;src/config/site.ts&lt;/code&gt;&lt;/strong&gt; — every locale-keyed object, your social URLs, your organization name.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customize the legal templates&lt;/strong&gt; in &lt;code&gt;src/content/legal/{locale}/&lt;/code&gt; and review them with a lawyer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delete this post&lt;/strong&gt; when you don&apos;t need the tour anymore.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;What to read&lt;/h2&gt;
&lt;p&gt;For deeper customization there&apos;s a &lt;code&gt;*.md&lt;/code&gt; guide for each subsystem in the template root: &lt;code&gt;FONTS.md&lt;/code&gt;, &lt;code&gt;ANALYTICS.md&lt;/code&gt;, &lt;code&gt;OG.md&lt;/code&gt;, &lt;code&gt;IMAGES.md&lt;/code&gt;, &lt;code&gt;LEGAL.md&lt;/code&gt;, and &lt;code&gt;BENCHMARKS.md&lt;/code&gt;. Each is short, recipe-driven, and assumes you&apos;ll edit code rather than read prose.&lt;/p&gt;
</content:encoded></item><item><title>The why behind astro-ignite</title><link>http://localhost:4321/blog/why-astro-ignite/</link><guid isPermaLink="true">http://localhost:4321/blog/why-astro-ignite/</guid><description>Why the tool ships these specific defaults — pure-Astro components, layered CSS, schema-dts JSON-LD, and a hybrid email stack.</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most Astro starters ship in one of two extremes: a minimal &quot;hello world&quot; you assemble yourself, or an opinionated framework that hides decisions behind abstractions. astro-ignite picks a different point on the spectrum — opinionated defaults you fully own.&lt;/p&gt;
&lt;h2&gt;Lighthouse 100s require defaults, not effort&lt;/h2&gt;
&lt;p&gt;Tailwind&apos;s CSS bundle is a single render-blocking file containing every utility your site uses. For a hero rendering above the fold, that&apos;s a real cost — even with Astro&apos;s per-route splitting, cross-page utility overlap weighs your homepage CSS down with rules from &lt;code&gt;/blog&lt;/code&gt; and &lt;code&gt;/about&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The fix isn&apos;t to drop Tailwind. The fix is to &lt;strong&gt;not use Tailwind for the hero&lt;/strong&gt;: above-the-fold components (Hero, Nav, BaseLayout chrome) ship with scoped Astro &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; blocks that get inlined per-route automatically. The rest of the page uses Tailwind. A build-time critical CSS step (Beasties) inlines the Tailwind rules each page actually needs above the fold; the rest loads async.&lt;/p&gt;
&lt;p&gt;This is the convention encoded in the scaffold by example. You don&apos;t have to think about it. You just see Hero use a &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; block while Footer uses Tailwind classes, and you copy the pattern.&lt;/p&gt;
&lt;h2&gt;JSON-LD must be typed&lt;/h2&gt;
&lt;p&gt;Schema.org has hundreds of types and thousands of properties, most of which are optional or constrained. Hand-writing JSON-LD as plain objects guarantees you ship malformed structured data — Google Search Console will tell you, but only after the SERPs already saw it.&lt;/p&gt;
&lt;p&gt;The fix is &lt;code&gt;schema-dts&lt;/code&gt;, Google&apos;s official TypeScript types for Schema.org. astro-ignite ships pure functions that build typed schema objects (&lt;code&gt;BlogPosting&lt;/code&gt;, &lt;code&gt;Organization&lt;/code&gt;, &lt;code&gt;BreadcrumbList&lt;/code&gt;, etc.) and renders them into a single &lt;code&gt;@graph&lt;/code&gt; script. Cross-references between schemas use &lt;code&gt;@id&lt;/code&gt;, so &lt;code&gt;BlogPosting.publisher&lt;/code&gt; is just &lt;code&gt;{ &apos;@id&apos;: &apos;...#organization&apos; }&lt;/code&gt; — the data is normalized, the markup is small, and TypeScript yells if you ever try to put &lt;code&gt;headline&lt;/code&gt; on a &lt;code&gt;Person&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Why no React in the template&lt;/h2&gt;
&lt;p&gt;The interactive components a marketing/blog/portfolio site genuinely needs are tiny: a mobile nav toggle, a theme switcher, a locale dropdown, a cookie banner. None of them require a framework runtime. Each is 10–30 lines of vanilla JS in a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; block, scoped to its component.&lt;/p&gt;
&lt;p&gt;Shipping &lt;code&gt;@astrojs/react&lt;/code&gt; by default would burn ~40KB of hydration on something that doesn&apos;t need it. Users who want React can run &lt;code&gt;npx astro add react&lt;/code&gt; — it&apos;s one command. The default should defend the perf pitch, not undermine it.&lt;/p&gt;
&lt;h2&gt;Why two email providers&lt;/h2&gt;
&lt;p&gt;Email transports diverge based on infrastructure. Indie devs want Resend. Teams using their own SMTP (M365, Postmark, AWS SES) want SMTP. Forcing one is wrong. So the init prompt asks, and only the chosen provider lands in &lt;code&gt;package.json&lt;/code&gt;. The action layer above (Astro Action + Zod validation + honeypot) is identical either way.&lt;/p&gt;
&lt;h2&gt;What&apos;s intentionally not here&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No icon library&lt;/strong&gt; — small inline SVGs ship; users add &lt;code&gt;astro-icon&lt;/code&gt; if they want more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No &lt;code&gt;class-variance-authority&lt;/code&gt;&lt;/strong&gt; — the surface is too small to need it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No CMS adapter&lt;/strong&gt; — content lives in MDX collections, the canonical Astro pattern.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No analytics by default&lt;/strong&gt; — Plausible is wired up but env-gated; nothing fires until you opt in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point isn&apos;t to ship every feature. It&apos;s to ship the &lt;em&gt;right&lt;/em&gt; feature for an SEO/perf-grade Astro site, and to ship it with code you can read in an afternoon.&lt;/p&gt;
</content:encoded></item></channel></rss>