A production-ready Astro blog with excellent SEO, performance, and developer experience.
- β‘οΈ Lightning Fast - Zero JavaScript by default, perfect Core Web Vitals
- π¨ Tailwind CSS v4 - Modern styling with minimal bundle size
- π MDX Support - Write content with components
- π SEO Optimized - JSON-LD structured data for rich snippets
- π± Responsive - Mobile-first design
- π GitHub Pages - Automated deployment via GitHub Actions
- π° RSS Feed - Automatic RSS generation
- πΊοΈ Sitemap - Auto-generated sitemap for search engines
- πΌοΈ Image Optimization - Automatic image optimization with Astro
- β¨οΈ TypeScript - Full type safety
- Astro - Static site generator
- Tailwind CSS v4 - Utility-first CSS
- MDX - Markdown with JSX
- TypeScript - Type safety
- Node.js 18+
- npm or yarn
- Clone the repository:
git clone https://github.com/yabood/yabood.git
cd yabood- Install dependencies:
npm install- Start the development server:
npm run dev- Open http://localhost:4321 in your browser
/
βββ public/
β βββ favicon.svg
β βββ robots.txt
β βββ og-image.jpg
βββ src/
β βββ components/
β β βββ Header.astro
β β βββ Footer.astro
β β βββ Prose.astro
β β βββ Seo.astro
β βββ content/
β β βββ blog/
β β β βββ hello-world.mdx
β β βββ config.ts
β βββ layouts/
β β βββ BaseLayout.astro
β β βββ PostLayout.astro
β βββ pages/
β β βββ blog/
β β β βββ [...slug].astro
β β β βββ index.astro
β β βββ index.astro
β β βββ about.mdx
β β βββ projects.astro
β β βββ contact.astro
β β βββ 404.astro
β β βββ rss.xml.ts
β βββ styles/
β βββ global.css
βββ .github/
β βββ workflows/
β βββ deploy.yml
βββ astro.config.mjs
βββ tailwind.config.js
βββ postcss.config.cjs
βββ tsconfig.json
βββ package.json
Edit astro.config.mjs to configure your site:
export default defineConfig({
site: 'https://yabood.com', // Your domain
// For GitHub Pages project sites, add:
// base: '/repo-name',
});This site is configured to deploy automatically to GitHub Pages when you push to the main branch.
-
Enable GitHub Pages in your repository settings:
- Go to Settings β Pages
- Source: GitHub Actions
-
For Custom Domain:
- Add a CNAME file in the
publicdirectory with your domain - Configure DNS settings with your domain provider
- Add a CNAME file in the
-
For Project Pages (username.github.io/repo):
- Update
astro.config.mjs:
site: 'https://username.github.io', base: '/repo-name',
- Update
Create new blog posts in src/content/blog/:
---
title: 'My New Post'
description: 'A description of my post'
pubDate: 2025-08-11
tags: ['astro', 'blogging']
heroImage: '/blog-image.jpg'
---
Your content here...Pages can be created as .astro or .mdx files in src/pages/.
| Command | Action |
|---|---|
npm run dev |
Start development server at localhost:4321 |
npm run build |
Build production site to ./dist/ |
npm run preview |
Preview production build locally |
npm run astro |
Run Astro CLI commands |
The site automatically generates:
- Meta tags for SEO
- Open Graph tags for social sharing
- Twitter Card tags
- JSON-LD structured data for:
- Blog posts (BlogPosting)
- Website (WebSite)
- Breadcrumbs (BreadcrumbList)
- Author (Person)
Target metrics:
- Lighthouse Score: 95+ (all categories)
- First Contentful Paint: < 1s
- Largest Contentful Paint: < 2.5s
- Cumulative Layout Shift: < 0.1
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
Yousif Abood
- Website: yabood.com
- GitHub: @yabood
- Twitter: @yabood