Scaffold a complete 1990s Geocities-themed static website in seconds.
βββββββ ββββββββ βββββββ ββββββββββββββββββββββββββββββββββββββ
ββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββ ββββββββββ βββ ββββββ βββ βββ βββββββββ ββββββββ
βββ βββββββββ βββ ββββββ βββ βββ βββββββββ ββββββββ
βββββββββββββββββββββββββββββββββββββ βββ βββββββββββββββββββ
βββββββ ββββββββ βββββββ ββββββββββ βββ βββββββββββββββββββ
geocities-boilerplate β¨ Welcome to 1996 β¨
geocities-boilerplate is a CLI tool that generates a fully self-contained, retro 1990s Geocities-style personal website. Think neon colors, blinking text, animated star trails, marquee banners, visitor counters, and guestbooks β all of it, generated instantly with a single command.
The generated site is pure static HTML, CSS, and vanilla JavaScript. No build tools, no frameworks, no dependencies. Just open index.html in any browser and relive the golden age of the web.
npx create-geocities-app my-site
Then open my-site/index.html in your browser. Thatβs it!
Pick your language or runtime β all produce the same site.
# one-shot, no install
npx create-geocities-app my-site
# or install globally
npm install -g create-geocities-app
create-geocities-app my-site
# one-shot with pipx (recommended)
pipx run create-geocities-app my-site
# or install permanently
pip install create-geocities-app
create-geocities-app my-site
gem install create-geocities-app
create-geocities-app my-site
cargo install create-geocities-app
create-geocities-app my-site
# global install
composer global require geocities-app/create-geocities-app
create-geocities-app my-site
# or as a project scaffold
composer create-project geocities-app/create-geocities-app my-site
# run without installing
deno run --allow-read --allow-write jsr:@geocities/create-app my-site
# or compile to a native binary first
deno compile --allow-read --allow-write --output create-geocities-app jsr:@geocities/create-app
./create-geocities-app my-site
# run without installing
go run github.com/sugardaddyapp/geocities-boilerplate/go@latest my-site
# or install the binary
go install github.com/sugardaddyapp/geocities-boilerplate/go@latest
create-geocities-app my-site
All variants accept the same flags:
| Flag | Meaning |
|---|---|
my-site |
Output directory name (default: my-geocities-site) |
-y / --yes |
Skip all prompts and use defaults |
Live demo: https://sugardaddyapp.github.io/geocities-boilerplate/
The demo is generated with all options enabled (neon theme, sparkle cursor, falling stars, all 5 pages). It is automatically rebuilt and deployed to GitHub Pages on every push to main.
When you run npx create-geocities-app my-site, youβll be walked through a series of prompts:
| # | Prompt | Type | Description |
|---|---|---|---|
| 1 | Site name | text | Your homepage title, e.g. CoolDude's Homepage |
| 2 | Your name | text | Displayed in headers, footers, and contact sections |
| 3 | Color theme | select | Choose from 5 retro color palettes (see below) |
| 4 | Extra pages | multi | About, Gallery, Guestbook, Cool Links |
| 5 | Cursor effect | select | Sparkle, Star Trail, Comet, Rainbow, or None |
| 6 | Falling effect | select | Stars, Snow, or None |
| 7 | Welcome alert | yes/no | Show a alert() greeting when the page loads |
| 8 | Auto-play music | yes/no | Play a Web Audio API 8-bit jingle on load |
| 9 | Fake high count | yes/no | Start visitor counter at ~10,000 (looks popular!) |
npx create-geocities-app my-site --yes
my-site/
βββ index.html β Homepage
βββ about.html β About Me (if selected)
βββ gallery.html β Photo Gallery with lightbox (if selected)
βββ guestbook.html β Guestbook (if selected)
βββ links.html β Cool Links (if selected)
βββ css/
β βββ style.css β Full retro stylesheet (theme-specific)
βββ js/
βββ main.js β All JS effects (counter, cursor, music, etc.)
Zero runtime dependencies in the generated output. Every file is self-contained and works offline.
Choose a theme during setup. Each theme controls background, text, link, and accent colors throughout the entire site.
| Theme | Background | Primary Text | Headings | Links | Feel |
|---|---|---|---|---|---|
neon |
#000000 |
#00FF00 |
#FFFF00 |
#FF00FF |
Hacker/Matrix vibes |
space |
#000033 |
#CCCCFF |
#FFDD00 |
#00FFFF |
Deep space explorer |
candy |
#FF69B4 |
#FFFFFF |
#FFFF00 |
#00FFFF |
Sweet and electric |
forest |
#003300 |
#CCFFCC |
#FFDD00 |
#99FF99 |
Dark enchanted forest |
windows |
#008080 |
#000000 |
#000080 |
#000080 |
Classic Windows 95 |
Every generated site includes a homepage with:
<marquee> tag)hue-rotate animation cycles through all colorstext-shadow breathes in and out| Effect | What it does |
|---|---|
| Sparkle β¨ | Random glitter glyphs (β¦, β§, β
, Β·) spawn at your cursor and float upward |
| Star Trail β | Yellow β characters follow the cursor and fade out with a scale-down animation |
| Comet βοΈ | An orange-to-white horizontal streak trails behind cursor movement |
| Rainbow π | Colored dots cycle through the full hue spectrum as you move the cursor |
| None | No cursor effect |
| Effect | What it does |
|---|---|
| Stars β | 60 colored star characters (β
) fall from top of screen with random sizes, speeds, and drift |
| Snow βοΈ | 40 white circular snowflakes drift downward with random horizontal drift |
| None | No falling effect |
| Effect | Details |
|---|---|
| Visitor counter | Odometer-style LCD digit boxes, animates on load, persists via localStorage |
| Live clock | HH:MM:SS display in the sidebar, updated every second |
| Marquee banner | CSS @keyframes scroll animation β pauses on hover |
| Blinking text | CSS @keyframes blink β used on NEW badges, bullet points, and decorations |
| Rainbow headings | CSS filter: hue-rotate() animation cycles through all colors |
| Neon glow pulse | text-shadow breathes in/out on all major headings |
| Spinning globe | π emoji spins continuously via CSS rotate animation |
| Under construction | Yellow/black diagonal-stripe caution tape with a spinning π§ icon |
| Page entry animation | Content fades and slides up on load |
| 8-bit music jingle | Square-wave melody via Web Audio API β plays on first interaction; toggle with the PLAY/STOP button |
| Matrix rain | Press M on any page to toggle a green Matrix-style canvas rain effect |
| Custom scrollbar | Themed scrollbar matching the color palette (Chrome/Edge/Safari) |
| Gallery lightbox | Click-to-expand image viewer with caption, close button, and ESC key support |
To host your generated site on GitHub Pages:
mainhttps://<username>.github.io/<repo-name>/geocities-boilerplate/
βββ .github/workflows/
β βββ deploy-demo.yml # Auto-deploys demo/ to GitHub Pages
βββ bin/
β βββ cli.js # CLI entry point with ASCII banner
βββ src/
β βββ generator.js # Core: reads templates, interpolates vars, writes files
β βββ prompts.js # Interactive prompts using `prompts` package
β βββ themes.js # 5 color palette definitions
βββ templates/ # Source templates (shared across all ports)
β βββ index.html
β βββ about.html
β βββ gallery.html
β βββ guestbook.html
β βββ links.html
β βββ css/style.css
β βββ js/main.js
βββ python/ # PyPI package (questionary, importlib.resources)
βββ ruby/ # RubyGems gem (tty-prompt)
βββ rust/ # Cargo crate (dialoguer, include_dir β single binary)
βββ php/ # Packagist/Composer package (Symfony Console)
βββ deno/ # JSR package (TypeScript, @std/fs)
βββ go/ # Go module (charmbracelet/huh, go:embed β single binary)
βββ demo/ # Pre-generated demo (not in npm bundle)
βββ scripts/
β βββ build-demo.js # Regenerates demo/ with all options enabled
βββ package.json
βββ PLAN.md # Full project plan and design decisions
βββ README.md
Templates use `` placeholders that are replaced by the generator. Key variables:
| Variable | Description |
|βββ-|ββββ-|
| | Site title from user prompt |
| | Author name from user prompt |
| | Human-readable theme name |
|, , etc. | Theme color values (CSS hex) |
| | Selected cursor effect key |
| | Selected falling effect key |
| | "true" or "false" |
| | `"true"` or `"false"` |
| | "true" or "false" |
| | Generated navigation `<a>` tags based on selected pages |
| | Current year |
git checkout -b feat/my-awesome-featuretemplates/, src/, or bin/node bin/cli.js test-site --yes && open test-site/index.htmlnpm run build:demo--theme <name> CLI flag to skip the theme prompt# Clone
git clone https://github.com/sugardaddyapp/geocities-boilerplate.git
cd geocities-boilerplate
# Install
npm install
# Test the CLI
node bin/cli.js my-test-site
# Rebuild demo
npm run build:demo
# Open demo
open demo/index.html
MIT Β© Jamey Baldwin
Also checkout my other projects: Best Sugar Daddy Apps Best Sugar Daddy Apps 2026 Best Sugar Daddy Apps NPM Best Sugar Daddy Apps Socket
Best viewed in Netscape Navigator 4.0 at 800Γ600 resolution.