HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
sdegutis
immaculatalibrary.com
TypeScript2023–2024
sdegutis / immaculatalibrary.com

immaculatalibrary.com

Discover this repository through its Hacker News conversations.

3Distinct people
8Mentions
0Explicit recommenders
0GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month8 dated mentions

Observed mentions: 2023-10-10 15:57:57 UTC to 2024-08-17 16:28:38 UTC.

01232023-10-01 00:00:00 UTC to 2023-11-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 commentsOct 20232023-11-01 00:00:00 UTC to 2023-12-01 00:00:00 UTC (exclusive): 3 mentions; 2 submissions, 1 comments2023-12-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2024-02-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-02-01 00:00:00 UTC to 2024-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-01 00:00:00 UTC to 2024-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsMar 20242024-04-01 00:00:00 UTC to 2024-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-05-01 00:00:00 UTC to 2024-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-06-01 00:00:00 UTC to 2024-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-07-01 00:00:00 UTC to 2024-08-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-08-01 00:00:00 UTC to 2024-09-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsAug 2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Oct 20232023-10-01 00:00:00 UTC2023-11-01 00:00:00 UTC312
Nov 20232023-11-01 00:00:00 UTC2023-12-01 00:00:00 UTC321
Dec 20232023-12-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
Jan 20242024-01-01 00:00:00 UTC2024-02-01 00:00:00 UTC000
Feb 20242024-02-01 00:00:00 UTC2024-03-01 00:00:00 UTC000
Mar 20242024-03-01 00:00:00 UTC2024-04-01 00:00:00 UTC000
Apr 20242024-04-01 00:00:00 UTC2024-05-01 00:00:00 UTC000
May 20242024-05-01 00:00:00 UTC2024-06-01 00:00:00 UTC000
Jun 20242024-06-01 00:00:00 UTC2024-07-01 00:00:00 UTC000
Jul 20242024-07-01 00:00:00 UTC2024-08-01 00:00:00 UTC000
Aug 20242024-08-01 00:00:00 UTC2024-09-01 00:00:00 UTC202

What Hacker News says

8 sources
My framework (imlib[1]) is actually more of a framework akin to Astro than what's showcased on vanillajsx.com, which itself is built with imlib. It just runs your code in a node.js process, and translates your JSX expressions into jsx() calls. On the node.js side[2], jsx() returns a string from its tag/attrs/children. On the browser side[3], jsx() returns DOM elements. Combined with a little bit of architecture, it becomes something extremely well suited to creating static sites. I guess SSG is an outdated term now, maybe it's a framework? Or a platform? In any case, it seems to do something similar to Astro, but in a significantly simpler way. The only "bundle" it needs in the browser is /@imlib/jsx-browser.js [4] which in itself is just jsx-dom.ts (its impl is overridable by the "framework" user). And on the node.js side, it's implement
Read the rest
ed as a very small "vm" of sorts [5]. I'm not against Astro, I just get all the same benefit people here are saying Astro has, but with orders of magnitude more simplicity imo. I've used imlib to make a relatively large website [6], in fact imlib was developed as this website and extracted from it over the past year. I have absolutely no difficulty breaking down my site into various reusable and encapsulated JSX components, both on the ssg-side and the browser-side. Development time is lightning fast. IDE support is essentially automatic. The site loads instantaneously in the static parts, and as quickly as reasonable in the dynamic parts. [1] https://github.com/sdegutis/imlib [2] https://github.com/sdegutis/imlib/blob/main/src/jsx-strings.... [3] https://github.com/sdegutis/imlib/blob/main/src/jsx-dom.ts [4] https://vanillajsx.com/@imlib/jsx-browser.js [5] https://github.com/sdegutis/imlib/blob/main/src/runtime.ts [6] https://github.com/sdegutis/immaculatalibrary.com
In VanillaJSX.com
sbjs·Nov 8, 2023Submission

Show HN: A new way to create universal/ssr TypeScript apps with JSX

Hi everyone. This is a project I've been evolving slowly for almost 4 years now. I'm finally happy with the technical solutions. It hasn't been extracted into a lib yet bc there was no demand for it. There's no readme because it's been changing so drastically, so here's a few notable points: 1. The core is a node app under src/ that's 290 lines of typescript, which uses chokidar for hot-reloading, loads files under site/ to build, compiles tsx to js via sucrase, loads it via vm.compileFunction, and has a custom module system that only reloads the bare minimal needed 2. All JSX on the ssg side compiles to a string, and all JSX in the browser compiles directly to html/svg elements or document fragments, allowing you to set properties like onclick directly in the jsx. See src/file.ts and the two site/core/jsx*.ts files it references 3. My si
Read the rest
te/ has 1300+ markdown files (36k lines), 75 ts/tsx files (2.7k loc), and code changes within it take anywhere from 5ms to reload for .html.tsx files, to ~950ms for files that have to reload everything, e.g. model files or site-wide components, etc. 4. I've been experimenting with react-like DOM manipulation in components, the biggest example is in site/searchlist.tsx which is used on the Books and Book Snippets page of the website, as well as each individual book page that has snippets. So far it just builds up components and then toggles attributes on them in reaction to state changes. I've yet to need to solve the pattern of dynamically adding/removing things cleanly.
1 points · Open discussion
It's a false dichotomy to dislike OOP or prefer it. It's like saying I prefer hammers over screwdrivers. Just learn how the tools you have should be used and use them well. The only app I'm currently maintaining and proud of[1] makes tons of use of "traditional" OOP. It uses lambdas and FP when necessary. I think it makes absolutely no use of JavaScript's dynamic features. I'm fairly sure this code would port easily to ObjC. After 15-20 years, you just get bored of doing things in novel or "pure" ways, and do the bare minimum needed to get the job done that's in front of you. [1] https://github.com/sdegutis/immaculatalibrary.com
In Apple's use of Swift and SwiftUI in iOS 17
Overall I'm not super happy with web components to solve the issues of reusability, conciseness, and self-containment. The most direct problem is styling issues. Cross-component CSS in either direction has some serious limitations. I've written a little bit about it[1] in my blog but the short version is that there are some things that simply become absolutely impossible when using web components. My main other gripe with them is the need for a build phase. The nature of WC almost begs for them to eventually become zero-build-time, but right now this just isn't practical. It requires too much boilerplate in every .html file (utf8 is broken on my site), the syntax isn't natively there even with tagged template literals, and there's no concept of data-list-fetching or data-based file generation. There's a branch on my personal website[2] wh
Read the rest
ere I tried to start using web components, and it was so problematic that I long abandoned it. Overall, I abandoned web components entirely in favor of making my own customized JSX-based SSG from scratch[3] which solves the same problems Lit, Next.js, et al. are intended to solve, but in a completely different way: using components for convenience, conciseness, and reusability, but only at the build-phase time. So far it's a well kept secret, which is probably good since it's been evolving so quickly that I wouldn't have been happy with any iteration being widely adopted so far. (Though I think this morning I finished off most of what I was unhappy with.) [1]: https://sdegutis.github.io/articles/2023-08-07-modern-90s-we... [2]: https://github.com/sdegutis/immaculatalibrary.com/tree/reset... [3]: https://github.com/sdegutis/immaculatalibrary.com
In Lit 3.0

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.