Dark Retro Webpage is a personal portfolio and blog built with React 18 and Vite, styled to look and feel like a Windows 98 desktop running on a dark CRT monitor. It is designed for developers and creatives who want a distinctive online presence that goes far beyond a generic portfolio template — every UI surface uses bevelled window chrome, phosphor-glow color tokens, pixel-display fonts, and animated scanline overlays that evoke late-90s computing. The result is a fully navigable, hash-routed React SPA with seven built-in pages, two reusable retro components, and a Tailwind-powered design system you can retheme in minutes.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dark-retro-webpage/llms.txt
Use this file to discover all available pages before exploring further.
Getting Started
Clone the repo, install dependencies, and run the dev server in under five minutes.
Home Page
Explore the landing page layout, hero marquee, and window composition.
Win98Window Component
Learn the props and usage of the core bevel window chrome component.
Theming & Customization
Swap color tokens, fonts, and bevel styles to make the aesthetic your own.
Key Features
Dark Retro Webpage ships with a focused set of features purpose-built for the retro aesthetic:- Windows 98 bevel window components — The
Win98Windowcomponent wraps any content in a title-bar chrome with minimize, maximize, and close buttons, all rendered with CSSbevel-windowinset/outset borders. - CRT scanline overlay — A full-viewport
.crt-overlaypseudo-element lays horizontal scanlines over the entire page, reinforcing the phosphor-screen illusion without JavaScript. - Framer Motion animated marquee — The
Marqueecomponent uses Framer Motion to scroll a configurable text ticker at a controllable speed, matching the<marquee>nostalgia of early web pages. - Hash-based routing — React Router is configured with a hash history (
/#/), so the site deploys as a fully static artifact with no server-side routing configuration required. - 7 built-in pages — Home, About, Projects, Skills, Writing, Case Studies, and Contact are all pre-built and ready to populate with your own content.
- 3 retro typefaces — Press Start 2P (pixel display), DM Mono (monospaced body), and Space Grotesk (clean sans-serif) are loaded from Google Fonts and mapped to
.font-display,.font-mono, and.font-sansutility classes. - Tailwind CSS with custom retro tokens — A set of CSS custom properties defines the dark neon palette and maps into Tailwind via the config, keeping all color usage consistent and easy to override.
Tech Stack
| Layer | Library / Tool | Version |
|---|---|---|
| UI framework | React | 18 |
| Build tool | Vite | latest |
| Styling | Tailwind CSS | latest |
| Animation | Framer Motion | latest |
| Routing | React Router | latest |
| Icons | lucide-react | 0.522.0 |
dist/ folder of pre-bundled static files ready for any CDN or static host.
Color Palette
All colors are defined as CSS custom properties on:root inside assets/main.css. Tailwind picks them up through the theme configuration, making them available as utility classes (e.g. bg-[var(--purple)]) throughout the app.
Custom CSS Classes
The stylesheet exposes a small set of semantic utility classes that go beyond what Tailwind provides out of the box:| Class | Purpose |
|---|---|
.bevel-window | Outer bevel border — simulates a raised Win98 window frame |
.bevel-button | Button bevel — inset shadow on :active to simulate a physical press |
.bevel-inset | Inset bevel — for recessed panels, input fields, and status bars |
.crt-overlay | Full-viewport scanline pseudo-element applied to the page wrapper |
.blink | CSS animation: blink keyframe — the classic blinking cursor effect |
.font-display | Sets font-family to Press Start 2P (pixel headings) |
.font-mono | Sets font-family to DM Mono (code, labels, metadata) |
.font-sans | Sets font-family to Space Grotesk (body text, UI copy) |