§ masterplan.md
90s Internet Revival
A retro personal homepage with visitor counters, marquee text, webrings and guestbooks — but built with modern React.
01
App overview and objectives
A personal homepage in the spirit of the early web: hand-made, link-heavy, with a guest book and a webring, but built on modern, accessible, fast foundations. Nostalgia as craft, not as pastiche.
02
The problem worth solving
The social-media era replaced personal sites with profiles nobody owns. A personal homepage restores ownership, and the retro form gives people permission to be weird and personal again.
03
Target audience
- Primary — Individuals who want a personal corner of the web that is genuinely theirs.
- Secondary — Visitors discovering people through webrings rather than algorithms.
04
Roles and permissions
- Visitor — read-only public pages, can sign up.
- Member — owns their own records, cannot see other users' data.
05
Core features
- Hand-authored pages with a visible 'last updated' date
- Curated links page organised by topic, in the old directory spirit
- Guest book with moderation
- Webring participation widget with previous/next/random
- Now page describing what the owner is currently doing
- 88x31 button collection and a button of your own to share
Deliberately later
- RSS feed and reader
- Small forum or shoutbox
- Personal wiki section
06
Technical stack
Static site with a tiny serverless endpoint for the guest book.
Why: Almost everything is static; one small dynamic feature does not justify a server, and static hosting can last a decade unattended.
Alternatives: Full CMS (easier posting, ongoing maintenance) or hosted profile services (zero effort, defeats the purpose).
07
Conceptual data model
Page — slug, title, body, updated_at
Link — title, url, category, note, added_at
GuestbookEntry — name, site, message, approved, created_at
RingMember — site, name, order, status
08
Integrations
- Serverless function plus a small datastore for the guest book
- Webring service or a shared JSON list
- RSS generation
09
UI design principles
- Period-accurate details: pixel or bitmap type, dithered textures, chunky borders.
- Nostalgia must not cost usability — keep tap targets and contrast modern.
- Sound and animation are opt-in, never autoplay.
10
Security considerations
- Guest book entries moderated and rate-limited; links are nofollow to stop spam value.
- No trackers or third-party scripts.
- Escape all user content; the guest book is the only writeable surface.
11
Development phases
Phase 1 — Prove the core
- — Hand-authored pages with a visible 'last updated' date
- — Curated links page organised by topic, in the old directory spirit
- — Guest book with moderation
- — Static content and design system in place
- — Basic analytics
Phase 2 — Make it real
- — Webring participation widget with previous/next/random
- — Now page describing what the owner is currently doing
- — 88x31 button collection and a button of your own to share
- — Accounts, sign-in and password reset
- — Empty, loading and error states everywhere
Phase 3 — Polish and launch
- — Performance, accessibility and SEO pass
- — Legal pages, contact route and 404 handling
- — Wire up: Serverless function plus a small datastore for the guest book
- — Wire up: Webring service or a shared JSON list
Phase 4 — Grow
- — RSS feed and reader
- — Small forum or shoutbox
- — Personal wiki section
12
Challenges and solutions
Risk — Guest book spam
Solution — Moderation queue, honeypot field, rate limiting and link limits per entry.
Risk — Retro styling harms accessibility
Solution — Keep contrast, focus states and semantic HTML modern behind the vintage skin; make blinking and animation opt-in.
Risk — Site goes stale
Solution — The Now page and a visible updated date create gentle pressure to keep it alive.
13
Future expansion
- Template kit for others
- Shared directory of personal sites
- Yearly zine of member pages
14
Page list (13 pages)
- 01 PUBLIC Home — Who you are and what is new.
- 02 PUBLIC Links — Curated directory of the good web.
- 03 PUBLIC Guestbook — Moderated visitor messages.
- 04 PUBLIC Webring — Neighbouring sites and navigation.
- 05 PUBLIC About Me — The long personal page, plus a Now section.
- 06 AUTH Sign up — Create an account with email or a social provider.
- 07 AUTH Log in — Return to the account, with error and lockout states.
- 08 AUTH Reset password — Request a reset link and set a new password.
- 09 APP (signed in) Account settings — Profile, email, password, language and delete account.
- 10 PUBLIC Contact — Contact form plus real address, phone and email.
- 11 LEGAL & SYSTEM Privacy policy — What data is collected, why, and how to remove it.
- 12 LEGAL & SYSTEM Terms of service — Rules of use, liability and account termination.
- 13 LEGAL & SYSTEM 404 not found — Friendly dead end with search and links back.
15
Page map
PUBLIC AUTH APP (signed in) LEGAL & SYSTEM ──────────── ───────────────── ─────────────────── ─────────────────── ├─ Home ├─ Sign up └─ Account settings ├─ Privacy policy ├─ Links ├─ Log in ├─ Terms of service ├─ Guestbook └─ Reset password └─ 404 not found ├─ Webring ├─ About Me └─ Contact key flows: Home ──▶ Links Home ──▶ Guestbook Webring ──▶ Home About Me ──▶ Guestbook
