| .github | ||
| docs | ||
| scripts | ||
| src | ||
| .eleventy.js | ||
| .env.example | ||
| .gitignore | ||
| hyperpop-demo.png | ||
| IMAGE_WORKFLOW.md | ||
| LICENSE | ||
| netlify.toml | ||
| package.json | ||
| PROJECT_SUMMARY.md | ||
| QUICKSTART.md | ||
| README.md | ||
HYPERPOP 🌈
A Y2K-inspired static blog theme built with Eleventy. Features authentic late 90s/early 2000s web aesthetics with modern performance and accessibility.
Live Demo | Documentation | Getting Started
✨ Features
- 🎨 Y2K Aesthetics - Neon colors, glitch effects, holographic borders, and CRT vibes
- ⚡ Lightning Fast - Static site generation with optimized assets
- 🎭 Pure CSS Magic - Scan lines, chromatic aberration, animated gradients
- 🎮 Interactive Elements - Custom cursor trail, Konami code easter egg, client-side search
- 📱 Fully Responsive - Beautiful on all devices with touch optimization
- ♿ Accessible - WCAG AA compliant with reduced motion support
- 🔍 Client-Side Search - Fast, privacy-respecting search with JSON index
- 📊 Stats Counter - localStorage-based page view tracking
- 📡 Offline Support - Service worker for offline capability
- 🎯 SEO Optimized - Meta tags, sitemap, RSS feed
🚀 Quick Start
Prerequisites
- Node.js 14+ and npm
Installation
# Clone the repository
git clone https://github.com/brennanbrown/hyperpop.git
cd hyperpop
# Install dependencies
npm install
# Start the development server
npm run dev
Visit http://localhost:8080 to see your site!
Build for Production
# Build the site
npm run build
# Output will be in _site/
📁 Project Structure
hyperpop/
├── src/
│ ├── _includes/
│ │ ├── layouts/ # Page layouts
│ │ │ ├── base.njk
│ │ │ ├── post.njk
│ │ │ └── page.njk
│ │ ├── components/ # Reusable components
│ │ │ ├── header.njk
│ │ │ ├── footer.njk
│ │ │ ├── post-card.njk
│ │ │ ├── glitch-text.njk
│ │ │ └── neon-button.njk
│ │ └── partials/ # Partial templates
│ │ ├── head.njk
│ │ └── scripts.njk
│ ├── _data/ # Global data files
│ │ ├── site.json
│ │ └── navigation.json
│ ├── assets/
│ │ ├── css/
│ │ │ └── styles.css # Main stylesheet
│ │ └── js/
│ │ ├── main.js # Core functionality
│ │ ├── cursor.js # Cursor trail effect
│ │ ├── glitch.js # Glitch animations
│ │ ├── konami.js # Easter egg
│ │ ├── stats.js # Stats counter
│ │ └── search.js # Client-side search
│ ├── posts/ # Blog posts (Markdown)
│ ├── pages/ # Static pages
│ ├── index.njk # Homepage
│ ├── feed.njk # RSS feed
│ ├── search-index.njk # Search index JSON
│ └── sw.js # Service worker
├── scripts/
│ └── generate-sitemap.js # Sitemap generator
├── .eleventy.js # Eleventy configuration
├── package.json
└── netlify.toml # Netlify deployment config
🎨 Customization
Colors
Edit the CSS variables in src/assets/css/styles.css:
:root {
--neon-purple: #9D00FF;
--hot-pink: #FF10F0;
--cyber-blue: #00F0FF;
--acid-green: #39FF14;
/* ... more colors */
}
Site Information
Update src/_data/site.json:
{
"title": "Your Site Name",
"description": "Your description",
"url": "https://yoursite.com",
"author": "Your Name"
}
Navigation
Modify src/_data/navigation.json to change menu items.
Typography
The site uses Google Fonts by default:
- Press Start 2P - Pixel headers
- VT323 - Monospace terminal
- Space Mono - Body text
- Orbitron - Futuristic accents
Change fonts in src/_includes/partials/head.njk.
📝 Creating Content
New Blog Post
Create a new Markdown file in src/posts/:
---
title: "Your Post Title"
date: 2025-10-11
tags:
- tag1
- tag2
category: "category-name"
featured_image: "https://example.com/image.jpg"
excerpt: "Brief description"
color_scheme: "#FF10F0"
layout: "layouts/post.njk"
---
Your content here...
New Page
Create a Markdown file in src/pages/:
---
layout: layouts/page.njk
title: "Page Title"
permalink: /page-slug/
---
Page content...
🎮 Easter Eggs
Try the Konami Code on the homepage:
↑ ↑ ↓ ↓ ← → ← → B A
Unlocks ultra glitch mode!
🚢 Deployment
Netlify (Recommended)
- Push to GitHub
- Connect to Netlify
- Build command:
npm run build - Publish directory:
_site
The netlify.toml is already configured!
Other Platforms
The site works on any static hosting:
- Vercel
- GitHub Pages
- Cloudflare Pages
- Render
🖼️ Image Management
Get Y2K Aesthetic Images
The project includes a custom image scraper for downloading vaporwave/cyberpunk images:
# Download Y2K aesthetic images
npm run scrape-images
# Copy images to site and update posts
npm run integrate-images
npm run update-images
What it does:
- 🎨 Downloads images from Unsplash, Pexels, Pixabay
- 🔍 Searches for: vaporwave, cyberpunk, glitch art, etc.
- 🌈 Filters by your color palette (purple, pink, cyan)
- 📝 Saves photographer credits automatically
- 🖼️ Creates an HTML gallery to preview
Preview images before using:
open y2k_moodboard/gallery.html
Setting Up API Keys
The image scraper uses free API keys from image providers. To set them up:
-
Copy the example environment file:
cp .env.example .env -
Get free API keys from:
- Pexels: https://www.pexels.com/api/ (free, no credit card)
- Pixabay: https://pixabay.com/api/docs/ (free, no credit card)
-
Add your keys to
.env:PEXELS_API_KEY=your_pexels_key_here PIXABAY_API_KEY=your_pixabay_key_here -
Run the scraper:
npm run scrape-images
Note: The .env file is gitignored to keep your API keys private. Never commit API keys to git!
See scripts/README.md for detailed documentation.
🔧 Development
Available Scripts
npm run dev- Start development servernpm run build- Build for productionnpm run debug- Build with debug outputnpm run clean- Remove build outputnpm run scrape-images- Download Y2K aesthetic imagesnpm run integrate-images- Copy images to sitenpm run update-images- Update posts with images
Watch Mode
The dev server watches for changes:
- Templates (.njk, .md)
- CSS files
- JavaScript files
🎯 Performance
The site is optimized for speed:
- Static HTML generation
- Critical CSS inlined
- Lazy loading images
- Service worker caching
- Minified assets (in production)
- WebP images with fallbacks
Target Lighthouse scores:
- Performance: 90+
- Accessibility: 100
- Best Practices: 90+
- SEO: 100
♿ Accessibility
Built with accessibility in mind:
- Semantic HTML
- ARIA labels where needed
- Keyboard navigation support
prefers-reduced-motionsupport- WCAG AA color contrast
- Screen reader friendly
🤝 Contributing
Contributions are welcome! Whether it's:
- 🐛 Bug fixes
- ✨ New features
- 📝 Documentation improvements
- 🎨 Design enhancements
Please feel free to open an issue or submit a pull request.
Development Guidelines
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📝 Credits
Built With
- Eleventy - Static site generator
- Nunjucks - Templating
- Press Start 2P & Jersey 10 - Google Fonts
- Pexels & Pixabay - Free stock photos
Inspiration
- Late 90s/early 2000s web design (GeoCities, Angelfire)
- Vaporwave and Y2K aesthetics
- Hyperpop and alternative internet culture
- Windows 98 UI design
💖 Support This Project
If you find this theme helpful, please consider supporting its development:
Your support helps me:
- 🛠️ Maintain and improve this theme
- 🎨 Create more open-source projects
- 📚 Write tutorials and documentation
- ☕ Stay caffeinated while coding
Even a small contribution makes a huge difference! Thank you! 💜
📄 License
MIT License - feel free to use this theme for your own projects!
See the LICENSE file for details.
Made with 💜 by Brennan Brown
If you found this project helpful, consider giving it a ⭐!
Built with 💜 using 11ty and way too much neon.
