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
- 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
- Node.js 14+ and npm
# Clone the repository
git clone https://github.com/brennanbrown/hyperpop.git
cd hyperpop
# Install dependencies
npm install
# Start the development server
npm run devVisit http://localhost:8080 to see your site!
# Build the site
npm run build
# Output will be in _site/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
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 */
}Update src/_data/site.json:
{
"title": "Your Site Name",
"description": "Your description",
"url": "https://yoursite.com",
"author": "Your Name"
}Modify src/_data/navigation.json to change menu items.
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.
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...Create a Markdown file in src/pages/:
---
layout: layouts/page.njk
title: "Page Title"
permalink: /page-slug/
---
Page content...Try the Konami Code on the homepage:
β β β β β β β β B A
Unlocks ultra glitch mode!
- Push to GitHub
- Connect to Netlify
- Build command:
npm run build - Publish directory:
_site
The netlify.toml is already configured!
The site works on any static hosting:
- Vercel
- GitHub Pages
- Cloudflare Pages
- Render
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-imagesWhat 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.htmlThe 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.
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
The dev server watches for changes:
- Templates (.njk, .md)
- CSS files
- JavaScript files
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
Built with accessibility in mind:
- Semantic HTML
- ARIA labels where needed
- Keyboard navigation support
prefers-reduced-motionsupport- WCAG AA color contrast
- Screen reader friendly
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.
- 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
- Eleventy - Static site generator
- Nunjucks - Templating
- Press Start 2P & Jersey 10 - Google Fonts
- Pexels & Pixabay - Free stock photos
- Late 90s/early 2000s web design (GeoCities, Angelfire)
- Vaporwave and Y2K aesthetics
- Hyperpop and alternative internet culture
- Windows 98 UI design
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!
MIT License - feel free to use this theme for your own projects!
See the LICENSE file for details.
Made with love by Brennan Brown
If you found this project helpful, consider giving it a star!
Built with love using 11ty and way too much neon.
Live Demo β’ Report Bug β’ Request Feature
