Build a Library

12-15 minutes

What is my goal with Obsidian? ToDoList? Gelbooru? Node.js?

To create a library and link all of my data in a sensible, searchable way. I want to take a minute to write about this goal, so I don't lose focus on what the overall project is for.

Outline:

Each of these components will allow me centralize my data, and ease my thought process.

Component Purpose
Node.js Hub world, connecting all the other components, app launcher, web scraper tool. Possibly same as Booru.
TodoList.exe Projects, hierarch data, time tracking, XML
Saxon exe A command line XSLT transformer. Useful along side TodoList.
XML Notepad.exe A simple XML editor. Useful alongside TodoList.
Obsidian MarkDown, text notes, linking files, index cards
GelBooru Tagged image database, search, sorting art references
Everything.exe Comprehensive file search
Google Sheets I use this a LOT for its various spreadsheet data functions

Also worth Note:

There's a few other purposes that I haven't found softwares for yet, or simply use web apps that I find in a Google search. These are as follow:

CodePen.io - My Useful scripts

Details:

Node.js

My first goal is to build a simple web scraper, and combine a lot of my JS tools into one "app". This would be run on a Node.js server (localhost) and could be launched like an app, modify files, and create a sort of database.

In theory, I could do anything with Node.js.

I would like to extend its features to be integrated into my Obsidian vault, and automate certain features -- like generating *.md* or *.html files containing image galleries and meta-data. For example, this could be done with a simple pairing of files like follows:

A file named sample.png would have an associated sample.json file containing extra metadata about the file -- tags, post id, author, source, color palette used, etc. Then a simple image-loader.html page could just load the image and json file with some simple JS code.

Alternatively, I could do the same with <XML> data and apply a transform to create static HTML pages.

Ideally, I'd like a tool that could convert my data into a ton of different file formats!

See: Node-js-and-Obsidian-as-one-super-hub-interface
See: Recreate-a-Booru-in-Node-js

NOTE: Figure out how the Gallery plugin on Obsidian generates color palettes automatically. That's a really cool tool.

TodoList.exe

AbstractSpoon ToDoList

I use this for a lot of purposes. The primary benefit to this app is how tasks are logged automatically with creation date, time tracking, completion date, and tons of other useful data that would be cumbersome to handle manually.

Overall, its really great for managing projects, as well as time-tracking art and education related tasks.

It saves in an <XML> format, but I imagine that it shouldn't be hard to convert that into JSON so Node.js could interpret it easier.

Saxon.exe

Saxonica: Welcome

Saxon is a simple command line program that can take an *.xml document and an *.xsl file, and apply the XSLT stylesheet transformation., generating an *.html file. In other words, it allows quick visualization of <XML> data.

I use this primarily to turn my *.tdl TodoList files into simple static web pages. Mostly for use in publishing on NeoCities.org.

I could also use this in conjunction with Node.js to create some interesting pages.

XML Notepad.exe

XML Notepad - Microsoft.github.io
https://github.com/microsoft/XmlNotepad

Another <XML> tool that I use with TodoList. It lets me visualize XML files in a simple tree format, as well as apply XSLT transformations on individual files. In some cases, it might be quicker than Saxon for one-off files. Saxon would be better for bulk files, or repetitive XSLT tasks.

Also of note: I can use XML Notepad to add default XSLT files to *.tdl files, as well as add custom data. It's a bit quicker this way than using a text editor and having to sort through the <XML> manually.

Obsidian

Obsidian - MarkDown Notes

I use this mostly for simple MarkDown notes.. I'm still figuring out how exactly I want to use it. Project folders in Obsidian are called "
Vaults" and they contain simple text and image files, and a bit of information on Obsidian plugins, themes, and hotkeys used.

Ideally, I'd like to have a sort of "Master Vault" that contains ALL of my data in one huge library -- All my TDL/XML project files, all of my reference images, all of my art and code projects, etc.

Node.js and Obsidian, as one super-hub interface

And even more ideally, the whole Obsidian Vault would be searchable with a Node.js "hub server" -- basically an (offline) web-app "front end" that acts like a sort of directory to all my project files. From here I could:

All of this would be linked together with my Node.js hub app, but also under a huge Obsidian vault, so I could choose which ever interface I want to browse my data.

GelBooru

KeziahMoselle/gelbooru-client : A material client to explore Gelbooru.com
friendlyanon/GelbooruEnhancement : Image Viewer and Endless Scroll userscripts for Gelbooru and various other boorus

I'm not set on a specific Booru software yet, but GelBooru is often cited as being the easiest to setup. Gelbooru is both the name of a website and the name of the underlying software running similar clone sites.

"Boorus" are (in short) tag-based image boards. In other words, their intended purpose to create a large database of images, which can be tagged with all sorts of meta-data, and then efficiently find images with simple tag searches.

The name "Booru" is a transliteration -- a Japanese attempt to pronounce the English word "board" (as in "image board"). This word then got transliterated back into English as "Booru" and the name stuck. Most Boorus I've seen usually run on PHP through a server.

Boorus are usually used to create websites that let users upload and tag their own images, adding them to a huge central database -- but you could also run a Booru server offline (localhost) and use it for personal reasons.

Boorus are literally the best software for sorting and finding images in a large collection... but Boorus haven't really become mainstream mostly due to the negative association (they are heavily used in the porn and meme communities for sharing lewd art). Despite this, Boorus themselves are agnostic -- they're not intended for porn/memes specifically, and could be used for anything really.

You could even use it as a general-purpose "tagged file system" and basically use the images as "thumbnails" for any kind of arbitrary meta-data. For example, you could create a Booru that simply stores information on all of the software you use. You could then upload logos of the software you use, and tag them appropriately. Such as:

NOTE: The below data would actually be in a SQL database format. Text here is in simple plain-text key/value format for simplicity.

- Everything: #file #file-system #search #windows
- VS Code: #code #programming #text-editor #windows #portable
- Ableton: #audio #daw #music #windows #mac
- Audacity: #audio #music #windows #mac #linux 
- Blender: #3d #video #animation #art #windows #mac #linux
- Aseprite: #2d #animation #pixelart #art #windows #mac #linux

Then when you search any of those tags, it bring up a list of only other software that have those tags. The associated image file works as a great shorthand thumbnail.

Recreate a Booru in Node.js

It may be possible to recreate this kind of functionality with a Node.js server. And as a bonus, that would actually be much easier to maintain than PHP. It could also have the added benefit of keeping your data in readable text formats, instead of obtuse .db database files that need very specific software to read and interact with.

In the meantime, I'm gonna try to find a Booru that works for me. Slowly, I will expand the functionality of my Node.js hub app.

Everything.exe

Download "Everything" - voidtools

"Everything" is a lightning-fast file system search program for Windows. It's much faster than Windows built-in search (both in searching and indexing), and the results are not obfuscated by Windows "suggestions".

Overall, this is a super useful application.

Integration with Node.js hub app

I'd like to be able to integrate Everything into my Node.js hub app. Basically have a command that would launch Everything and limit it's search to only sub-directories of the "Master Vault". That way I'd have options on how I'd like to search my system: Use Everything's file search, or my a Booru tag search, or my own custom Node.js search.

Having options is always great.

Google Sheets

I don't like that Google Sheets spreadsheet files only exist on Google's cloud storage servers... I would much prefer to "own my own data". But on the other hand, the functionality of Google Sheets is just so much more advanced and useful than other spreadsheet software.

OpenOffice & LibreOffice

I like OpenOffice and LibreOffice but they are severely lacking a lot of quality of life features that Google Sheets just provides out of the box. On top of that, I've found both OpenOffice and LibreOffice to be quite buggy (prone to random crashes, odd coloring behavior, ugly UI, etc).

On the plus side, the *.ods open-source spreadsheet file format is great.

Microsoft Excel

I haven't tried Microsoft Excel in a long time. It may be up to par with Google Sheets in functionality. But I think it only works with paid subscription these days. I don't know if there is a free version.

Alternatives:

I don't know what other alternatives exist. These are the main spreadsheet softwares.

Currently, I can export spreadsheets from Google Sheets into the free *.ods format, which is nice. But I lose some of Google Sheets' unique functionality in the process. Also, the process for exporting Sheets is very cumbersome, and not very automatic. I don't know if there is any easy way to automate the process.

Closing Statements

It's also worthwhile to list some other useful software that will aid me in my project here.

Software Description
Image Glass A superior image viewer for Windows 10

This Document is a Work In Progress.