Skip to content

McDevon/timeline

Repository files navigation

Timeline

Timeline is a tool to visualise historical timeframes and events, and their relations. Events can be added and customised for different needs, for example learning history, investigating timeframes, matching lives in a family tree to historical events, visualising fictional timelines, designing story timelines, etc.

Examples

Important events in the Roman Empire and the Eastern Roman Empire

Example timeline

Examining relations of different events in a TV and movie series. This data is available in public/star_trek_events.json.

Example timeline

Visualising the timelines of different global crises. This data is available in public/global_crises.json.

Example timeline

Note that this tool is not meant for project planning or to be used as a Gantt chart tool. The main goal is to be useful for personal history learning and for fictional story development and worldbuilding.

Features

Current features include

  • Zoomable and scrollable timeline
  • Add, edit, and remove events, set default events per deployment
  • Point events, ranged events, and events with no certain beginnning or end dates
  • Ongoing events with no known end date
  • Additional event info shown in a tooltip bubble
  • Nested structure for organising events
  • Hide, collapse, and reorder events
  • Selection range to highlight time ranges and quickly show distances between events
  • Undo and redo
  • Export and import event data as .json files
  • Persist state in browser using IndexedDB

Setup

The default events are loaded from public/events.json. After initial load, the browser uses local state and does not reload from the file unless default events are reloaded by the user.

If events.json is not found, the application uses events.example.json as a fallback. Any json file in the repository's public directory can be used as the initial events.json by changing filename.

If you want the application to open with empty canvas, either remove both json files or add an events.json with an empty array.

Running

Requires Node.js and pnpm. Dependencies have been kept at minimum.

To start a local development server:

pnpm install
pnpm dev

To build for production:

pnpm build
pnpm preview

Development

Documentation-first development practice. The LLM tool is used to write and maintain documentation before implementing new features. Documentation is more meant for the LLM agent than for human readers.

Contributing

All contributions welcome. If you end up testing the project, bugs and suggestions can be added to GitHub Issues.

License

This codebase is released under the MIT License.

About

How often do you think about the Roman Empire? A visualisation tool for historical events and time ranges.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors