Use Astro MDX to manage articles, authors, and tags, with each tag and author having a separate page
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.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Support multiple authors, related articles, pagination for blog and tag pages, and two article layouts and two list layouts
Customize styles via Tailwind CSS and the primary color property, with built-in light and dark themes and mobile adaptation
Integrate Giscus comments based on GitHub Discussions, with global or per-article display control
Provide an i18n structure, defaulting to English, with languages extendable in src/i18n/ui.ts
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.
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
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
Modify constants such as site title, description, author, and social links in src/consts.ts
- 3
Add MDX files in the src/content/authors and src/content/tags directories to add authors and tags
- 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
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
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis 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
https://github.com/wanoo21/tailwind-astro-starting-blog/blob/main/LICENSEhttps://github.com/wanoo21/tailwind-astro-starting-blog/blob/main/README.mdIt doesn't have support for dynamic language change, but it's easy to implement.
Original README
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
# Tailwind Astro Starter Project
[](https://GitHub.com/wanoo21/tailwind-astro-starting-blog/stargazers/)
[](https://GitHub.com/wanoo21/tailwind-astro-starting-blog/network/)
[](https://twitter.com/ipwanciu)
[](https://github.com/sponsors/wanoo21)
[](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)

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. |
Explore similar templates
Compare previews and descriptions within the same stack and category.

astrowind
AstroWind is a free, open-source Astro starter theme using Astro and Tailwind CSS, released under the MIT license.
Astro · Blog

astro-paper
AstroPaper is a minimal, responsive, accessible, and SEO-friendly Astro blog theme. Articles are stored as Markdown/MDX in src/content/posts/, with subdirectories affecting URLs.
Astro · Blog

fuwari
Fuwari is a static blog template built with Astro and Tailwind CSS for personal blogs. It manages posts as Markdown files in src/content/posts/, with frontmatter for title, date, description, cover, tags, categories, draft status, and language.
Astro · Blog

Firefly
Firefly is a clean personal blog theme forked from Astro and Fuwari, offering four background modes, single/double sidebar and list/grid layouts, Pagefind client-side full-text search, and a six-language UI.
Astro · Blog

astro-theme-cactus
Astro Cactus is an Astro-based blog and portfolio theme that uses Markdown/MDX content collections to manage posts, notes, and tags, with frontmatter type-checked by a schema.
Astro · Portfolio

astrofy
Astrofy is a free and open-source personal portfolio website template built with Astro and TailwindCSS, with built-in blog, CV timeline, project showcase, store, and RSS feed modules.
Astro · Portfolio
