Skip to main content
Neubrutal

Menu

Getting Started

How the theme is organized and how to start building with it.

Neubrutal is a neubrutalist design system for Astro, built with Tailwind CSS v4: thick borders, hard offset shadows, flat color, and square corners everywhere. It ships as plain, readable .astro files — nothing to install beyond Astro and Tailwind, nothing to configure beyond src/styles/global.css.

Project structure

src/
├── components/   # The base building blocks — Button, Card, Modal, Table, etc.
├── blocks/       # Larger sections composed from components — Hero, Navbar, FeatureGrid, Pricing, Testimonials, FAQ, CTA
├── layouts/      # Page shells — Layout (base HTML), LandingLayout, DocsLayout
├── pages/        # Routes — index.astro is the full component showcase; landing, blog, and portfolio are example pages built from blocks
├── docs/         # This documentation, as Markdown content collection entries
└── styles/
    └── global.css  # Every design token lives here — colors, fonts, shadows

The rule of thumb: components build blocks, blocks build layouts and pages. A Hero block is just a Button and some typography; a Navbar block is a Button and a Drawer. Nothing in blocks/ or layouts/ reaches for a color, border, or shadow value that isn’t already a token — see Theming.

Running the theme

This project’s dev server runs as a managed background process:

astro dev --background   # start
astro dev status         # check if it's running
astro dev logs           # tail its output
astro dev stop           # stop it

Using a component

Every component is a typed Astro file — import it and pass props like any other .astro component:

---
import Button from "../components/Button/Button.astro";
---

<Button variant="primary" size="lg" href="/docs"> Read the docs </Button>

Props are documented per-component in the rest of this section. Most components also accept a class prop, which is appended to (not replacing) the component’s own classes via class:list.

Where to look next

Documentation