Skip to content
View yabood's full-sized avatar

Block or report yabood

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
yabood/README.md

Yabood

A production-ready Astro blog with excellent SEO, performance, and developer experience.

Features

  • ⚑️ 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

Tech Stack

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

  1. Clone the repository:
git clone https://github.com/yabood/yabood.git
cd yabood
  1. Install dependencies:
npm install
  1. Start the development server:
npm run dev
  1. Open http://localhost:4321 in your browser

Project Structure

/
β”œβ”€β”€ 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

Configuration

Site Configuration

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',
});

GitHub Pages Deployment

This site is configured to deploy automatically to GitHub Pages when you push to the main branch.

Setup Instructions:

  1. Enable GitHub Pages in your repository settings:

    • Go to Settings β†’ Pages
    • Source: GitHub Actions
  2. For Custom Domain:

    • Add a CNAME file in the public directory with your domain
    • Configure DNS settings with your domain provider
  3. For Project Pages (username.github.io/repo):

    • Update astro.config.mjs:
    site: 'https://username.github.io',
    base: '/repo-name',

Writing Content

Blog Posts

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...

Custom Pages

Pages can be created as .astro or .mdx files in src/pages/.

Commands

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

SEO & Structured Data

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)

Performance

Target metrics:

  • Lighthouse Score: 95+ (all categories)
  • First Contentful Paint: < 1s
  • Largest Contentful Paint: < 2.5s
  • Cumulative Layout Shift: < 0.1

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Author

Yousif Abood

Popular repositories Loading

  1. gatsby-plugin-transformer-rehype gatsby-plugin-transformer-rehype Public

    JavaScript

  2. genie genie Public

    Forked from mckaywrigley/chatbot-ui

    TypeScript

  3. gridstack.js gridstack.js Public

    Forked from gridstack/gridstack.js

    Build interactive dashboards in minutes.

    TypeScript

  4. blog.maximeheckel.com blog.maximeheckel.com Public

    Forked from MaximeHeckel/blog.maximeheckel.com

    Codebase of @MaximeHeckel's personal blog

    TypeScript

  5. yabood yabood Public

    Astro

  6. atlas atlas Public