<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Shreyash Rai — #astro</title><description>Everything tagged “astro”.</description><link>https://shreyashrai.com</link><item><title>How this site works</title><link>https://shreyashrai.com/blog/how-this-site-works</link><guid isPermaLink="true">https://shreyashrai.com/blog/how-this-site-works</guid><description>A static, Markdown-driven site built with Astro — why it exists and how publishing a new post is just adding a file.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This site is a running log of things I learn and the projects I build. The most
important property it has is that publishing is frictionless: writing a new post
is exactly as much work as creating a Markdown file and pushing to git. No CMS,
no dashboard, no database.&lt;/p&gt;
&lt;h2&gt;The stack&lt;/h2&gt;
&lt;p&gt;It&apos;s built with &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; as a fully static site. Every TIL
and every post is a Markdown file with a little frontmatter block at the top —
a title, a date, some tags. Astro reads those files at build time, validates the
frontmatter against a schema, and turns each one into a page. The output is
plain HTML and CSS with essentially no client-side JavaScript, so pages load
instantly and there&apos;s nothing to break.&lt;/p&gt;
&lt;p&gt;There are two kinds of writing here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TILs&lt;/strong&gt; (&quot;Today I Learned&quot;) — short, dated, tagged notes. This is the heart
of the site and where most of the activity is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Posts&lt;/strong&gt; — longer writeups and essays, like this one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why no JavaScript framework&lt;/h2&gt;
&lt;p&gt;Because the content is the product. A personal site that&apos;s mostly text doesn&apos;t
need a rendering framework shipped to the browser; it needs good typography, a
readable column width, and fast loads. Keeping the build static means the whole
site is a folder of HTML files that any host can serve, and there&apos;s no runtime
to patch or attack.&lt;/p&gt;
&lt;h2&gt;Following along&lt;/h2&gt;
&lt;p&gt;Everything is available as a feed. There&apos;s a
&lt;a href=&quot;/rss.xml&quot;&gt;combined feed&lt;/a&gt; of TILs and posts, and if you only want one or the
other, each has its own. Feeds carry the full text, so you can read without ever
visiting the site — that&apos;s the point of them.&lt;/p&gt;
&lt;p&gt;If you want to see how the sausage is made, the source is on
&lt;a href=&quot;https://github.com/ItsMat78&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>meta</category><category>astro</category></item><item><title>Astro&apos;s Content Layer API</title><link>https://shreyashrai.com/links/astro-content-layer</link><guid isPermaLink="true">https://shreyashrai.com/links/astro-content-layer</guid><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The &lt;code&gt;glob()&lt;/code&gt; loader plus Zod schemas are what make every TIL, post, link, and
quote on this site type-checked at build — a malformed frontmatter block fails
&lt;code&gt;astro build&lt;/code&gt; instead of shipping a broken page. Worth a read if you run any
kind of content site.&lt;/p&gt;
&lt;p&gt;Link: &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/&quot;&gt;https://docs.astro.build/en/guides/content-collections/&lt;/a&gt;&lt;/p&gt;</content:encoded><category>astro</category><category>meta</category></item></channel></rss>