first template launch

This commit is contained in:
Michael DiLeo
2025-08-13 19:10:31 -05:00
parent 12eadac926
commit f23531dd70
11 changed files with 902 additions and 23 deletions

266
README.md
View File

@@ -1,3 +1,265 @@
# Keyboard-Vagabond-Web
# Keyboard Vagabond Web
static website landing page for Keyboard Vagabond
Static website landing page for the Keyboard Vagabond fediverse community. This project creates an optimized, containerized website for deployment on Kubernetes.
## 🌟 Features
- **Ultra-optimized CSS**: 94.4% reduction (154KB → 8.6KB) using PurgeCSS and cssnano
- **Minified HTML**: 16.3% size reduction with html-minifier-terser
- **Containerized**: Docker + nginx for Kubernetes deployment
- **Modern CSS Framework**: Built with Pico CSS
- **ARM64 Compatible**: Optimized for ARM-based Kubernetes clusters
## 🏗️ Project Structure
```
Keyboard-Vagabond-Web/
├── dist/ # 🚀 Production build (optimized)
│ ├── index.html # Minified landing page
│ ├── about.html # Minified about page
│ ├── css/styles.css # Optimized CSS (8.6KB)
│ └── assets/ # Static assets
├── public/ # 📝 Development files
├── build.sh # 🐳 Container build script
├── minify-build.js # 🗜️ CSS/HTML optimization
├── Dockerfile # 🐳 Container definition
├── nginx.conf # 🌐 Web server config
└── package.json # 📦 Dependencies & scripts
```
## 🚀 Quick Start
### Prerequisites
- **Node.js** (v16+ recommended)
- **Docker**
- **npm**
### Development
```bash
# Clone and setup
git clone <your-repo>
cd Keyboard-Vagabond-Web
npm install
# View development version
open public/index.html
```
### Build & Deploy
```bash
# Full production build (recommended)
npm run build
# to run locally
docker build -t keyboard-vagabond-local .
docker run -d -p 8080:80 --name test-container keyboard-vagabond-local
```
## 📋 Available Scripts
| Command | Description |
|---------|-------------|
| `npm run build` | **Full production build** - Optimize + containerize + push |
| `npm run dist-minified` | Create optimized `dist/` folder (CSS + HTML minified) |
| `npm run dist` | Create `dist/` folder with CSS optimization (auto-runs PurgeCSS) |
| `npm run build-basic` | Basic build using `dist` command |
| `npm run optimize-css` | CSS optimization only (PurgeCSS) |
| `npm run clean` | Clean all build artifacts |
| `./build.sh` | Build and push Docker container |
## 🚢 Deployment Guide
### Step 1: Prepare Environment
```bash
# Ensure you have access to the registry
docker login registry.keyboardvagabond.com
# Install dependencies
npm install
```
### Step 2: Build Production Assets
```bash
# Create optimized build (recommended - includes minification)
npm run dist-minified
# OR create basic optimized build
npm run dist
```
This creates a `dist/` folder with:
- ✅ CSS optimized from 154KB to 8.6KB (94.4% reduction)
- ✅ HTML minified (16.3% reduction)
- ✅ Production-ready static files
### Step 3: Container Build & Push
```bash
# Build and push container
./build.sh
```
Or use the complete pipeline:
```bash
# Full build pipeline
npm run build
```
### Step 4: Kubernetes Deployment
The container is pushed to `registry.keyboardvagabond.com/library/keyboard-vagabond-web:latest`
Example Kubernetes deployment:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: keyboard-vagabond-web
spec:
replicas: 2
selector:
matchLabels:
app: keyboard-vagabond-web
template:
metadata:
labels:
app: keyboard-vagabond-web
spec:
containers:
- name: web
image: registry.keyboardvagabond.com/library/keyboard-vagabond-web:latest
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "100m"
---
apiVersion: v1
kind: Service
metadata:
name: keyboard-vagabond-web
spec:
selector:
app: keyboard-vagabond-web
ports:
- port: 80
targetPort: 80
type: ClusterIP
```
## 🎯 Optimization Results
| Metric | Before | After | Improvement |
|--------|--------|-------|-------------|
| **CSS Size** | 154.6KB | 8.6KB | **94.4% reduction** |
| **HTML Size** | 14.7KB | 12.3KB | **16.3% reduction** |
| **Total Saved** | - | 148.4KB | **Massive performance gain** |
## 🔧 Development Workflow
### Making Changes
1. **Edit source files** in `public/`
2. **Test locally** by opening `public/index.html`
3. **Build optimized version**: `npm run dist-minified`
4. **Test production build**: `open dist/index.html`
5. **Deploy**: `npm run build`
### CSS Customization
- **Custom styles**: Edit `public/site-styles/style.css`
- **Pico CSS**: Uses green theme with custom variables
- **Optimization**: Automatically removes unused CSS on build
### Content Updates
- **Main page**: `public/index.html`
- **About page**: `public/about.html`
- **Assets**: Add to `public/assets/`
## 🐳 Container Details
- **Base Image**: `nginx:1.25-alpine`
- **Platform**: `linux/arm64` (ARM Kubernetes optimized)
- **Port**: 80
- **Health Check**: Built-in HTTP health endpoint
- **Security**: Runs as non-root nginx user
## 🏷️ Tech Stack
- **HTML/CSS**: Semantic HTML with Pico CSS framework
- **Build Tools**: PurgeCSS, cssnano, html-minifier-terser
- **Container**: Docker + nginx
- **Deployment**: Kubernetes on ARM64 cluster
- **Registry**: Harbor (registry.keyboardvagabond.com)
## 📦 Dependencies
```json
{
"devDependencies": {
"purgecss": "^6.0.0",
"cssnano": "^7.0.6",
"cssnano-cli": "^1.0.5",
"html-minifier-terser": "^7.2.0"
}
}
```
## 🚨 Troubleshooting
### Build Issues
```bash
# Clean rebuild
rm -rf dist/ node_modules/
npm install
npm run build
```
### Registry Access
```bash
# Login to registry
docker login registry.keyboardvagabond.com
# Verify access
docker pull registry.keyboardvagabond.com/library/keyboard-vagabond-web:latest
```
### Missing dist/ folder
The build script automatically creates `dist/` if missing. If you get errors:
```bash
# Manual dist creation
npm run dist-minified
```
## 📄 License
MIT License - See LICENSE file for details
## 🤝 Contributing
1. Fork the repository
2. Create feature branch
3. Make changes in `public/` directory
4. Test with `npm run dist-minified`
5. Submit pull request
---
**Ready to deploy the Keyboard Vagabond fediverse community! 🚀**