AstroStarter

brutal — Astro Starter Template

By ElianCodes

Brutal is a neobrutalism-style Astro starter theme that provides basic configuration for a blog, RSS, sitemap, and image optimization.

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-09-30View source

What stands out

A quick read of the recorded project description.

01

Neobrutalism Astro starter theme

02

Built-in blog content collection that generates pages from Markdown

03

Automatically generates a sitemap and RSS feed at build time

04

Includes image optimization and no JavaScript by default

05

Uses Tailwind CSS for utility classes, with a small amount of custom CSS

06

Uses Biome for formatting, linting, and import sorting, alongside astro check

Template Details

Brutal is an Astro starter theme published by ElianCodes, positioned as a neobrutalism style that emphasizes minimal and functional design. The theme originates from the author's personal website and has been supplemented with more general-purpose content.

In terms of features, it includes a blog content collection (Markdown files under src/content/blog), automatically generated RSS feed (output to feed.xml by default), a sitemap generated at build time, and image optimization integration. It does not include JavaScript integrations by default; these can be added as needed. Styling uses Tailwind CSS with Astro's Vite plugin, plus a small amount of plain CSS for scrollbars and shadows. Code checking and formatting use Biome, while Astro-related diagnostics still run via astro check; both are invoked together by pnpm check.

Usage is via the create astro command with npm, pnpm, or yarn, using eliancodes/brutal as the template to initialize a new project. The project structure divides components by purpose: blog, errors (including 404), generic, home, and layout (header, footer, and head).

Limitations and notes: the theme has no JavaScript interactions by default; the sitemap requires replacing site in astro.config with your own domain; RSS is generated by default from Markdown in src/content/blog and can be adjusted by renaming src/pages/feed.xml.js. The repository uses the MIT license, but third-party assets such as demo images, fonts, and icons require separate license verification, and external services such as domains and hosting may incur additional charges.

AstroStarter

Is it right for your project?

Use Cases

  • Quickly building a neobrutalism-style blog or personal website
  • Needing an out-of-the-box Astro starter to begin a project
  • Wanting a site with basic SEO configuration such as RSS and a sitemap
  • Preferring no JavaScript by default and adding interactions as needed

Suitable For

  • Developers familiar with Astro who want to start a project quickly
  • Personal site authors who like the neobrutalism visual style
  • Content-oriented websites that need a blog content collection and RSS output
  • Projects that want to customize styles with Tailwind CSS

Getting started & customization

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

  1. 1

    Initialize the project with npm create astro@latest -- --template eliancodes/brutal or the corresponding pnpm/yarn command

  2. 2

    After installing dependencies, run pnpm dev to start the local development server (localhost:4321)

  3. 3

    Replace site in astro.config with your own domain to generate a correct sitemap

  4. 4

    RSS is generated by default from Markdown in src/content/blog and output to feed.xml; it can be adjusted by renaming src/pages/feed.xml.js

  5. 5

    Use pnpm check to run both Astro checks and Biome checks

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 applies to that version's code and does not mean external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute this version's code for free.
  • 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

  • The template originates from the author's personal website and has been generalized; when using it, replace personalized content (such as site information and sample content) to suit your own project.
  • Before using the sitemap feature, you must replace the site field in astro.config with your own domain; otherwise, the generated sitemap URLs will point to the example domain.
  • RSS is generated by default from Markdown files in src/content/blog; blog content must be placed in that directory for the feed to output correctly.
  • The theme does not include any JavaScript integrations by default; interactive features must be added manually.
  • Demo images, fonts, icons, and other third-party assets must be checked against 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.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

This template is based on [my own personal website](<https://www.elian.codes/>), with some more generic things added.

Original README

You'll just need to switch out the `site` on `astro.config.ts` to your own.

Original README

The RSS feed is automatically generated from the Markdown files in the `src/content/blog` folder.

Original README

The theme has no JavaScript integration out of the box, but can always be added of course.

Original README
https://github.com/ElianCodes/brutal/blob/main/LICENSEhttps://github.com/ElianCodes/brutal/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. 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
GitHub
Documentation and maintenance reference score
More documented · 91 / 100
Technologies
Astro
Website type
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-09-29
Screenshot last checked
2026-10-01

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.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 62de4bafb99412cb02a7e4d19429bbfe2d850b6d6046fedde2126736b1f2419c

2026-10-01T14:38:21.588Z

Source file / repository
# Brutal - The neobrutalist Astro theme

Brutal is a minimal neobrutalist theme for [Astro](https://astro.build/). It's based on Neobrutalist Web Design, a movement that aims to create websites with a minimalistic and functional design. It has some integrations like Image Optimization, RSS, Sitemap, ready to get your SEO done right.

The theme has no JavaScript integration out of the box, but can always be added of course.

This template is based on [my own personal website](<https://www.elian.codes/>), with some more generic things added.

## Usage

You can bootstrap a new Astro project using Brutal with the following command:

```bash
# npm
npm create astro@latest -- --template eliancodes/brutal

# pnpm
pnpm create astro@latest --template eliancodes/brutal

# yarn
yarn create astro --template eliancodes/brutal
```

### Commands

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

(Here I use PNPM, no problem if you use NPM or Yarn)

| Command             | Action                                             |
| :------------------ | :------------------------------------------------- |
| `pnpm install`      | Installs dependencies                              |
| `pnpm dev`          | Starts local dev server at `localhost:4321`        |
| `pnpm lint`         | Runs Biome lint checks                             |
| `pnpm format`       | Formats the project with Biome                     |
| `pnpm check`        | Runs Astro checks plus `biome check`               |
| `pnpm build`        | Build your production site to `./dist/`            |
| `pnpm preview`      | Preview your build locally, before deploying       |
| `pnpm astro ...`    | Run CLI commands like `astro add`, `astro preview` |
| `pnpm astro --help` | Get help using the Astro CLI                       |

## Tooling

This project uses [Biome](https://biomejs.dev/) for formatting, linting, and import organization.
Astro-specific diagnostics still run through `astro check`, so CI and local validation use both:

```bash
pnpm run check
```

## Integrations

### Tailwind CSS

In this theme, I'm using [Tailwind CSS](https://tailwindcss.com/) to generate the utility classes. The project uses Astro's Tailwind setup with the Vite plugin, plus a small amount of regular CSS for the theme-specific scrollbar and shadow styling.

### Sitemap

To generate the sitemap, you don't need to do anything. It's automatically generated when you build your site. You'll just need to switch out the `site` on `astro.config.ts` to your own.

```js title="astro.config.mjs"
import { defineConfig } from 'astro/config';

export default defineConfig({
  site: 'https://example.com',
});
```

### RSS

The RSS feed is automatically generated from the Markdown files in the `src/content/blog` folder. You can ofcourse completely change this to your own needs.

The RSS will output to `https://example.com/feed.xml` by default. You can change this, by renaming `src/pages/feed.xml.js`.

### Image

## Components

### `components/blog/`

This directory contains all components for the blog.

### `components/errors/`

This directory contains all error components.

#### `components/errors/404.astro`

This component is used when a page is not found.

### `components/generic/`

This directory contains all generic components, reused over multiple pages.

### `components/home/`

This directory contains all components for the home page.

### `components/layout/`

This directory contains all layout components. For instance, the header and footer and `<head>` section.

If you need more from this theme, don't hesitate to open an issue or reach out to me!
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.