Skip to main content

§ masterplan.md

90s Internet Revival

A retro personal homepage with visitor counters, marquee text, webrings and guestbooks — but built with modern React.

All ideas
Retro

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)

  1. 01 PUBLIC Home — Who you are and what is new.
  2. 02 PUBLIC Links — Curated directory of the good web.
  3. 03 PUBLIC Guestbook — Moderated visitor messages.
  4. 04 PUBLIC Webring — Neighbouring sites and navigation.
  5. 05 PUBLIC About Me — The long personal page, plus a Now section.
  6. 06 AUTH Sign up — Create an account with email or a social provider.
  7. 07 AUTH Log in — Return to the account, with error and lockout states.
  8. 08 AUTH Reset password — Request a reset link and set a new password.
  9. 09 APP (signed in) Account settings — Profile, email, password, language and delete account.
  10. 10 PUBLIC Contact — Contact form plus real address, phone and email.
  11. 11 LEGAL & SYSTEM Privacy policy — What data is collected, why, and how to remove it.
  12. 12 LEGAL & SYSTEM Terms of service — Rules of use, liability and account termination.
  13. 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