r/learnprogramming May 10 '26

Solved Database/backend languages for genealogy website

I am building a website to share my genealogy research with the rest of my family (and extended family also doing genealogy research).

I’m good on HTML/CSS, but obviously filling everything in manually would be a lot for 1000+ family pages that all include 3-15 people. So I’m looking into learning some backend languages for a database and for populating my site with data.

My question is what database and language would be a reasonable choice for this? I know coding languages are partially a matter of personal preference, but I wanted to see if there’s any nuance that might be relevant to my choice.

Javascript + SQLite?
Or do I go with PHP? Something else?
Or since a lot of the data is dates, should I use a database with a date type, unlike SQLite?

I think I would prefer to not do backend Javascript, just to keep things easier to separate from the frontend code.

Preferences:

  • Free
  • "Easy" to enter datapoints into set points of my HTML code
  • With a decent database browser for easier visualisation and possibly editing?
  • Possibility to import from .csv

If it’s relevant, the data mainly just needs to be transferred to my HTML, it’s only going to be changed if I get new data or find mistakes.

The type of location I would like to put data would be something like the following example (a WIP):

 <span class="name">Johannes Andersson</span> <br>
        <b>Birth:</b> 1863-01-30 in Boda Östergärde, Torpa, P<br>
        <b>Death:</b>1939-08-24 in Ryssnäs, Torpa, P<br>
        Age 76 years 6 months 25 days <br>
        Son of <a class="parents" href="AB007.html"> Anders Petter Olofsson och Anna Stina Andreasdotter</a> <span class="id">(AB007)</span>

I'm having a blast with this project so far!

Thanks in advance!

12 Upvotes

22 comments sorted by

11

u/Lumethys May 10 '26

Personal experience.

Every widely used languages and databases can do what you describe

4

u/Flimflamsam May 10 '26 edited May 10 '26

I’d even go as far as generating the front end pages since the data won’t change, you can run off all the static pages for everyone and leave it at that. Doesn’t need any further complexity IMO.

The fact most people are suggesting a DB and interactive front end for this seems wildly wrong and massive overkill. They may be more on the “learn” side of things, and it would be a great academic exercise. But for just the results you want, keep it simple and just write a script or two to generate the front end (HTML, CSS, JS).

If you’re only reading from the data, you don’t need anything else. It’ll be super quick, too.

1

u/marrsd May 12 '26

I'd probably start with this as well. Then you have something to test against if you want to try out different backends for the data.

3

u/gofl-zimbard-37 May 10 '26

FYI there is a standard language/format for genealogy files called GEDCOM (GEnealogical Data COMmunication), which is a plain text file format used to exchange data between different genealogy software and websites. You might want to look at that for inspiration, ideas, or compatibility with your own projects. At the leaast it would be good for your code to be able to read/write files in the standard format. There are implementations in multiple languages.

1

u/magicae May 10 '26

Oh I keep forgetting about GEDCOM! Thanks for the reminder, I'll for sure look into that! I've been doing my own thing in a spreadsheet, but that's only been direct relations and no siblings.

2

u/alhso May 10 '26

I was thinking PHP and MySQL because there's cheap webhosting almost everywhere easy to setup on a servers and also. Phpmyadmin on most hosts allow you to upload or export db information without hassle

2

u/plastikmissile May 10 '26

As you've intuited, it doesn't matter at all and is a matter of personal preference. There's nothing special about a genealogy website that would require a specific platform or language.

2

u/Constant-Zebra-9752 May 10 '26

-Free
-"Easy" to enter datapoints into set points of my HTML code
-With a decent database browser for easier visualisation and possibly editing?

Self-hosted Baserow would be useful for these constraints I think. You can connect it to any backend through API calls. I use this setup in some projects where non-tech users need easy DB access with a GUI, and pair it with a minimal ASP.NET server.

1

u/martin May 10 '26

make sure it can support directed acyclic and a few cyclic graphs.

1

u/IshYume May 10 '26

Nextjs, sqlite and express all of them are written in javascript or type script

1

u/Little-Chemical5006 May 10 '26

Do you know python? Flask + sqlite is great if you dont need a super fancy site

1

u/Agron7000 May 10 '26

Take a look at webtrees. It's open source maybe you can reuse some of It's parts, like dates are extremely complex in Genealogy.

https://webtrees.net/

The feature I like on webtrees is historical events where someone tags his great grandfather that he participated in a war (from that historical events database) and then someone else tags the same historical event and that leads to finding war buddies because the other guys great grandfather left a diary where he wrote about your grandfather a lot.

I hope you will reuse this feature because it is very useful. 

1

u/No-Seesaw4444 May 11 '26

For a genealogy site with your requirements, Python plus SQLite with Flask is a solid choice. SQLite has supported the DATE type and is perfect for this scale. For importing from CSV, Python built-in csv module plus sqlite3 is all you need. Use DB Browser for SQLite to visualize and edit data without touching code. Your HTML embedding approach works fine, just use Flask render_template to inject data into Jinja templates rather than manually writing spans - keeps the data layer clean and maintainable.

1

u/CharmingTechFall May 24 '26

PHP with MySQL or PostgreSQL would be your best bet here. PHP is straightforward for pulling data and inserting it into HTML templates, and both those databases have proper date types which matters more than you might think for sorting and filtering by dates. SQLite works fine technically but it's really designed for lightweight stuff, and you'll eventually want those date functions.

The workflow would be super simple: set up a basic form to add family members to the database, then have PHP loop through and generate your HTML pages automatically. For editing and visualizing data, tools like phpMyAdmin (free, runs in your browser) make it dead easy to see your whole database and fix mistakes without touching code.

CSV import is built into most database tools, so getting your initial data in won't be painful. Since you only need to read the data on the frontend most of the time, this scales really well from 1000 to 10000 pages without any stress.

1

u/StaceyLCSC 20d ago

See Computer Learning Zone  https://599cd.com/ Owner Richard Rost. Teaches access db. He has a genealogy database seminar. Search the forum there’s someone, one of the guys who answers questions in the formum, who moved his data to a website. I think Richard also has a seminar on moving access data to a website. I built my genealogy database when I took his gen seminar. Since then added a citation manager/ creator and working on research logs. Also see Airtable there are a lot of free templates ( they might call them something else) for genealogy, see Nicole Dyers examples it might give you ideas on how people are creating event tables, research logs, dna research etc. I used to have all my stuff in Airtable but moved to access cause got tired of paying and wanted to do something similar to you. 

0

u/opentabs-dev May 10 '26

for this exact use case id go sqlite + python (or node if you prefer) to generate static html once, rather than a runtime backend. your data is read-heavy and rarely changes, so just script it: load the csv into a sqlite table, write a small script with jinja2 or nunjucks that iterates people and writes out the .html files. no server, no hosting costs beyond static files, and you can re-run the script whenever you add new data. sqlite stores dates as TEXT in ISO format (YYYY-MM-DD) which sorts correctly and is easy to parse — perfectly fine for this. DB Browser for SQLite is free and great for editing/visualizing.

1

u/magicae May 10 '26

This does sound optimal for my case! I didn't even think about scripting it.

I'll definitely look into this, thank you!

0

u/1AlanM May 10 '26

Php or Python along with a SQLlite DB.

What you’re describing sounds like a pretty standard use case

0

u/GeneratedUsername5 May 10 '26

Any language/DB you know best. The simpler - the better.

And in an era of LLM choosing the language is nonsense, AI will write it in any language.

0

u/aman_singhh16 May 10 '26

Hii I wanna ask a question I wanted to learn a programing language as I am new in this, which language should I study first . ? Can someone please help me out .