An open API service indexing awesome lists of open source software.

https://github.com/workshops-de/vuejs.de

Website of vuejs.de πŸ”»
https://github.com/workshops-de/vuejs.de

community javascript vuejs website

Last synced: 5 months ago
JSON representation

Website of vuejs.de πŸ”»

Awesome Lists containing this project

README

          

# Vuejs.DE - Astro Migration

This is the Astro-based version of Vuejs.DE, migrated from Jekyll.

## πŸš€ Quick Start

```bash
# 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
```

## πŸ“ Project Structure

```
β”œβ”€β”€ 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
```

## πŸ”„ Migration from Jekyll

The migration script (`npm run migrate`) handles:

1. **Blog Posts**: Copies from `_posts/` to `src/content/posts/`
2. **User Data**: Copies from `_data/users/` to `src/content/users/`
3. **Static Assets**: Copies from `assets/` and `shared/` to `public/`
4. **Data Files**: Copies JSON data to `src/data/`

### Manual Steps After Migration

1. Review frontmatter in migrated posts
2. Update any Jekyll-specific syntax (Liquid β†’ Astro)
3. Check image paths and references
4. Test all pages and features

## ✨ 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

## πŸ› οΈ Key Differences from Jekyll

| 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` |

## πŸ“ Content Management

### Adding a New Post

Create a new directory in `src/content/posts/`:

```
src/content/posts/2024-01-15-my-new-post/
β”œβ”€β”€ index.md
└── header.jpg
```

Frontmatter example:

```yaml
---
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"
---
```

### Adding a New Author

Create a YAML file in `src/content/users/`:

```yaml
# 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.
```

## 🚒 Deployment

### Firebase Hosting

```bash
# Build the site
npm run build

# Deploy to Firebase
firebase deploy --only hosting
```

### Environment Variables

For local development without API calls:

```bash
JEKYLL_ENV=local npm run dev
```

## 🀝 Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request

## πŸ“„ License

MIT License - see LICENSE file for details.