The TeaTime web application is completely decoupled from its databases and the files it fetches. The databases used in TeaTime are GitHub repositories tagged with the teatime-database topic, which are published on GitHub Pages. Each repository contains a config.json file that points to an SQLite database. Before a user performs a search in TeaTime, they choose which database to use and then TeaTime queries the SQLite database using sql.js-httpvfs. Each row in the SQLite database is an item in the library, and a file hash column is used for getting the item from IPFS.
Since the web application is a static site, and the databases are comprised of static files, both can be easily forked, replicated, and deployed. Frontend instances are GitHub repositories tagged with the teatime-instance topic. With the files being served off IPFS, this distributed architecture contributes to TeaTime's resilience.
The easiest way to create your own database is by forking the JSON-based database repository and adjusting the JSON files according to your needs. GitHub Actions will then generate an SQLite file and upload it to GitHub Pages.