This guide will help you set up a single-language shipyard site from scratch.
Before you begin, make sure you have:
# Create new directory
mkdir my-single-lang-site
cd my-single-lang-site
# Initialize package.json
npm init -y
Install Astro and shipyard packages:
Install dev dependencies:
Create astro.config.mjs:
import tailwind from '@astrojs/tailwind'
import shipyard from '@levino/shipyard-base'
import shipyardDocs from '@levino/shipyard-docs'
import shipyardBlog from '@levino/shipyard-blog'
import { defineConfig } from 'astro/config'
export default defineConfig({
// Note: No i18n configuration for single-language sites
integrations: [
tailwind({
applyBaseStyles: false,
}),
shipyard({
navigation: {
docs: { label: 'Docs', href: '/docs' },
blog: { label: 'Blog', href: '/blog' },
about: { label: 'About', href: '/about' },
},
title: 'My Site',
tagline: 'Single language site powered by shipyard',
brand: 'My Brand',
}),
shipyardDocs(['docs']),
shipyardBlog(['blog']),
],
})
Set up your project structure:
my-single-lang-site/
├── astro.config.mjs # Astro configuration
├── package.json # Dependencies
├── src/
│ ├── env.d.ts # TypeScript definitions
│ ├── content.config.ts # Content collections
│ └── pages/ # Static pages
│ ├── index.md # Homepage
│ └── about.md # About page
├── blog/ # Blog posts (no language dirs!)
│ └── welcome.md # First blog post
└── docs/ # Documentation (no language dirs!)
├── index.md # Docs homepage
└── installation.md # This page
Create src/content.config.ts:
import { defineCollection } from 'astro:content'
import { docsSchema } from '@levino/shipyard-docs'
import { blogSchema } from '@levino/shipyard-blog'
import { glob } from 'astro/loaders'
const blog = defineCollection({
schema: blogSchema,
loader: glob({ pattern: '**/*.md', base: './blog' }),
})
const docs = defineCollection({
schema: docsSchema,
loader: glob({ pattern: '**/*.md', base: './docs' }),
})
export const collections = { blog, docs }
Start the development server:
npm run dev
Your site will be available at http://localhost:4321
Build errors: Make sure all peer dependencies are installed Styling issues: Check that Tailwind CSS is properly configured Route problems: Verify your content collections are set up correctly
Need more help? Check our configuration guide for advanced setup options.