A robust, multi-framework starter kit built with Astro, Tailwind CSS v4, and Ark UI. Designed for scalability, performance, and modern developer experience.
localStorage, and synced with Nano Stores.astro-icon and framework-specific libraries (@iconify/react, etc.), utilizing the lucide icon set offline.| Category | Technology |
|---|---|
| Core | Astro |
| Styling | Tailwind CSS v4 |
| UI Primitive | Ark UI |
| State | Nano Stores |
| Icons | Iconify + Lucide |
| Linting | ESLint (@antfu) |
/
āāā src/
ā āāā components/
ā ā āāā react/ # React components
ā ā āāā solid/ # SolidJS components
ā ā āāā svelte/ # Svelte components
ā ā āāā vue/ # Vue components
ā ā āāā ThemeToggle.astro # Zero-JS toggle component
ā āāā layouts/
ā ā āāā default.astro # Base layout with dark mode init script
ā āāā pages/
ā ā āāā index.astro # Main entry point
ā āāā stores/
ā ā āāā counter.ts # Example shared atom store
ā ā āāā theme.ts # Theme state management
ā āāā styles/
ā āāā global.css # Tailwind v4 imports & custom variants
āāā astro.config.mjs # Configuration for integrations
āāā eslint.config.mjs # Antfu ESLint config
āāā package.json
Install Dependencies
npm install
Run Development Server
npm run dev
Build for Production
npm run build
| Command | Description |
|---|---|
npm run dev |
Start the development server |
npm run build |
Build the site for production |
npm run preview |
Preview the production build locally |
npm run lint |
Run ESLint to check for code quality issues |
npm run lint:fix |
Run ESLint and auto-fix fixable issues |
npm run type-check |
Run Astro's type checker |
npm run astro |
Access the Astro CLI directly |
Components from different frameworks can read and write to the same state.
// src/stores/counter.ts
import { atom } from 'nanostores'
export const $counter = atom(0)
Dark mode is handled by src/stores/theme.ts and applied via a dark class on <html>. The theme is persisted in localStorage.
src/components/ThemeToggle.astro handles user interaction.src/layouts/default.astro contains an inline script to prevent FOUC (Flash of Unstyled Content).Use icons easily in any file:
<Icon name="lucide:home" /><Icon icon="lucide:home" /><Icon icon="lucide:home" /><Icon icon="lucide:home" /><Icon icon="lucide:home" />