RC: (upload) astro initial structure
This commit is contained in:
108
README.md
Normal file
108
README.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# rack::log — Sysadmin Blog
|
||||
|
||||
AMG Petronas green themed personal blog built with Astro.
|
||||
|
||||
## Stack
|
||||
|
||||
- **Astro 4** — static site framework
|
||||
- **MDX** — blog posts in Markdown with component support
|
||||
- **Content Collections** — typed blog frontmatter
|
||||
- **GSAP** (optional) — parallax scroll
|
||||
- Zero CSS frameworks — all custom, CSS variables
|
||||
|
||||
## Quick Start (WSL / Debian)
|
||||
|
||||
```bash
|
||||
cd sysadmin-blog
|
||||
npm install
|
||||
npm run dev
|
||||
# → http://localhost:4321
|
||||
```
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── components/
|
||||
│ ├── ParallaxHero.astro ← rack corridor parallax landing hero
|
||||
│ ├── RecentPosts.astro ← last 3 blog posts (auto-fetched)
|
||||
│ └── HomelabStatus.astro ← live metrics widget (demo + real API)
|
||||
│
|
||||
├── content/
|
||||
│ ├── config.ts ← blog collection schema
|
||||
│ └── blog/
|
||||
│ ├── day-001-*.md ← Day 1 entry
|
||||
│ ├── day-002-*.md ← Day 2 entry
|
||||
│ └── day-003-*.md ← Day 3 entry
|
||||
│
|
||||
├── layouts/
|
||||
│ ├── BaseLayout.astro ← nav + footer wrapper
|
||||
│ └── PostLayout.astro ← blog post with TOC sidebar
|
||||
│
|
||||
├── pages/
|
||||
│ ├── index.astro ← landing (hero + posts + homelab)
|
||||
│ ├── blog/
|
||||
│ │ ├── index.astro ← all posts listing
|
||||
│ │ └── [slug].astro ← dynamic post page
|
||||
│ ├── homelab.astro ← architecture diagram + live metrics
|
||||
│ ├── hardware.astro ← full hardware inventory
|
||||
│ └── 404.astro
|
||||
│
|
||||
└── styles/
|
||||
└── global.css ← all CSS variables, typography, base
|
||||
```
|
||||
|
||||
## Writing a New Blog Post
|
||||
|
||||
Create `src/content/blog/day-NNN-your-title.md`:
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: "Day 4 — Setting Up the Monitoring Stack"
|
||||
description: "Netdata → VictoriaMetrics → Grafana"
|
||||
pubDate: 2024-11-22
|
||||
day: 4
|
||||
tags: ["monitoring", "grafana", "victoriametrics", "netdata"]
|
||||
---
|
||||
|
||||
Your content here...
|
||||
```
|
||||
|
||||
The `day` field is optional — use it for the numbered series entries.
|
||||
|
||||
## Connecting Live Homelab Metrics
|
||||
|
||||
In `src/components/HomelabStatus.astro` and `src/pages/homelab.astro`:
|
||||
|
||||
1. Set `USE_DEMO = false`
|
||||
2. Set `NETDATA_BASE` to your Netdata URL (e.g. `http://netdata.int.h0melab.uk`)
|
||||
3. The fetch calls use the Netdata REST API v1 — adapt to your endpoint structure
|
||||
|
||||
For a custom FastAPI endpoint (like your FC Porto fixture scraper pattern):
|
||||
|
||||
```typescript
|
||||
// Example: GET /api/homelab/status
|
||||
const data = await fetch('https://api.h0melab.uk/homelab/status').then(r => r.json());
|
||||
```
|
||||
|
||||
## Colour Variables
|
||||
|
||||
All theme colours live in `src/styles/global.css`:
|
||||
|
||||
```css
|
||||
--petronas-teal: #00D2BE
|
||||
--petronas-green: #00A19C
|
||||
--petronas-dark: #007A76
|
||||
--bg-void: #050A0A
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
```bash
|
||||
npm run build # outputs to dist/
|
||||
# Deploy dist/ to any static host: Cloudflare Pages, Netlify, Vercel, nginx
|
||||
```
|
||||
|
||||
For Cloudflare Pages (recommended for rcosta.uk):
|
||||
- Build command: `npm run build`
|
||||
- Output directory: `dist`
|
||||
Reference in New Issue
Block a user