This is the Astro-based version of Vuejs.DE, migrated from Jekyll.
# Install dependencies
npm install
# Migrate content from Jekyll (run once)
npm run migrate
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewβββ public/ # Static assets
β βββ assets/ # Images, fonts, etc.
β βββ shared/ # Shared assets
βββ src/
β βββ components/ # Reusable Astro components
β βββ content/ # Content collections
β β βββ posts/ # Blog posts (markdown)
β β βββ users/ # Author profiles (YAML)
β βββ data/ # JSON data files
β βββ layouts/ # Page layouts
β βββ pages/ # File-based routing
β βββ styles/ # Global styles (SCSS)
β βββ utils/ # Utility functions
βββ scripts/ # Build scripts
βββ astro.config.mjs # Astro configuration
βββ firebase.json # Firebase hosting config
βββ package.json
The migration script (npm run migrate) handles:
- Blog Posts: Copies from
_posts/tosrc/content/posts/ - User Data: Copies from
_data/users/tosrc/content/users/ - Static Assets: Copies from
assets/andshared/topublic/ - Data Files: Copies JSON data to
src/data/
- Review frontmatter in migrated posts
- Update any Jekyll-specific syntax (Liquid β Astro)
- Check image paths and references
- Test all pages and features
- Content Collections: Type-safe content with Zod schemas
- SCSS + Bootstrap: Familiar styling with Bootstrap 5
- SEO Optimized: Meta tags, sitemap, RSS feed
- Fast Builds: Static site generation with Astro
- API Integration: Build-time data fetching from workshops.de API
| Feature | Jekyll | Astro |
|---|---|---|
| Templating | Liquid | Astro/JSX |
| Content | Markdown + YAML | Content Collections |
| Plugins | Ruby gems | npm packages |
| Data | _data/*.json |
src/data/ + imports |
| Build | bundle exec jekyll build |
npm run build |
Create a new directory in src/content/posts/:
src/content/posts/2024-01-15-my-new-post/
βββ index.md
βββ header.jpg
Frontmatter example:
---
title: "My New Post"
description: "A brief description"
author: "Robin BΓΆhm"
published_at: 2024-01-15T10:00:00.000Z
categories: "vuejs tutorial"
header_image: "header.jpg"
---Create a YAML file in src/content/users/:
# src/content/users/New Author.yaml
permalink: newauthor
name: New Author
gravatar_uid: abc123
github: newauthor
twitter: newauthor
city: Berlin
team: false
bio: >
Author bio here.# Build the site
npm run build
# Deploy to Firebase
firebase deploy --only hostingFor local development without API calls:
JEKYLL_ENV=local npm run dev- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details.