Skip to content

JasonWarrenUK/epoch

Repository files navigation

Epoch

Banner Image

See history through someone's eyes.

Epoch is an interactive historical visualisation tool. Create a fictional character — give them a name, a birthplace, a lifetime — and discover what historical events they would have lived through. It transforms abstract history into personal narrative by pulling real events from Wikipedia and presenting them in a collapsible, browsable timeline.

What It Does

  • Character creation — name, birth year, death year, and location
  • Wikipedia integration — fetches events from year-specific and country-specific Wikipedia articles
  • Significance ranking — scores events using Wikidata sitelinks, entity-type detection, named-event prefixes, and link density
  • Two-level collapsible timeline — decades collapse to years, years collapse to individual events; the birth decade starts expanded
  • Category badges — events are tagged by type (conflict, upheaval, political, disaster, cultural)
  • Lifetime summary — top events from childhood, adulthood, and old age
  • Oral history — stories the character would have heard from elders at age 15
  • Content filtering — strips sports results, malformed markup, citation fragments, and low-quality entries
  • API caching — 24-hour TTL with batched requests to respect rate limits

Current State

This is a working application. The core loop — create a character, fetch events, browse the timeline — is functional and polished.

  • SvelteKit frontend and server-side form actions
  • Wikipedia API integration with country-specific and generic fallbacks
  • Event parsing, filtering, and significance scoring
  • Collapsible timeline with decade/year grouping
  • Milestone highlighting (birth year, 18th birthday, death year)
  • Lifetime summary and oral history features
  • Light warm theme (ivory, saddlebrown, olive) with Playfair Display + Source Sans 3
  • Responsive layout for mobile and desktop
  • Error recovery (form input preserved on failure, one-click retry)
  • Test suite for event filtering and scoring
  • Dedicated backend API (currently using SvelteKit server routes)
  • Database for persisting characters and sessions
  • User authentication and saved profiles

Tech Stack

Development

npm install
npm run dev      # start dev server
npm run test     # run test suite
npm run build    # production build

Deployment

The app deploys to Vercel using @sveltejs/adapter-vercel. Vercel auto-detects SvelteKit, so connecting the repository and deploying is enough — no extra configuration is required. The server-side form action runs as a Vercel serverless function.

License

Apache 2.0

About

Pick a historical event, create a character & find out what else they saw in their lifetime

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors