After my great aunt died, I inherited hundreds of letters, diaries and reports from my great grandparents and would like to evaluate them.

To do this, I am looking for a (open source) program that will allow me to store people, places or events and then combine them later. This will create a coherent picture of my family history.

I am aware that all of this can be done in a relational database, but I don't want to reinvent the wheel if not necessary.

Any suggestions?

  • 1
    Hello, not sure what you mean by "can be done in a relational database". Anyways, are you looking for everything including OCR or just processing some already converted text?
    – Destroy666
    Commented Jun 7 at 0:35
  • I never thought about processing the documents itself, the most parts are handwritten in old style like "Sütterlin" or "Kurrent". I just thought about manually adding the Info's e.g. Person x met person y at date at place z. So later you filter for places, see a hierarchical list of persons. Or filter for a person and see a timeline where he/she was.
    – pappou
    Commented Jun 7 at 5:13
  • This sounds like a job some genealogy software can accomplish (saving documents and evidences and relating them to people or events. Otherwise TiddlyWiki as a generic database could easily establish this without much grunt work Commented Jun 7 at 22:53

2 Answers 2


You are over engineering this. Use a simple Excel spreadsheet or Google spreadsheet.

I've experience in recreating family trees and in the span of a lifetime you might eventually end up with 20, maximum 50 names.

Rally? Do you need an RDBMS for that?

If you want to go pro you can use dedicated softwares there are many but I mean... when you have >500 years of data.


If you want to overengineer this (perhaps it's part of the fun), you could look into a graph database such as Neo4j.
In a graph database you define all the different people, locations, properties, etc., and then add relations of various types between these "nodes".

To take an example from the Neo4j manual, you could indicate that aunt Marie wrote uncle Ali with the following syntax:

CREATE (marie:Person {name: 'Marie Johnson'})-[:SENT {from: 'Paris'}]->(some_letter:Letter {title: 'Had a great holiday', year: 1928 })<-[:RECEIVED]-(ali:Person {name: 'Ali Burdaman'})

You could then use various graph visualization tools, e.g. yworks Neo4j explorer to run queries and visualize the results.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.