Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

277 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GeoChronicle

This is a system for easily using a phone or computer to upload a geolocated photo to create a spatial and temporal database. The database can then be viewed on a map.

The general purpose is to create a journalistic record that allows study or open source intelligence (OSINT).

Purpose

GeoChronicle is a map in both space ("Geo-") and time ("Chronicle".) Our goal is to make an easy-to-use smart-phone enabled website that allows a user to document photos and events in their environment which will be permanently stored and sharable to others.

This project was born out of the Russia-Ukraine project as a way to document war crimes and atrocities. It has never been used for that purpose yet. We are a small, volunteer open-source team. We intend to make it work for safer applications, like tagging invasive species or trash that needs to be picked up, without losing sight of our ultimate goal of making a safer journalistic tool.

Eventually, we want the system to be something that could be securely used without risk to the user. That is, a user should be able to take a photo of missile strike which will be documented permanently for journalists and prosecutors, without exposing themselves to harm if their phone is captured by a violent enemy.

Basic Idea

The goal of this project is to allow a group of people, perhaps in an emegency situation, to geotag locations to be on a map. Like all Public Invention projects, it is free-libre open source.

Imagine using your phone to place a red tag on a flooded area, or where a person needs help, and green tag on a road which is passable.

More generally, the ability to quickly upload a photo and have it reliably placed in time and space with the "EXIF" data typically embedded by modern phones will allow a GUI that is a valuable journalastic record of an event.

In particular, this response was made in response to the invasion of the Ukraine by Russia and the potential need for making a journalistic record of that event.

We recently found Eyewitness to Atrocities, a similar project, which is not open-source.

Current Features

As of August 3rd, 2026, the project allows you to upload multiple photos and automatically extracts geolocation and time information to place markers on a map. A color scale is used to represent time over the range of all photos uploaded. Clicking on a marker brings up a photo. The image below was made by walking near Barton Springs in Austin and using an iPhone to take 16 pictures.

Screen Shot 2022-03-10 at 2 49 43 PM

As of right now, the persistence of photos in in the local file system, but the metadata is in firebase. One of our volunteers is currently attempting to store the images in firebase.

We recently found Eyewitness to Atrocities and we're thinking what to do about it. Rob has emailed them asking if we can give them a helping hand.

Security Features

Although not our focus at present, we eventually want to make a system that can be used to document crimes. This may require the expertise of security and cryptography experts. Our idea is that if an image is uploaded, we will securely record an indelible timestamp and cryptographic hash of the photo, proving that the photo existed before that date. The photo can then be removed from the user's phone, mitigating personal risk to them.

We believe there are interesting cryptographic issues raised by this. However, fundamentally, more documentation makes it harder to hide crimes. If you are a security expert, we welcome your advise or volunteer effort on this project.

New Ideas Based on the March 19th Mini-con

On March 18th, 2022, Public Invention held a Mini-Con attended by a number of advisors:

  1. Christina Cole
  2. Prof. Michelle Mellenthin
  3. Prof. Warren MacEvoy
  4. Harry Pierson
  5. Adam Riggs
  6. Patrick Coyle
  7. Darcy Goff
  8. Edwin Chiu

A conversation led by Harry Pierson and Prof. MacEvoy led to the following ideas.

I'm now going to change the way this works. I'm creating a new set of abstract data types: Event EventStore

These will be represented as JSON, and stored as plane JavaScript objects in Node.js and the browser. By using local browser storage, it might even be possible to create a serverless implementation.

An EventStore consists of:

  1. a name,
  2. a url context guidance field, and
  3. a collection Events and EventStores.

An Event constists of:

  1. a URL (which may be relative to a context),
  2. An upload time
  3. An uploader identification record
  4. A content hash
  5. An overall event hash.

I am not a crypto expert, but the idea is that the overal event hash gives cryptographic proof of the uploader and the upload time and the content hash. When presented with content, one should be able to say definitively that that content was uploaded at a certain time.

This is valuable because in the case of an alledged event, such as a war crime, you want to know that content was uploaded soon after the alledged event. This does not in itself mean that the content is authentic or even relevant. But if you a set of photos which are self-corroborating uploaded soon after an event, it is strong evidence that they are authentic.

The idea is that an EventStore then becuase a transportable evidentiary object of value when combined with the content. However, the content, which may be large and expensive, is separate from the EventStore and can be reunited at a later time.

In particular, an EventStore with thousands of photos can be kept within browser local storage of 5MB. So for example, a reporter could collect a 100 geotagged photos with a smartphone, upload these photos, and export an EventStore. If the EventStore were then mailed along with the photos to a third party, even if that transmission occured days or weeks later, it would be proof positive that the photos were authentically taken at that time.

A complementary function is that an EventStore can be imported and then a pointer to content provided, and then this code can provide a data anaylsis tool. That tool can explicitly check that the content matches the content hash; that is, that upload time is authentic.

If the uploader identification record contains a cryptographically strong digital signature, it is proof of the identity of the uploader. (Note: This signature might have to sign a hash of the content.)

The net effect of all of this is to create a new level of ease for creating a trustworthy and easy-to-understand record of content. If that content contians geolocation and temporal data, then it may be strong evidence of an actual event located in space and time, such a as a war crime.

Other Features Needed

  1. The ability to enter brief descriptions
  2. The ability to tag entries
  3. We may need to make an app for a smartphone that can take a picture and send it directly to the database.
  4. We need a security model. Although the idea is to provide free and open software as well as functionality, we may need to implement some sort of anti-vandalism features. At a minimum, a user must be free to install a private secure instance.

Basic Technology

The web page use the geolocation feature now built in to most browsers and accessible via JavaScript.

It uses free and open map technology.

Usage

This was recently hosted at Heroku. It uses an express server. I am currently moving away from heroku for this app.

Like most node apps, you will want to run:

npm install

To pull in all needed libraries.

The fundamenal way to run it without using heroku and Procifle is to set certain environment variables that contain "secrets":

export apiKey= export authDomain= export databaseURL= export mapbox_accessToken= export messagingSenderId= export projectId= export storageBucket=

And then run the express server:

node server.js

The web application with then be running on port :3000.

Ancient History

Begun by Neil Martis and Rob Read. Improved by Diego Aspinwall. Written as a tutorial, then forked on Feb. 26th, 2022, the 3rd day of the invasion of Ukraine, by Robert L. Read.

About

Experimental photo journal presented as a map in space and time

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages