• Stars
    star
    262
  • Rank 156,136 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 13 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Create and share elegant timelines and timemaps fast

TimeMapper

Create beautiful timelines and timemaps from Google Spreadsheets.

Built by members of Open Knowledge Foundation Labs.

See it in action at https://timemapper.okfnlabs.org/

Install

Local Install

This is a Node web-app built using express.

Install Node (>=0.8 suggested) and npm then checkout the code:

git clone https://github.com/okfn/timemapper

Then install the dependencies:

cd timemapper
npm install .
# for some vendor modules
git submodule init && git submodule update

Finally, you may wish to set configuration options such as database name, port to run on, etc. To do this:

# copy the settings.json template to settings.json
cp settings.json.tmpl settings.json
# then edit as necessary

Now you can run the app:

node run.js

To view the site, open localhost:3000 in a browser.

Configuration

The default configuration can be found in lib/config.js. You can override this in a couple of ways:

  1. Create a settings.json with specific values. settings.json has the same form as nconf.defaults object in in lib/config.js.

  2. Set specific environment variables. The ones you can set are those used in nconf.defaults. This useful for deployment on Heroku where environment variables are default way to configure.

Deploy (to Heroku)

Standard stuff:

heroku create timemapper
git push heroku

You'll also need to set config. Suggest creating a .env file:

TWITTER_KEY=...
...

Then push it:

heroku config:push

Overview for Developers

  • NodeJS app but very frontend JS oriented
  • Most of "presentation" including visualizations are almost entirely in frontend javascript
  • Backend storage of "metadata" is onto s3 or local filesystem with storage of actual data (data for timelines/timemaps etc) into google docs spreadsheets

Backend Storage

Layout follows frontend urls:

/{username}/data.json                     # user info
/{username}/{dataview}/datapackage.json   # config for the dataview
/{username}/{dataview}/... other files    # (none atm but possibly we store data locally in future)

Data View info

Stored in datapackage.json following Data Package spec. Key points:

  • name, title, licenses etc as per Data Package

  • info on google doc data source stored in first resources item in format compatible with Recline:

      resources: [{
        backend: 'gdocs',
        url: 'gdocs url ...'
      }]
    
  • additional config specific to timemapper in item call tmconfig. We will be gradually adding values here but at the moment have:

      tmconfig: {
        dayfirst: false     # are dates dayfirst
        startfrom: start    # start | end | today
        layout: timemap     # timemap | map | timeline
        timelineJSOptions:  # options to pass to timelinejs
      }
    

Translation info

TimeMappers uses i18n-abide with gettext.

It currently supporte loclaes en-US, zh-TW locales.

To update po files after modify views/*.html

$ npm run update-po

To re-compile translation json files.

$ npm run gen-po-json

for more details, please read Mozilla - Localization in Action.

User Stories

Alice: user, who wants to create timelines, timemaps etc Bob: visitor (and potential user) Charlie: Admin of the website

Register / Login

[ip] As Alice I want to signup (using Twitter?) so that I have an account and can login

As Alice I want to login (using Twitter?) so that I am identified to the system and the Vizs I create are owned by me

As Alice I want to see a terms of service when I signup so that I know what the licensing arrangements are for what I create and do

Create and Edit Views

As Alice I want to create a timemap Viz quickly from a google spreadsheet ...

  • I want to set the title and "slug" for my timemap and have a nice url /alice/{name-of-viz}
  • I want to choose a license (or full copyright) - default license applied. Licenses will be open licenses or full copyright.
  • I want to create an animated timemap in which the time and map interact ...
  • I want to add a description (and attribution) to my Viz (perhaps now or later ...)

As Alice I want to edit my Viz later after I've created it (e.g. change the title) so that I can correct typos or update info to reflect changes

As Alice I want to create a timeline Viz quickly from my google spreadsheet so that I can share it with others

As Alice I want to create a timemap / timeline quickly from a gist so that I can share it with others

  • Structure of gist??

As Alice I want to create a map quickly from a google spreadsheet ...

As Alice or Bob I want to embed my Viz in a website elsewhere so that people can see it there

As Alice I want to watch a short (video) tutorial introducing me to how this works so that I have help getting started

As Alice or Bob I want to create a Viz without logging in so that I can try out the system without signing up

  • Is this necessary if sign up is really easy?

Forking

I want to "fork" someone elses visualization so that I can modify and extend it

Listing and Admin

[x] As Alice I want to list the "Vizs (viz?)" I've created

[ip] As Bob I want to know what I can do with this service before I sign up so that I know whether it is worth doing so

  • Some featured timemaps ...

[x] As Bob I want to see all the Vizs created by Alice so that I can see if there some I like

  • Most recent items ?

As Bob I want to see recent activity by Alice to get a sense of the cool stuff she has been doing so that I know to look at that stuff first

As Alice I want to delete a Viz so that it is not available anymore (because I don't want it visible)

As Alice I want to undo deletiion of a Viz that I accidentally deleted so that it is available again

As Alice I want to revert to previous versions of my Viz so that I can see what it was like before

As Alice I want to "hide" a Viz so that it is not visible to others (but is visible to me)

  • Is this hidden in the listing or more than that? What about people who already have the url

As Charlie I want to be able to delete someone's Viz (or account) so that it no longer is available (because they want it down or someone else does etc)

Access Control

As Alice I want to allow a Viz built on a private spreadsheet in google docs so that I don't have to make that spreadsheet public to create a Viz of it

As Alice I want to restrict access to some of my Vizs so that only I can see them

As Alice I want to restrict access to some of my Vizs but allow specific other people to view it so that other people than me can see it

Misc

As Bob I want to find out about the website and project so that I get a sense of who's behind it / whether its trustworthy / whether there is other cool stuff they do

As Alice I want to know how many people have viewed my Viz so that I know whether other people are interested

As Bob (? may need to be logged in) I want to "star" a Viz I come across so that I recognize its value and store it for finding later

Asides

  • config
    • layout of the map / timeline (stacked versus side by side)
    • date parsing
  • 2 types of data source - gists as well as google docs
    • data package structure in gists!

License, Contributors and History

This is an open-source project licensed under the MIT License - see LICENSE file for details.

Contributors include:

We also use a whole bunch of fantastic open-source libraries, including:

First version was Microfacts / Weaving History http://weavinghistory.org which ran from 2007-2010.

More Repositories

1

messytables

Tools for parsing messy tabular data. This is now superseded by https://github.com/frictionlessdata/tabulator-py
HTML
389
star
2

facetview

FacetView is a pure javascript frontend for ElasticSearch.
JavaScript
292
star
3

opendatahandbook

Open Data Handbook v2
SCSS
202
star
4

handbook

Guides and introductions for participating in Labs and some of its projects.
CSS
169
star
5

opendataeditor

The Open Data Editor (ODE) is a no-code application to explore, validate and publish data in a simple way. Forever free and open source project powered by the Frictionless Framework.
TypeScript
158
star
6

bubbletree

Radial Bubble Tree Visualization
JavaScript
153
star
7

textus

A toolbox and web application for working with and presenting textual material from Shakespeare to Schopenhauer, and letters to literature.
JavaScript
148
star
8

dataexplorer

View, visualize, clean and process data in the browser.
JavaScript
146
star
9

opendatasurvey

The Open Data Survey application
JavaScript
137
star
10

bibserver

BibServer is open-source software what makes it easy to publish, manage and find bibliographies. BibServer is RESTful and web-friendly.
Python
126
star
11

labs-opd

HTML
123
star
12

dataportals.org

Open Data Portals and Sites around the world
HTML
116
star
13

reconcile-csv

A simple OpenRefine reconciliation service that runs on top of a CSV file
Clojure
113
star
14

opendefinition

Open Definition source
HTML
109
star
15

website

The code behind okfn.org
Python
106
star
16

dataconverters

Python library and command line tool for converting data from one format to another
Python
99
star
17

timeliner

[DEPRECATED] See new TimeMapper repo https://github.com/okfn/timemapper
JavaScript
93
star
18

opendataday

Open Data Day website
HTML
86
star
19

docker-ckan

Docker images and Docker Compose setup for CKAN
Shell
82
star
20

okfn.github.com

Open Knowledge Labs website (and general issue tracker).
Jupyter Notebook
78
star
21

elasticsearch.js

A simple javascript library for working with ElasticSearch
JavaScript
78
star
22

wikipediajs

A small Javascript library for accessing information in Wikipedia articles such as dates, places, abstracts and more
JavaScript
77
star
23

dataproxy

Web application (targeted at appengine) to proxy data from certain data types into a JSON-P data type so that users can create mashups against remote data sets.
Python
74
star
24

opendatahandbook-old

Open Data Handbook
HTML
68
star
25

infra

Repository for OKF infrastructure and systems administration tools
Python
64
star
26

opd-product-browser-web

A repository of code, documentation and database scripts for the Open Product Data project.
PHP
64
star
27

licenses

Open source and open knowledge (data and content) licenses together with API and web service.
JavaScript
64
star
28

ckan.js

Javascript client library for CKAN with support for Node and the browser. It also provides a Recline compatible backend.
JavaScript
54
star
29

vdm

Versioned domain model. Python library for revisioning/versioning of databases.
Python
41
star
30

webstore

webstore is a web-api enabled datastore backed onto sql databases especially sqlite. It supports the RESTful JSON APIs standard to nosql dbs like CouchDB, MongoDB, Riak but with the power, reliability and familiarity of SQL and RDBMS.
Python
39
star
31

opendataindex

Open Data Index website
CSS
37
star
32

opd-product-browser-android

Android application for the Open Product Data project
Java
36
star
33

coding-standards

Open Knowledge coding standards and style guide.
35
star
34

ofs

A simple python-based abstraction library for the various blob storage out there including s3, google storage and local disk.
Python
32
star
35

listify

Take a Google Doc spreadsheet and turn it into a beautiful, searchable listing on your website - embed in seconds into Wordpress, simple HTML or ...
HTML
28
star
36

dashboard

Dashboard for communities: what's up, who's here and what are they working on. Designed for use at the Open Knowledge Foundation.
CoffeeScript
27
star
37

sqlaload

REPLACED BY dataset
Python
26
star
38

ckanclient-deprecated

DEPRECATED - please see https://github.com/ckan/ckanapi. [Python client library for CKAN]
Python
25
star
39

docker-rt

A full installation of RT in a docker image. To be used as a base for customisation.
Shell
22
star
40

bad-data

Examples of bad data, especially from government.
HTML
22
star
41

ddjbook

Data Driven Journalism Handbook
JavaScript
22
star
42

data-catalog-spec

Data Catalog Specification (Schema and Protocol)
Python
20
star
43

ckanjs-deprecated

DEPRECATED - see https://github.com/okfn/ckan.js [Javascript client library and app for CKAN data hub software]
JavaScript
20
star
44

gobetween

A simple app for proxying requests with CORS support. Map any domain to any URI as a base path, or, use a dedicated endpoint for proxying any URI.
JavaScript
20
star
45

helmut

A generic Google Refine Reconciliation API implementation
Python
19
star
46

oed

Extraction and Interface for Oxford English Dictionary (OED) 1st Edition
Python
19
star
47

datautil

Utilities for working with data.
Python
18
star
48

shakespeare-material

An open (free to use, reuse and redistribute) set of Shakespeare material including plays, poems, images and scripts.
Python
17
star
49

bibjson

BibJSON spec and website
HTML
17
star
50

measure

Measure is scripts and conventions to build KPI dashboards for projects.
Python
17
star
51

textus-viewer

A sophisticated HTML-based viewer for texts
JavaScript
17
star
52

opendatacommons.org

Open Data Commons licenses and website
SCSS
17
star
53

handbook-theme

Open Knowledge standard "nice" jekyll theme - used for OpenDataHandbook etc
CSS
16
star
54

datadigitizer

Crowd-sourcing digitization of data
JavaScript
15
star
55

pdcalc

Public Domain Calculators - determine what is public domain and what's not.
Python
14
star
56

recline.backend.gdocs

Javascript library for accessing Google Docs Spreadsheet - and also functions as a Recline backend!
JavaScript
14
star
57

rtei

Right to Education Index website
Python
14
star
58

ckanext-s3filestore

Use Amazon S3 as a filestore for CKAN
Python
14
star
59

yourtopia

Web app for crowdsourcing preferences about index weighting such as the Human Development Index. Powers the YourTopia site - Global Development beyond GDP.
JavaScript
14
star
60

ckanext-wordpresser

Wordpress integration for CKAN
Python
13
star
61

sphinx-theme-okfn

Standard Open Knowledge Foundation sphinx theme resembling that on http://okfn.org/
CSS
12
star
62

iatitools

Tools with working with IATI data from http://iatiregistry.org/
Python
12
star
63

a

A is for assets. This repository holds OKI web assets, pushed using CI to the S3 bucket behind:
SCSS
11
star
64

ckanext-datahub

Plugin for datahub
CSS
11
star
65

webstore-client

Python client library for webstore
Python
10
star
66

opd-brand-manager

A web interface for managing a directory of brands for the Open Product Data working group.
Python
10
star
67

ckanext-example

CKAN Extension that demonstrates some common patterns for customising a CKAN instance.
Python
10
star
68

gutenizer

Get texts from Project Gutenberg, extract and format
Python
10
star
69

moinmoin2mediawiki

Convert moinmoin data to mediawiki
Perl
9
star
70

ckan-drupal

Everything to do with ckan drupal integration.
PHP
9
star
71

docker-fiware-ckan

Docker and Docker compose configuration for the FIWARE CKAN instance
Python
9
star
72

ckanext-pdeu

Custom CKAN Extension for PublicData.eu
Python
9
star
73

beagle

Watch web resources for changes and email assigned users when changes happen to sites they're assigned to watch.
Python
9
star
74

recline.backend.couchdb

CouchDB backend for Recline
JavaScript
9
star
75

opendatasites

Dataset of open data websites (portals and catalogs) from around the world based on http://datacatalogs.org/
8
star
76

ibp-explorer

[ARCHIVED] Data Explorer for the Open Budget Survey, built in collaboration with the International Budget Partnership.
JavaScript
8
star
77

opd-product-browser-ios

iOS browser client for the Open Product Data project
8
star
78

dataexplorer-2011

This repo is deprecated and has been replaced by http://github.com/okfn/recline. Pure JS app for viewing and visualizing data
JavaScript
8
star
79

crime

Experimental crime dashboards
JavaScript
8
star
80

ckanext-lacounts

CKAN extension for the LA Counts project
HTML
8
star
81

okfn.org

Issue tracker for http://okfn.org/ and other Open Knowledge Foundation websites
PHP
8
star
82

wordpress-theme

OKFN corporate wordpress theme
PHP
7
star
83

oki-py

This is an example Python repository implementing OKI coding standards.
Python
7
star
84

tellme

TellMe is a toolkit to create *user-facing reports* from things happening in code.
Python
7
star
85

shakespeare

Open Shakespeare platform. Repository for managing and code and service for http://openshakespeare.org/ and related websites.
Python
7
star
86

ckan-google-docs

Google docs app script.
JavaScript
7
star
87

network

Main repository for the Open Knowledge Network.
HTML
7
star
88

opendatacommons

Legacy Open Data Commons website. Moved to https://github.com/okfn/opendatacommons.org
CSS
7
star
89

ckanext-vegaview

VegaJS' view extension for CKAN
JavaScript
7
star
90

ckanext-rdf

[DEPRECATED] - Please use https://github.com/ckan/ckanext-dcat
6
star
91

recline.backend.solr

A simple javascript library that wraps the SOLR JSON API and is usable by Recline
JavaScript
6
star
92

elastic-proxy

elastic search on the web
Python
6
star
93

ckanext-inspire

Python
6
star
94

data.okfn.org-new

Simple data package based data portal (and original site for frictionless data effort)
HTML
6
star
95

datapackage_pipelines_od4tj

Open Data for Tax Justice scraping pipelines and processors
Python
6
star
96

ckanext-mx

Theme for datos.gob.mx
CSS
6
star
97

climate-request

A new project at Open Knowledge Foundation allowing users to request climate data.
6
star
98

cop21

Negotiating texts for COP21, the 21st Conference of Parties (COP21) to the UNFCCC in Paris December 2015.
HTML
6
star
99

githubActivity.js

A simple javascript widget to provide a nice HTML list Github activity in a set of repositories
CoffeeScript
6
star
100

vendorjs

This is a common repo for storing javascript (and some css) vendor libraries for use as a submodule across a variety of Open Knowledge Foundation (or other) projects.
JavaScript
5
star