Skip to content
rajeshdas
.dev

Start with structure.
Build with intent.

A practical Astro foundation that handles the repetitive setup, then gets out of your way. Keep the parts you need, replace the rest, and make the project yours.

Feature by feature

Enough foundation to move quickly.

Each layer is independent. Remove one without unravelling the rest, or keep the complete setup and start shipping.

01

Content-ready

Author pages in Astro or MDX, with syntax highlighting and a typography system already in place.

MDX · Shiki · SEO

02

Islands, selectively

Use React when interaction earns its place. Everything else ships as straightforward HTML and CSS.

React 19 · Astro islands

03

A real design base

Semantic tokens, dark mode, Tailwind utilities, and shadcn primitives form a system you can extend.

Tailwind 4 · shadcn/ui

04

Repeatable tooling

The dev container, mise tasks, pnpm, Biome, and repository hooks keep environments predictable.

Dev Container · mise · pnpm

Clear by default

Code that explains itself.

Pages stay declarative. Content stays close to the product. Interactive pieces opt into JavaScript instead of making it the default.

Output
Static-first
JavaScript
By component
ASTROsrc/pages/index.astro
---
import BaseLayout from "@/layouts/BaseLayout.astro"
import FeatureGrid from "@/components/FeatureGrid.astro"
 
const features = await getCollection("features")
---
 
<BaseLayout title="Build something useful">
  <FeatureGrid items={features} />
</BaseLayout>

From zero to useful

Three steps. Then it is your project.

  1. 01 Use template

    Create a clean repository from the maintained starting point.

  2. 02 Open container

    Let the project install its declared runtime and development tools.

  3. 03 mise run dev

    Start Astro and turn the foundation into your own product.

A starting point, not a cage

Delete freely. Extend deliberately. Keep ownership of every line.

Start from the template