Easy startup websites for market research
bun install
bun devOpen localhost:4321 in your browser.
- Astro.js - Fast static site generation with partial hydration
- Storybook - Component library with nice UI to browse
- Tailwind CSS - Utility-first styling with custom theme
- TypeScript - Strict mode for full type safety
- Content Collections - Type-safe blog posts with Zod validation
- MDX Support - Enhanced markdown with components
- RSS Feed - Automatic feed generation (
/rss.xml) - Sitemap - SEO-friendly sitemap generation (
/sitemap-index.xml)
src/
├── components/ # Reusable UI components
│ ├── atoms/ # Atomic components
│ ├── molecules/ # Compound components
│ ├── organisms/ # Section components
│ └── templates/ # Page-level composition (optional)
├── layouts/ # Page layouts
├── pages/ # Routes (file-based), ignores folders and files starting with underscore
└── styles/ # Global styles
| Command | Description |
|---|---|
bun dev |
Start development server |
bun build |
Build for production |
bun preview |
Preview production build |
bun run lint |
Run ESLint |
bun run typecheck |
Run TypeScript check |
bun storybook |
Start Storybook |
bun storybook:build |
Build Storybook static site |
npx vitest --project=storybook --run |
Run Storybook tests (CI/a11y) |
Storybook is configured for TSX components under src/components/.
bun storybookRun Storybook tests (including a11y checks) from CI or locally with:
npx vitest --project=storybook --runStory conventions (early stage):
- Use a single default export title that matches the component group (Atoms, Molecules, Organisms).
- Keep story names short and descriptive (Primary, WithIcon, Dense).
The site branding now comes from one source of truth: src/pages/_brandConfig.ts.
- Open src/pages/_brandConfig.ts.
- Update identity, organization, theme, links, SEO, and blog values.
- Keep paths aligned with your configured
basepath inastro.config.mjs.
For the complete typed example and current defaults, use src/pages/_brandConfig.ts directly.
Except the brand config, all data is initialized in the header of the .astro page files.
Keep renamed routes in astro.config.mjs:
redirects: {
"/about/": "/project/",
},Remove the old page file, because file-based routes take precedence over configured redirects.
- Color tokens are exposed as CSS variables in
src/styles/global.css. - Tailwind color utilities (
primary-*,secondary-*) map to those variables intailwind.config.mjs. - The active brand values are injected globally by
src/layouts/BaseLayout.astro.
The template includes a resources collection at src/pages/resources/_articles.
- Use nested paths if helpful (for example
guides/interview-script-template.mdx). - Draft entries (
draft: true) are excluded from both resources listing and detail routes. - Resources are sorted by
order(ascending), then byupdatedDate/pubDate(descending).
Supported frontmatter fields:
title,description,category,pubDateupdatedDate,tags,draft,orderheroImage,canonical,seoTitle,seoDescription,ogImage,related
Schema source of truth: src/content.config.ts.
Same as resources, but markdown files are located under src/pages/blog/_articles.
Configured for GitHub Pages. Update astro.config.mjs with your username:
site: 'https://riehlegroup.github.io',
base: '/idolbust',Pushes to main automatically build and deploy via the Deploy GitHub Actions workflow.