AstroBlogStarter

tailwind-astro-starting-blog — Astro Blog Template

By wanoo21

An Astro and Tailwind CSS blog starter template supporting MDX, multiple authors, multiple tags, pagination, and Giscus comments, under the MIT license.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-04View source

What stands out

A quick read of the recorded project description.

01

Use Astro MDX to manage articles, authors, and tags, with each tag and author having a separate page

02

Support multiple authors, related articles, pagination for blog and tag pages, and two article layouts and two list layouts

03

Customize styles via Tailwind CSS and the primary color property, with built-in light and dark themes and mobile adaptation

04

Integrate Giscus comments based on GitHub Discussions, with global or per-article display control

05

Provide an i18n structure, defaulting to English, with languages extendable in src/i18n/ui.ts

06

Include Docker build and run commands for containerized deployment

Template Details

This is an Astro starter template for blog scenarios, using Tailwind CSS for style customization and supporting primary color adjustment via the primary color property. The content layer uses Astro MDX, with articles, authors, and tags all maintained as MDX files. The template includes multi-author pages, multi-tag pages, related articles, pagination for blog and tag pages, and two article layouts and two list layouts. The interactive part introduces Solid.js, and comments are integrated with GitHub Discussions via Giscus. The template provides light and dark themes, mobile adaptation, font optimization, and automatic optimization with Astro image components. It also includes i18n support, with English as the default language, and languages can be extended in src/i18n/ui.ts, but dynamic language switching is not supported.

The template's customization entry points are concentrated in src/consts.ts (site title, description, author, social links, comment configuration, etc.), src/functions.ts (article sorting and draft exclusion), src/content/authors and src/content/tags directories (MDX files for authors and tags), and src/content/config.ts (content field definitions). The comment feature requires first enabling Discussions in the GitHub repository and installing the Giscus app, then filling in the repository ID, category ID, and other configurations; it can also be globally disabled via showComments in POST_METADATA.

In terms of usage limitations, the template's MIT license covers only the code itself; third-party assets such as demo images, fonts, and icons need separate license verification; external services such as domains and hosting may incur additional costs. The Lighthouse scores mentioned in the README are measurement results under specific deployment environments and do not constitute a guarantee of post-deployment performance.

AstroBlogStarter

Is it right for your project?

Use Cases

  • Personal tech blogs or writing sites requiring multiple authors, tag categorization, and pagination
  • Projects that want to quickly build a content site based on Astro and Tailwind CSS
  • Blogs that need to integrate GitHub Discussions comments and support light and dark themes
  • Astro projects that require containerized deployment or reference Docker commands

Suitable For

  • Developers familiar with Astro and Markdown/MDX content organization
  • Blog projects requiring multiple authors, multiple tags, and pagination
  • Front-end developers who want to customize visual styles with Tailwind CSS
  • Teams or individuals planning to integrate comments via Giscus and configure their own GitHub repository

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Run npm install to install dependencies, npm run dev to start the local development server (localhost:4321), and npm run build to generate the production site to ./dist/

  2. 2

    Modify constants such as site title, description, author, and social links in src/consts.ts

  3. 3

    Add MDX files in the src/content/authors and src/content/tags directories to add authors and tags

  4. 4

    To enable Giscus comments, first enable Discussions in the GitHub repository and install the Giscus app, then fill in the repository and category IDs

  5. 5

    For Docker deployment, use docker build -t app:1.0.0 . to build the image and docker run -p 80:4321 app:1.0.0 to run the container

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • The comment feature relies on external services Giscus and GitHub Discussions, requiring self-enabling and configuration; it is not a standalone comment system built into the template.
  • Before using the comment feature, you must manually enable Discussions in your own GitHub repository.
  • You need to install the third-party Giscus app and complete configuration, which is an external service dependency.
  • i18n does not support runtime dynamic language switching; it only provides a static multilingual structure, and dynamic switching must be implemented by yourself.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

This template now supports [Giscus](https://giscus.app/) comments, which uses GitHub Discussions as a backend. To enable comments on your blog:

Original README

1. **Enable GitHub Discussions** on your repository:

Original README

2. **Install the Giscus app**:

Original README

It doesn't have support for dynamic language change, but it's easy to implement.

Original README
https://github.com/wanoo21/tailwind-astro-starting-blog/blob/main/LICENSEhttps://github.com/wanoo21/tailwind-astro-starting-blog/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-04. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
Astro Themes
Documentation and maintenance reference score
More documented · 96 / 100
Technologies
Astro
Website type
Blog · Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-02-11
Screenshot last checked
2026-10-04

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: 5059191d2f3153161d0145e93880157e759d5abb056f466c03170e9d49b0bc2c

2026-10-04T14:32:03.249Z

Source file / repository
![img.png](img.png)

# Tailwind Astro Starter Project

[![GitHub Repo stars](https://img.shields.io/github/stars/wanoo21/tailwind-astro-starting-blog?style=social)](https://GitHub.com/wanoo21/tailwind-astro-starting-blog/stargazers/)
[![GitHub forks](https://img.shields.io/github/forks/wanoo21/tailwind-astro-starting-blog?style=social)](https://GitHub.com/wanoo21/tailwind-astro-starting-blog/network/)
[![Twitter URL](https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Ftwitter.com%2Fipwanciu)](https://twitter.com/ipwanciu)
[![Sponsor](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&link=https://github.com/sponsors/wanoo21)](https://github.com/sponsors/wanoo21)

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https://github.com/wanoo21/tailwind-astro-starting-blog)

This template is perfect for those who want to use Tailwind CSS and Astro to build a blog.

It is inspired by the [Tailwind Next.js Starter Blog](https://github.com/timlrx/tailwind-nextjs-starter-blog) - one of the most popular Next.js blogging templates.

Feature request or Facing issue? Check the [discussion page](https://github.com/wanoo21/tailwind-astro-starting-blog/discussions) to see if it has been brought up previously. Otherwise, feel free to start a new discussion thread. All ideas are welcomed!

## Demo

[Live Demo](https://tasb.yon.fun/) - Deployed on Vercel.

## Features

- Astro v5 with TypeScript
- Astro MDX support
- [Solid-js](https://solidjs.com) for some interactivity
- Easy styling customization with [Tailwind CSS v4](https://tailwindcss.com/docs/upgrade-guide) (via the official `@tailwindcss/vite` plugin) and primary color attribute
- Mobile-friendly view
- Light and dark theme
- Font optimization via [@fontsource](https://fontsource.org/)
- Automatic image optimization via Astro image component
- Support for tags - each unique tag will be its own page
- Support for multiple authors
- 2 different blog post layouts, including a full-width cover image
- 2 different blog listing layouts
- Support for nested routing of blog posts
- Support for [Giscus](https://giscus.app/) comments (powered by GitHub Discussions)
- Projects page
- i18n support
- **Fully SEO optimized**, including Open Graph and Twitter Cards
- Almost Perfect lighthouse score (for mobile - 99/95/100/91) - [Lighthouse Report](https://pagespeed.web.dev/analysis/https-tasb-yon-fun/gp1vypobei?form_factor=mobile)

![lighthouse score](image.png)

Even thought these features looks the same as the original template, they are implemented in a different way, and there are more to come.

However, there are some features that are not in the original template, like:

- Support for multiple authors pages - **each author will have** its own page, with a list of all the posts written by him/her.
- Support for multiple tags pages - **each tag has its own page with custom description**, that can be customized with markdown.
- Related posts - **each post has** a list of related posts, provided by the author inside the markdown file.
- Pagination inside blog/tags pages - **each blog/tags page has** a pagination.
- Cool animations provided by Astro.
- And many more that would come in the future.

## Internationalization

This template has support for i18n, it's set up for English as default. You can add more languages in the `src/i18n/ui.ts` file. It doesn't have support for dynamic language change, but it's easy to implement.

## Extend / Customize

`src/consts.ts` contains a list of constants that you can customize to your liking, including the blog title, description, author, social media links, etc.

`src/functions.ts` contains a list of functions that changes the default behavior of the template, including default post sorting and exclude draft posts.

`src/content/authors/default.mdx` contains the default author information. You can add more authors by adding more `.mdx` files in the `src/content/authors` folder.

`src/content/tags/default.mdx` contains the default tag information. You can add more tags by adding more `.mdx` files in the `src/content/tags` folder.

`src/content/config.ts` contains all fields for author, blog and tags pages. Check what's required and what's not. You can also add more fields if you want to.

## Comments

This template now supports [Giscus](https://giscus.app/) comments, which uses GitHub Discussions as a backend. To enable comments on your blog:

1. **Enable GitHub Discussions** on your repository:
   - Go to your repository settings
   - Scroll down to the "Features" section
   - Enable "Discussions"

2. **Install the Giscus app**:
   - Visit [giscus.app](https://giscus.app/)
   - Follow the configuration steps to get your repository details

3. **Configure Giscus in your blog**:
   - Open `src/consts.ts`
   - Find the `comments` section in `SITE_METADATA`
   - Fill in your Giscus configuration:
     ```typescript
     comments: {
       provider: 'giscus', // Set to 'giscus' to enable comments or null to disable
       giscusConfig: {
         repo: 'username/repo', // Your GitHub repository
         repositoryId: 'R_xxxxx', // Your repository ID from giscus.app
         category: 'General', // Discussion category
         categoryId: 'DIC_xxxxx', // Category ID from giscus.app
         mapping: 'pathname', // How to map pages to discussions
         reactionsEnabled: '1', // Enable reactions: '1' or '0'
         emitMetadata: '0', // Emit discussion metadata: '1' or '0'
         inputPosition: 'top', // Comment box position: 'top' or 'bottom'
         theme: 'light', // Theme for light mode
         darkTheme: 'dark', // Theme for dark mode
         lang: 'en', // Language code
         loading: 'lazy', // Loading mode: 'lazy' or 'eager'
       },
     }
     ```

4. **Control comment visibility** (optional):
   - In `src/consts.ts`, under `POST_METADATA`, you can disable comments globally:
     ```typescript
     showComments: false, // Set to false to hide comments on all posts
     ```

The comments section will automatically adapt to your site's theme (light/dark mode).

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command                   | Action                                           |
| :------------------------ | :----------------------------------------------- |
| `npm install`             | Installs dependencies                            |
| `npm run dev`             | Starts local dev server at `localhost:4321`      |
| `npm run build`           | Build your production site to `./dist/`          |
| `npm run preview`         | Preview your build locally, before deploying     |
| `npm run astro ...`       | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI                     |

### 🐳 Docker Commands

All Docker commands are run from the root of the project, from a terminal:

| Command                           | Action                                                   |
| :-------------------------------- | :------------------------------------------------------- |
| `docker build -t app:1.0.0 .`     | Build the Docker image for the Astro application.        |
| `docker run -p 80:4321 app:1.0.0` | Run a Docker container with the built Astro application. |
| `docker pull edwardb11/app:2.0.0` | Download the Docker image from Docker Hub.               |
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.